CVE-2026-89559 (GCVE-0-2026-89559)

Vulnerability from cvelistv5 – Published: 2026-09-11 19:44 – Updated: 2026-10-19 08:48
VLAI
Title
libnvdimm/labels: Prevent integer overflow in __nd_label_validate()
Summary
In the Linux kernel, the following vulnerability has been resolved: libnvdimm/labels: Prevent integer overflow in __nd_label_validate() The on-media namespace index field nslot is a u32 read from the DIMM label storage area. __nd_label_validate() bounds it against the config area size, but sizeof_namespace_label() returns unsigned, so the product nslot * label_size is evaluated in 32-bit and wraps modulo 2^32 before the comparison. A crafted nslot passes the bound and is then used as the loop trip count in nd_label_data_init(), whose memset() walks off the end of the config_size buffer: an out-of-bounds write. The field is not trusted -- it comes from the medium, or from userspace via ND_CMD_SET_CONFIG_DATA. Evaluate the product in 64-bit so the bound check is exact; conforming labels are unaffected. The check was safe when introduced by commit 4a826c83db4e ("libnvdimm: namespace indices: read and validate"): it multiplied by sizeof(struct nd_namespace_label), a size_t, so on a 64-bit build the product did not wrap. Commit 564e871aa66f ("libnvdimm, label: add v1.2 nvdimm label definitions") narrowed it to 32 bits when the label size became a runtime value read via sizeof_namespace_label().
SSVC
Exploitation: none Automatable: no Technical Impact: total
CISA Coordinator · CISA-ADP (v2.0.3)
Decision recorded 2026-10-16 19:24 UTC
Assigner
Linux CNA under the mitre root
CNA scorecard D 53/100 over 7061 records in the last 180 days details
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 564e871aa66f548a947b23808d3140f326381f0c , < b4975f2ff6c82adc24ae547f029f82530ba43cfe (git)
Affected: 564e871aa66f548a947b23808d3140f326381f0c , < 6030597ec683d1e5b46445f888bb5c7776b5a0c4 (git)
Affected: 564e871aa66f548a947b23808d3140f326381f0c , < 1c391696d2791f82ae462e11da9a0d96f90b240c (git)
Affected: 564e871aa66f548a947b23808d3140f326381f0c , < 93967bfb17dab66642c57e609c99e1a91fe11278 (git)
Affected: 564e871aa66f548a947b23808d3140f326381f0c , < e057efcc9c71d90099d9ee00bed0748d0e9fd586 (git)
Affected: 564e871aa66f548a947b23808d3140f326381f0c , < 09e649117c54b7e1c004f22eaa19efbadd9ac856 (git)
Affected: 564e871aa66f548a947b23808d3140f326381f0c , < 69a734359639fca16a0dd73ab17a34943e76c68b (git)
Affected: 564e871aa66f548a947b23808d3140f326381f0c , < 037770686126155eafc44501312989e2837b9659 (git)
guessed Create a notification for this product.
Linux Linux Affected: 4.13
Unaffected: 0 , < 4.13 (semver)
Unaffected: 5.10.270 , ≤ 5.10.* (semver)
Unaffected: 5.15.221 , ≤ 5.15.* (semver)
Unaffected: 6.1.188 , ≤ 6.1.* (semver)
Unaffected: 6.6.157 , ≤ 6.6.* (semver)
Unaffected: 6.12.109 , ≤ 6.12.* (semver)
Unaffected: 6.18.50 , ≤ 6.18.* (semver)
Unaffected: 7.2.4 , ≤ 7.2.* (semver)
Unaffected: 7.3 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2026-89559",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "total"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-10-16T19:24:09.691777Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-10-16T19:26:44.071Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/nvdimm/label.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "b4975f2ff6c82adc24ae547f029f82530ba43cfe",
              "status": "affected",
              "version": "564e871aa66f548a947b23808d3140f326381f0c",
              "versionType": "git"
            },
            {
              "lessThan": "6030597ec683d1e5b46445f888bb5c7776b5a0c4",
              "status": "affected",
              "version": "564e871aa66f548a947b23808d3140f326381f0c",
              "versionType": "git"
            },
            {
              "lessThan": "1c391696d2791f82ae462e11da9a0d96f90b240c",
              "status": "affected",
              "version": "564e871aa66f548a947b23808d3140f326381f0c",
              "versionType": "git"
            },
            {
              "lessThan": "93967bfb17dab66642c57e609c99e1a91fe11278",
              "status": "affected",
              "version": "564e871aa66f548a947b23808d3140f326381f0c",
              "versionType": "git"
            },
            {
              "lessThan": "e057efcc9c71d90099d9ee00bed0748d0e9fd586",
              "status": "affected",
              "version": "564e871aa66f548a947b23808d3140f326381f0c",
              "versionType": "git"
            },
            {
              "lessThan": "09e649117c54b7e1c004f22eaa19efbadd9ac856",
              "status": "affected",
              "version": "564e871aa66f548a947b23808d3140f326381f0c",
              "versionType": "git"
            },
            {
              "lessThan": "69a734359639fca16a0dd73ab17a34943e76c68b",
              "status": "affected",
              "version": "564e871aa66f548a947b23808d3140f326381f0c",
              "versionType": "git"
            },
            {
              "lessThan": "037770686126155eafc44501312989e2837b9659",
              "status": "affected",
              "version": "564e871aa66f548a947b23808d3140f326381f0c",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/nvdimm/label.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "4.13"
            },
            {
              "lessThan": "4.13",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.270",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.221",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.188",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.157",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.109",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.50",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.4",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.270",
                  "versionStartIncluding": "4.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.221",
                  "versionStartIncluding": "4.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.188",
                  "versionStartIncluding": "4.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.157",
                  "versionStartIncluding": "4.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.109",
                  "versionStartIncluding": "4.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.50",
                  "versionStartIncluding": "4.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.4",
                  "versionStartIncluding": "4.13",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3",
                  "versionStartIncluding": "4.13",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nlibnvdimm/labels: Prevent integer overflow in __nd_label_validate()\n\nThe on-media namespace index field nslot is a u32 read from the DIMM\nlabel storage area.  __nd_label_validate() bounds it against the config\narea size, but sizeof_namespace_label() returns unsigned, so the product\nnslot * label_size is evaluated in 32-bit and wraps modulo 2^32 before\nthe comparison.  A crafted nslot passes the bound and is then used as the\nloop trip count in nd_label_data_init(), whose memset() walks off the end\nof the config_size buffer: an out-of-bounds write.\n\nThe field is not trusted -- it comes from the medium, or from userspace\nvia ND_CMD_SET_CONFIG_DATA.  Evaluate the product in 64-bit so the bound\ncheck is exact; conforming labels are unaffected.\n\nThe check was safe when introduced by commit 4a826c83db4e (\"libnvdimm:\nnamespace indices: read and validate\"): it multiplied by sizeof(struct\nnd_namespace_label), a size_t, so on a 64-bit build the product did not\nwrap.  Commit 564e871aa66f (\"libnvdimm, label: add v1.2 nvdimm label\ndefinitions\") narrowed it to 32 bits when the label size became a runtime\nvalue read via sizeof_namespace_label()."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The overflow is consumed in nvdimm_probe()-\u003end_label_data_init() from a namespace index a local process plants via ioctl(ND_CMD_SET_CONFIG_DATA) on /dev/nmem*, or that already resides in the DIMM label area. There is no network or adjacent-network path into this parser.\nAC:L - A crafted nslot (e.g. 2^25 with 128-byte labels) makes the 32-bit nslot*sizeof_namespace_label() product wrap so the bound check passes, and the attacker also controls the signature, checksum, and free bitmap, making the later memset() walk deterministic. No race or uninfluenceable layout is required.\nPR:L - nd_open(), __nd_ioctl(), and nd_cmd_clear_to_send() perform no capable() check; SET_CONFIG_DATA is gated only by O_RDWR on /dev/nmem* (typically 0660 disk via udev). Any local account, disk-group user, or container granted that node can plant the malicious index that probe later consumes.\nUI:N - The attacker plants the crafted index from their own process and the OOB write runs in nd_label_data_init() on the ordinary dimm probe/bind path they drive with ndctl write-labels/enable; no separate victim action such as mounting a filesystem is required.\nS:U - The kvzalloc out-of-bounds write corrupts kernel heap inside the same kernel security authority and does not cross a VM, IOMMU, or sandbox boundary.\nC:H - The memset() loop is an unbounded heap out-of-bounds write whose distance is set by the attacker-chosen nslot (128/256-byte stores marching far past the config buffer). Corruption of adjacent heap objects can be turned into an arbitrary-read primitive, not a leak bounded to a few bytes.\nI:H - Each free-slot iteration does memset(ndd-\u003edata+offset, 0, label_size) with offset advancing past config_size, which is a kernel heap out-of-bounds write that can corrupt adjacent objects and hijack control flow.\nA:H - The same walk writes tens of megabytes past the kvzalloc buffer and will oops or panic on unmapped pages or corrupted kernel state; any such kernel crash is High availability impact."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-10-19T08:48:52.683Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/b4975f2ff6c82adc24ae547f029f82530ba43cfe"
        },
        {
          "url": "https://git.kernel.org/stable/c/6030597ec683d1e5b46445f888bb5c7776b5a0c4"
        },
        {
          "url": "https://git.kernel.org/stable/c/1c391696d2791f82ae462e11da9a0d96f90b240c"
        },
        {
          "url": "https://git.kernel.org/stable/c/93967bfb17dab66642c57e609c99e1a91fe11278"
        },
        {
          "url": "https://git.kernel.org/stable/c/e057efcc9c71d90099d9ee00bed0748d0e9fd586"
        },
        {
          "url": "https://git.kernel.org/stable/c/09e649117c54b7e1c004f22eaa19efbadd9ac856"
        },
        {
          "url": "https://git.kernel.org/stable/c/69a734359639fca16a0dd73ab17a34943e76c68b"
        },
        {
          "url": "https://git.kernel.org/stable/c/037770686126155eafc44501312989e2837b9659"
        }
      ],
      "title": "libnvdimm/labels: Prevent integer overflow in __nd_label_validate()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-89559",
    "datePublished": "2026-09-11T19:44:31.337Z",
    "dateReserved": "2026-09-11T19:38:34.724Z",
    "dateUpdated": "2026-10-19T08:48:52.683Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-89559",
      "date": "2026-10-23",
      "epss": "0.00169",
      "percentile": "0.05908"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/nvdimm/label.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "b4975f2ff6c82adc24ae547f029f82530ba43cfe",
                    "status": "affected",
                    "version": "564e871aa66f548a947b23808d3140f326381f0c",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "6030597ec683d1e5b46445f888bb5c7776b5a0c4",
                    "status": "affected",
                    "version": "564e871aa66f548a947b23808d3140f326381f0c",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "1c391696d2791f82ae462e11da9a0d96f90b240c",
                    "status": "affected",
                    "version": "564e871aa66f548a947b23808d3140f326381f0c",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "93967bfb17dab66642c57e609c99e1a91fe11278",
                    "status": "affected",
                    "version": "564e871aa66f548a947b23808d3140f326381f0c",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "e057efcc9c71d90099d9ee00bed0748d0e9fd586",
                    "status": "affected",
                    "version": "564e871aa66f548a947b23808d3140f326381f0c",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "09e649117c54b7e1c004f22eaa19efbadd9ac856",
                    "status": "affected",
                    "version": "564e871aa66f548a947b23808d3140f326381f0c",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "69a734359639fca16a0dd73ab17a34943e76c68b",
                    "status": "affected",
                    "version": "564e871aa66f548a947b23808d3140f326381f0c",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "037770686126155eafc44501312989e2837b9659",
                    "status": "affected",
                    "version": "564e871aa66f548a947b23808d3140f326381f0c",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/nvdimm/label.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "4.13"
                  },
                  {
                    "lessThan": "4.13",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "5.10.*",
                    "status": "unaffected",
                    "version": "5.10.270",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "5.15.*",
                    "status": "unaffected",
                    "version": "5.15.221",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.1.*",
                    "status": "unaffected",
                    "version": "6.1.188",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.6.*",
                    "status": "unaffected",
                    "version": "6.6.157",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.12.*",
                    "status": "unaffected",
                    "version": "6.12.109",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.50",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.2.*",
                    "status": "unaffected",
                    "version": "7.2.4",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.3",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nlibnvdimm/labels: Prevent integer overflow in __nd_label_validate()\n\nThe on-media namespace index field nslot is a u32 read from the DIMM\nlabel storage area.  __nd_label_validate() bounds it against the config\narea size, but sizeof_namespace_label() returns unsigned, so the product\nnslot * label_size is evaluated in 32-bit and wraps modulo 2^32 before\nthe comparison.  A crafted nslot passes the bound and is then used as the\nloop trip count in nd_label_data_init(), whose memset() walks off the end\nof the config_size buffer: an out-of-bounds write.\n\nThe field is not trusted -- it comes from the medium, or from userspace\nvia ND_CMD_SET_CONFIG_DATA.  Evaluate the product in 64-bit so the bound\ncheck is exact; conforming labels are unaffected.\n\nThe check was safe when introduced by commit 4a826c83db4e (\"libnvdimm:\nnamespace indices: read and validate\"): it multiplied by sizeof(struct\nnd_namespace_label), a size_t, so on a 64-bit build the product did not\nwrap.  Commit 564e871aa66f (\"libnvdimm, label: add v1.2 nvdimm label\ndefinitions\") narrowed it to 32 bits when the label size became a runtime\nvalue read via sizeof_namespace_label()."
          }
        ],
        "id": "CVE-2026-89559",
        "lastModified": "2026-10-19T09:17:51.470",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "LOW",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 7.8,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.8,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ],
          "ssvcV203": [
            {
              "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "ssvcData": {
                "id": "CVE-2026-89559",
                "options": [
                  {
                    "exploitation": "none"
                  },
                  {
                    "automatable": "no"
                  },
                  {
                    "technicalImpact": "total"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-10-16T19:24:09.691777Z",
                "version": "2.0.3"
              }
            }
          ]
        },
        "published": "2026-09-11T20:19:39.673",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/037770686126155eafc44501312989e2837b9659"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/09e649117c54b7e1c004f22eaa19efbadd9ac856"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/1c391696d2791f82ae462e11da9a0d96f90b240c"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/6030597ec683d1e5b46445f888bb5c7776b5a0c4"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/69a734359639fca16a0dd73ab17a34943e76c68b"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/93967bfb17dab66642c57e609c99e1a91fe11278"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/b4975f2ff6c82adc24ae547f029f82530ba43cfe"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/e057efcc9c71d90099d9ee00bed0748d0e9fd586"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-09-29T14:35:25+00:00",
      "cve": "CVE-2026-89559",
      "id": "CVE-2026-89559",
      "initial_release_date": "2026-09-11T00:00:00+00:00",
      "product_status:known_affected": "262",
      "product_status:known_not_affected": "14",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: libnvdimm/labels: Prevent integer overflow in __nd_label_validate()",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-89559.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-10-17T16:25:15Z",
      "cve": "CVE-2026-89559",
      "id": "CVE-2026-89559",
      "initial_release_date": "2026-09-16T00:02:02Z",
      "product_status:known_affected": "348",
      "product_status:known_not_affected": "6",
      "product_status:recommended": "4",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-89559",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/2026/cve-2026-89559.json",
      "version": "4"
    },
    "vulnrichment": {
      "containers": {
        "adp": [
          {
            "metrics": [
              {
                "other": {
                  "content": {
                    "id": "CVE-2026-89559",
                    "options": [
                      {
                        "Exploitation": "none"
                      },
                      {
                        "Automatable": "no"
                      },
                      {
                        "Technical Impact": "total"
                      }
                    ],
                    "role": "CISA Coordinator",
                    "timestamp": "2026-10-16T19:24:09.691777Z",
                    "version": "2.0.3"
                  },
                  "type": "ssvc"
                }
              }
            ],
            "providerMetadata": {
              "dateUpdated": "2026-10-16T19:24:10.339Z",
              "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "shortName": "CISA-ADP"
            },
            "title": "CISA ADP Vulnrichment"
          }
        ],
        "cna": {
          "affected": [
            {
              "defaultStatus": "unaffected",
              "product": "Linux",
              "programFiles": [
                "drivers/nvdimm/label.c"
              ],
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "vendor": "Linux",
              "versions": [
                {
                  "lessThan": "b4975f2ff6c82adc24ae547f029f82530ba43cfe",
                  "status": "affected",
                  "version": "564e871aa66f548a947b23808d3140f326381f0c",
                  "versionType": "git"
                },
                {
                  "lessThan": "6030597ec683d1e5b46445f888bb5c7776b5a0c4",
                  "status": "affected",
                  "version": "564e871aa66f548a947b23808d3140f326381f0c",
                  "versionType": "git"
                },
                {
                  "lessThan": "1c391696d2791f82ae462e11da9a0d96f90b240c",
                  "status": "affected",
                  "version": "564e871aa66f548a947b23808d3140f326381f0c",
                  "versionType": "git"
                },
                {
                  "lessThan": "93967bfb17dab66642c57e609c99e1a91fe11278",
                  "status": "affected",
                  "version": "564e871aa66f548a947b23808d3140f326381f0c",
                  "versionType": "git"
                },
                {
                  "lessThan": "e057efcc9c71d90099d9ee00bed0748d0e9fd586",
                  "status": "affected",
                  "version": "564e871aa66f548a947b23808d3140f326381f0c",
                  "versionType": "git"
                },
                {
                  "lessThan": "09e649117c54b7e1c004f22eaa19efbadd9ac856",
                  "status": "affected",
                  "version": "564e871aa66f548a947b23808d3140f326381f0c",
                  "versionType": "git"
                },
                {
                  "lessThan": "69a734359639fca16a0dd73ab17a34943e76c68b",
                  "status": "affected",
                  "version": "564e871aa66f548a947b23808d3140f326381f0c",
                  "versionType": "git"
                },
                {
                  "lessThan": "037770686126155eafc44501312989e2837b9659",
                  "status": "affected",
                  "version": "564e871aa66f548a947b23808d3140f326381f0c",
                  "versionType": "git"
                }
              ]
            },
            {
              "defaultStatus": "affected",
              "product": "Linux",
              "programFiles": [
                "drivers/nvdimm/label.c"
              ],
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "vendor": "Linux",
              "versions": [
                {
                  "status": "affected",
                  "version": "4.13"
                },
                {
                  "lessThan": "4.13",
                  "status": "unaffected",
                  "version": "0",
                  "versionType": "semver"
                },
                {
                  "lessThanOrEqual": "5.10.*",
                  "status": "unaffected",
                  "version": "5.10.270",
                  "versionType": "semver"
                },
                {
                  "lessThanOrEqual": "5.15.*",
                  "status": "unaffected",
                  "version": "5.15.221",
                  "versionType": "semver"
                },
                {
                  "lessThanOrEqual": "6.1.*",
                  "status": "unaffected",
                  "version": "6.1.188",
                  "versionType": "semver"
                },
                {
                  "lessThanOrEqual": "6.6.*",
                  "status": "unaffected",
                  "version": "6.6.157",
                  "versionType": "semver"
                },
                {
                  "lessThanOrEqual": "6.12.*",
                  "status": "unaffected",
                  "version": "6.12.109",
                  "versionType": "semver"
                },
                {
                  "lessThanOrEqual": "6.18.*",
                  "status": "unaffected",
                  "version": "6.18.50",
                  "versionType": "semver"
                },
                {
                  "lessThanOrEqual": "7.2.*",
                  "status": "unaffected",
                  "version": "7.2.4",
                  "versionType": "semver"
                },
                {
                  "lessThanOrEqual": "*",
                  "status": "unaffected",
                  "version": "7.3",
                  "versionType": "original_commit_for_fix"
                }
              ]
            }
          ],
          "cpeApplicability": [
            {
              "nodes": [
                {
                  "cpeMatch": [
                    {
                      "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "5.10.270",
                      "versionStartIncluding": "4.13",
                      "vulnerable": true
                    },
                    {
                      "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "5.15.221",
                      "versionStartIncluding": "4.13",
                      "vulnerable": true
                    },
                    {
                      "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "6.1.188",
                      "versionStartIncluding": "4.13",
                      "vulnerable": true
                    },
                    {
                      "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "6.6.157",
                      "versionStartIncluding": "4.13",
                      "vulnerable": true
                    },
                    {
                      "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "6.12.109",
                      "versionStartIncluding": "4.13",
                      "vulnerable": true
                    },
                    {
                      "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "6.18.50",
                      "versionStartIncluding": "4.13",
                      "vulnerable": true
                    },
                    {
                      "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "7.2.4",
                      "versionStartIncluding": "4.13",
                      "vulnerable": true
                    },
                    {
                      "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "7.3",
                      "versionStartIncluding": "4.13",
                      "vulnerable": true
                    }
                  ],
                  "negate": false,
                  "operator": "OR"
                }
              ]
            }
          ],
          "descriptions": [
            {
              "lang": "en",
              "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nlibnvdimm/labels: Prevent integer overflow in __nd_label_validate()\n\nThe on-media namespace index field nslot is a u32 read from the DIMM\nlabel storage area.  __nd_label_validate() bounds it against the config\narea size, but sizeof_namespace_label() returns unsigned, so the product\nnslot * label_size is evaluated in 32-bit and wraps modulo 2^32 before\nthe comparison.  A crafted nslot passes the bound and is then used as the\nloop trip count in nd_label_data_init(), whose memset() walks off the end\nof the config_size buffer: an out-of-bounds write.\n\nThe field is not trusted -- it comes from the medium, or from userspace\nvia ND_CMD_SET_CONFIG_DATA.  Evaluate the product in 64-bit so the bound\ncheck is exact; conforming labels are unaffected.\n\nThe check was safe when introduced by commit 4a826c83db4e (\"libnvdimm:\nnamespace indices: read and validate\"): it multiplied by sizeof(struct\nnd_namespace_label), a size_t, so on a 64-bit build the product did not\nwrap.  Commit 564e871aa66f (\"libnvdimm, label: add v1.2 nvdimm label\ndefinitions\") narrowed it to 32 bits when the label size became a runtime\nvalue read via sizeof_namespace_label()."
            }
          ],
          "metrics": [
            {
              "cvssV3_1": {
                "baseScore": 7.8,
                "baseSeverity": "HIGH",
                "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "scenarios": [
                {
                  "lang": "en",
                  "value": "AV:L - The overflow is consumed in nvdimm_probe()-\u003end_label_data_init() from a namespace index a local process plants via ioctl(ND_CMD_SET_CONFIG_DATA) on /dev/nmem*, or that already resides in the DIMM label area. There is no network or adjacent-network path into this parser.\nAC:L - A crafted nslot (e.g. 2^25 with 128-byte labels) makes the 32-bit nslot*sizeof_namespace_label() product wrap so the bound check passes, and the attacker also controls the signature, checksum, and free bitmap, making the later memset() walk deterministic. No race or uninfluenceable layout is required.\nPR:L - nd_open(), __nd_ioctl(), and nd_cmd_clear_to_send() perform no capable() check; SET_CONFIG_DATA is gated only by O_RDWR on /dev/nmem* (typically 0660 disk via udev). Any local account, disk-group user, or container granted that node can plant the malicious index that probe later consumes.\nUI:N - The attacker plants the crafted index from their own process and the OOB write runs in nd_label_data_init() on the ordinary dimm probe/bind path they drive with ndctl write-labels/enable; no separate victim action such as mounting a filesystem is required.\nS:U - The kvzalloc out-of-bounds write corrupts kernel heap inside the same kernel security authority and does not cross a VM, IOMMU, or sandbox boundary.\nC:H - The memset() loop is an unbounded heap out-of-bounds write whose distance is set by the attacker-chosen nslot (128/256-byte stores marching far past the config buffer). Corruption of adjacent heap objects can be turned into an arbitrary-read primitive, not a leak bounded to a few bytes.\nI:H - Each free-slot iteration does memset(ndd-\u003edata+offset, 0, label_size) with offset advancing past config_size, which is a kernel heap out-of-bounds write that can corrupt adjacent objects and hijack control flow.\nA:H - The same walk writes tens of megabytes past the kvzalloc buffer and will oops or panic on unmapped pages or corrupted kernel state; any such kernel crash is High availability impact."
                }
              ]
            }
          ],
          "providerMetadata": {
            "dateUpdated": "2026-10-19T08:48:52.683Z",
            "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "shortName": "Linux"
          },
          "references": [
            {
              "url": "https://git.kernel.org/stable/c/b4975f2ff6c82adc24ae547f029f82530ba43cfe"
            },
            {
              "url": "https://git.kernel.org/stable/c/6030597ec683d1e5b46445f888bb5c7776b5a0c4"
            },
            {
              "url": "https://git.kernel.org/stable/c/1c391696d2791f82ae462e11da9a0d96f90b240c"
            },
            {
              "url": "https://git.kernel.org/stable/c/93967bfb17dab66642c57e609c99e1a91fe11278"
            },
            {
              "url": "https://git.kernel.org/stable/c/e057efcc9c71d90099d9ee00bed0748d0e9fd586"
            },
            {
              "url": "https://git.kernel.org/stable/c/09e649117c54b7e1c004f22eaa19efbadd9ac856"
            },
            {
              "url": "https://git.kernel.org/stable/c/69a734359639fca16a0dd73ab17a34943e76c68b"
            },
            {
              "url": "https://git.kernel.org/stable/c/037770686126155eafc44501312989e2837b9659"
            }
          ],
          "title": "libnvdimm/labels: Prevent integer overflow in __nd_label_validate()",
          "x_generator": {
            "engine": "bippy-1.2.0"
          }
        }
      },
      "cveMetadata": {
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "assignerShortName": "Linux",
        "cveId": "CVE-2026-89559",
        "datePublished": "2026-09-11T19:44:31.337Z",
        "dateReserved": "2026-09-11T19:38:34.724Z",
        "dateUpdated": "2026-10-19T08:48:52.683Z",
        "state": "PUBLISHED"
      },
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Vulnerability timeline

Sightings and recorded dates, grouped by day · UTC

JSON
Events included in the timeline

Loading timeline…


    Loading…

    Loading…

    Loading…

    Related by attack behaviour

    Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.