CVE-2026-72188 PUBLISHED

ntfs: sanitize MFT references returned from ntfs_lookup_inode_by_name()

Assigner: Linux
Reserved: 09.08.2026 Published: 15.08.2026 Updated: 17.08.2026

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

ntfs: sanitize MFT references returned from ntfs_lookup_inode_by_name()

ntfs_lookup_inode_by_name() returns MFT references read from directory index entries on disk. These values are untrusted, but the function can currently return an error-marked MFT reference to its callers without validating it.

Callers later decode lookup failures with MREF_ERR(). A crafted NTFS image can set the MREF error bit while leaving the low bits as an arbitrary value, causing callers to consume a bogus pseudo-errno instead of treating the lookup result as corrupted on-disk metadata.

Fix this at the source by normalizing every error-marked MFT reference returned from ntfs_lookup_inode_by_name() to ERR_MREF(-EIO). Apply this to all four directory lookup return paths so every caller gets a validated result without needing additional checks or an API change.

This keeps the sanitization in the common lookup helper, which is cleaner than duplicating validation in each caller.

Metrics

CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H
CVSS Score: 9.1

AV:N - fs/ntfs registers ntfs_export_ops; remote nfsd/ksmbd LOOKUP/OPEN/stat on an exported crafted NTFS volume reaches ntfs_lookup→ntfs_lookup_inode_by_name parsing attacker-controlled INDX indexed_file values without local shell access. AC:L - The attacker fully controls on-disk directory index indexed_file MFT references and can set the ERR_MREF error bit with arbitrary low bits; decoding the forged pseudo-errno via MREF_ERR() is deterministic from a crafted image with no race or external timing. PR:N - Triggering needs only a malicious NTFS image (USB, loop, dual-boot disk) mounted by the host or lookup access to exported NTFS paths via NFS/SMB; no init-namespace root or CAP_SYS_ADMIN is required on the code path that consumes the bogus errno. UI:N - fill_super mount-time lookups (hiberfil.sys, $Quota) and subsequent local or remote path lookups call ntfs_lookup_inode_by_name as soon as the crafted volume is mounted or exported, without further per-attack cooperation beyond volume presentation. S:U - Forged errno handling perturbs VFS lookup and mount safety decisions within the host kernel/filesystem authority only; this is standard filesystem parsing abuse, not a VM escape, IOMMU bypass, or cross-security-boundary scope change. C:N - The flaw only mis-decodes error-marked MFT references into attacker-chosen errno values returned to callers; there is no out-of-bounds read, use-after-free, or other kernel memory disclosure primitive. I:H - Spoofing -ENOENT via error-bit indexed_file can add negative dentries for present index entries and make check_windows_hibernation_status/load_and_init_quota treat hiberfil.sys/$Quota as absent, bypassing hibernation/quota guards and permitting rw corruption of live Windows hibernation and NTFS metadata. A:H - Hibernation-check bypass allows rw I/O on a suspended Windows volume, corrupting hiberfil.sys and preventing resume; forged lookup errnos also leave persistent negative-cache and index inconsistencies that can render the volume or dependent OS unusable.

Product Status

Vendor Linux
Product Linux
Versions Default: unaffected
  • affected from 1e9ea7e04472d4e5e12e58c881eaacfb3e49b669 to 83f396d881c4fd312c7fd5fff2c157fc21104464 (excl.)
  • affected from 1e9ea7e04472d4e5e12e58c881eaacfb3e49b669 to d97a36bae86a9a4021562ded2987f904e6bcb1d7 (excl.)
Vendor Linux
Product Linux
Versions Default: affected
  • Version 7.1 is affected
  • unaffected from 0 to 7.1 (excl.)
  • unaffected from 7.1.5 to 7.1.* (incl.)
  • unaffected from 7.2 to * (incl.)

References