CVE-2026-72209

Source
https://cve.org/CVERecord?id=CVE-2026-72209
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-72209.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-72209
Downstream
Published
2026-08-15T05:54:04.772Z
Modified
2026-08-18T03:56:38.870936239Z
Severity
  • 9.8 (Critical) CVSS_V3 - CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H CVSS Calculator
Summary
ntfs: validate attribute values on lookup
Details

In the Linux kernel, the following vulnerability has been resolved:

ntfs: validate attribute values on lookup

ntfsattrfind() and ntfsexternalattr_find() check that generic resident attribute values fit in their attribute records and that fixed-size resident values are large enough. For variable-length resident formats, however, the fixed part is not enough: embedded length fields can still point callers past the resident value.

A crafted image can set a small resident $FILENAME valuelength while leaving filenamelength large. Callers then trust filenamelength and read past the resident value when converting or comparing the name. This was reproduced with a crafted image under KASAN as a slab-out-of-bounds read from the kmalloc-1k MFT record copy. The stack included ntfslookup(), ntfsiget(), ntfsreadlockedinode(), ntfsattrnameget(), ntfsucstonls(), and utf16sto_utf8s().

Add a shared attribute value validator and use it before a lookup path can return an attribute, including the ATUNUSED enumeration case where callers inspect returned attributes directly. The helper validates resident value bounds, minimum resident value sizes, variable-length $FILENAME fields, and non-resident mapping-pairs metadata that was previously checked separately in both lookup paths.

This also preserves the intended resident @val matching semantics in the external attribute lookup path. The old duplicated validation block overwrote the actual resident value length with the type-specific minimum length before comparing @val, so variable-length resident values could fail to match even when the bytes were identical. Keep the comparison on the actual value length, and make ntfsattrlistentryadd() compare resident attributes with lowestvcn zero instead of reading the non-resident union member after a successful resident match.

Reject non-resident $FILENAME records too: the format requires $FILENAME to be resident and callers treat returned records as resident.

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/72xxx/CVE-2026-72209.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
6ceb4cc81ef3409ff79dcb959771f9110787397a
Fixed
e4c36dfac57a7261e9aeb0f3a7f30944a8aefb56
Fixed
d5803e3345dae9c6470bb61869885236276b9a35

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-72209.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
7.1.0
Fixed
7.1.5

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-72209.json"