CVE-2026-72199 (GCVE-0-2026-72199)

Vulnerability from cvelistv5 – Published: 2026-08-15 05:53 – Updated: 2026-08-18 06:56
VLAI
Title
ntfs: validate resident index root values on lookup
Summary
In the Linux kernel, the following vulnerability has been resolved: ntfs: validate resident index root values on lookup Resident $INDEX_ROOT values carry index header fields that callers consume after lookup. Some callers already validate parts of the layout before walking entries, but those checks are scattered and do not cover all root header invariants, such as entries_offset alignment and lower bound, index_length, and allocated_size consistency. The resident root resize paths now keep these header fields consistent while the value size changes: ntfs_ir_truncate() lowers index.allocated_size before shrinking the resident value, and ntfs_ir_reparent() grows the resident value before publishing a larger root header. Lookup-time validation can therefore cover these invariants without tripping over the driver's own resize paths. Add $INDEX_ROOT to the minimum resident value size table and validate the resident index header fields before returning the attribute from lookup. Require 8-byte aligned index header fields, a sane entries_offset, an index_length within allocated_size, allocated_size within the resident value, and enough entry space for at least an index entry header. The shared validator already rejects non-resident records for resident-only attribute types, including $INDEX_ROOT.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 0a8ac0c1fa0b99a5b29002bc7f232ed7eafddef0 , < bfb01dd319b6b4c3e79756de7b75ccf0b9a0a247 (git)
Affected: 0a8ac0c1fa0b99a5b29002bc7f232ed7eafddef0 , < fcf5bf0e8570798970e3ae8c95d04765ba2c5b97 (git)
guessed Create a notification for this product.
Linux Linux Affected: 7.1
Unaffected: 0 , < 7.1 (semver)
Unaffected: 7.1.5 , ≤ 7.1.* (semver)
Unaffected: 7.2 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "fs/ntfs/attrib.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "bfb01dd319b6b4c3e79756de7b75ccf0b9a0a247",
              "status": "affected",
              "version": "0a8ac0c1fa0b99a5b29002bc7f232ed7eafddef0",
              "versionType": "git"
            },
            {
              "lessThan": "fcf5bf0e8570798970e3ae8c95d04765ba2c5b97",
              "status": "affected",
              "version": "0a8ac0c1fa0b99a5b29002bc7f232ed7eafddef0",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "fs/ntfs/attrib.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "7.1"
            },
            {
              "lessThan": "7.1",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.1.*",
              "status": "unaffected",
              "version": "7.1.5",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.2",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1.5",
                  "versionStartIncluding": "7.1",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2",
                  "versionStartIncluding": "7.1",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nntfs: validate resident index root values on lookup\n\nResident $INDEX_ROOT values carry index header fields that callers\nconsume after lookup. Some callers already validate parts of the layout\nbefore walking entries, but those checks are scattered and do not cover\nall root header invariants, such as entries_offset alignment and lower\nbound, index_length, and allocated_size consistency.\n\nThe resident root resize paths now keep these header fields consistent\nwhile the value size changes: ntfs_ir_truncate() lowers\nindex.allocated_size before shrinking the resident value, and\nntfs_ir_reparent() grows the resident value before publishing a larger\nroot header. Lookup-time validation can therefore cover these invariants\nwithout tripping over the driver\u0027s own resize paths.\n\nAdd $INDEX_ROOT to the minimum resident value size table and validate the\nresident index header fields before returning the attribute from lookup.\nRequire 8-byte aligned index header fields, a sane entries_offset, an\nindex_length within allocated_size, allocated_size within the resident\nvalue, and enough entry space for at least an index entry header.\n\nThe shared validator already rejects non-resident records for\nresident-only attribute types, including $INDEX_ROOT."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 9.8,
            "baseSeverity": "CRITICAL",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:N - Legacy NTFS registers ntfs_export_ops; remote NFS/ksmbd LOOKUP/READDIR on exported mounts and local VFS open/stat all reach ntfs_attr_lookup(AT_INDEX_ROOT) and index walks in dir.c/index.c that consume entries_offset/index_length without full header validation.\nAC:L - Attacker fully controls on-disk $INDEX_ROOT header fields in a crafted image or writable share; misaligned entries_offset or inconsistent index_length/allocated_size values reliably bypass scattered checks and reach out-of-bounds index walks without races.\nPR:N - No host privileges at trigger time: a malicious NTFS volume can be automounted from USB/removable media, or remote NFS/SMB clients can invoke directory lookup/readdir on an exported mount using only share/guest access.\nUI:N - Kiosks, desktops, automotive/embedded systems that automount NTFS media trigger index-root parsing on insertion; exported volumes need only normal remote directory access, not additional victim mount dialogs or cooperative actions beyond presenting the filesystem.\nS:U - Impact is kernel heap/MFT-record out-of-bounds access during NTFS index parsing in the host mount context, yielding privilege escalation rather than VM escape or cross-authority sandbox breakout.\nC:H - Unchecked index header fields let ntfs_ie_lookup, ntfs_lookup_inode_by_name, and ntfs_readdir index walks read past the resident $INDEX_ROOT value using attacker-controlled index_length/entries_offset, enabling out-of-bounds kernel memory disclosure.\nI:H - Attacker-controlled misaligned offsets and inflated index bounds steer pointer arithmetic and kmalloc/copy sizes in index entry processing, enabling heap metadata corruption and write primitives suitable for kernel code execution.\nA:H - Out-of-bounds index-root walks during lookup/readdir can fault on unmapped kernel memory and trigger oops/panic, denying availability even before successful exploitation."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-18T06:56:16.523Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/bfb01dd319b6b4c3e79756de7b75ccf0b9a0a247"
        },
        {
          "url": "https://git.kernel.org/stable/c/fcf5bf0e8570798970e3ae8c95d04765ba2c5b97"
        }
      ],
      "title": "ntfs: validate resident index root values on lookup",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-72199",
    "datePublished": "2026-08-15T05:53:57.414Z",
    "dateReserved": "2026-08-09T03:40:39.911Z",
    "dateUpdated": "2026-08-18T06:56:16.523Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-72199",
      "date": "2026-08-24",
      "epss": "0.00516",
      "percentile": "0.41585"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-72199\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-08-15T06:21:38.533\",\"lastModified\":\"2026-08-18T07:16:53.240\",\"vulnStatus\":\"Received\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nntfs: validate resident index root values on lookup\\n\\nResident $INDEX_ROOT values carry index header fields that callers\\nconsume after lookup. Some callers already validate parts of the layout\\nbefore walking entries, but those checks are scattered and do not cover\\nall root header invariants, such as entries_offset alignment and lower\\nbound, index_length, and allocated_size consistency.\\n\\nThe resident root resize paths now keep these header fields consistent\\nwhile the value size changes: ntfs_ir_truncate() lowers\\nindex.allocated_size before shrinking the resident value, and\\nntfs_ir_reparent() grows the resident value before publishing a larger\\nroot header. Lookup-time validation can therefore cover these invariants\\nwithout tripping over the driver\u0027s own resize paths.\\n\\nAdd $INDEX_ROOT to the minimum resident value size table and validate the\\nresident index header fields before returning the attribute from lookup.\\nRequire 8-byte aligned index header fields, a sane entries_offset, an\\nindex_length within allocated_size, allocated_size within the resident\\nvalue, and enough entry space for at least an index entry header.\\n\\nThe shared validator already rejects non-resident records for\\nresident-only attribute types, including $INDEX_ROOT.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"fs/ntfs/attrib.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"0a8ac0c1fa0b99a5b29002bc7f232ed7eafddef0\",\"lessThan\":\"bfb01dd319b6b4c3e79756de7b75ccf0b9a0a247\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"0a8ac0c1fa0b99a5b29002bc7f232ed7eafddef0\",\"lessThan\":\"fcf5bf0e8570798970e3ae8c95d04765ba2c5b97\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"fs/ntfs/attrib.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"7.1\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"7.1\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.1.5\",\"lessThanOrEqual\":\"7.1.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.2\",\"lessThanOrEqual\":\"*\",\"versionType\":\"original_commit_for_fix\",\"status\":\"unaffected\"}]}]}],\"metrics\":{\"cvssMetricV31\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":9.8,\"baseSeverity\":\"CRITICAL\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":3.9,\"impactScore\":5.9}]},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/bfb01dd319b6b4c3e79756de7b75ccf0b9a0a247\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/fcf5bf0e8570798970e3ae8c95d04765ba2c5b97\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-08-18T07:20:52+00:00",
      "cve": "CVE-2026-72199",
      "id": "CVE-2026-72199",
      "initial_release_date": "2026-08-15T00:00:00+00:00",
      "product_status:known_not_affected": "274",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: ntfs: validate resident index root values on lookup",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-72199.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-08-21T00:42:40Z",
      "cve": "CVE-2026-72199",
      "id": "CVE-2026-72199",
      "initial_release_date": "2026-08-21T00:42:40Z",
      "product_status:known_not_affected": "284",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-72199",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-72199.json",
      "version": "2"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

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.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Loading…