data built 2026-10-19T13:16:53Z

Look up another CVE · open CVE-2026-72185 in the interactive tracker

CVE-2026-72185

ntfs: fix WARN_ON for resident attribute in ntfs_map_runlist_nolock()

9.8 EPSS 0.7% AV:N

Published 2026-08-15 (2 months ago) by the Linux kernel CNA. Subsystem fs/ntfs. Debian urgency: unimportant.

What to do, per Debian release

Debian's own status for CVE-2026-72185 in every release this site tracks, and what each one means in practice. Every status below is the one the Debian Security Team publishes for this CVE. source

ReleaseStatus VersionWhat this means
Debian 12bookwormnot affected6.1.190-1Nothing to do. bookworm never shipped the vulnerable code.
Debian 13trixienot affected6.12.113-1Nothing to do. trixie never shipped the vulnerable code.
Debian 14forkyfixed7.1.5-1Update the kernel and reboot. Fixed in 7.1.5-1. A running kernel keeps the old code until the machine restarts.
Debian unstablesidfixed7.1.5-1Update the kernel and reboot. Fixed in 7.1.5-1. A running kernel keeps the old code until the machine restarts.

The vulnerability

What the bug is

When ntfs_map_runlist_nolock() needs to look up the attribute extent containing a target VCN (ctx_needs_reset == true), it calls ntfs_attr_lookup() and then expects the result to be a non-resident attribute, since only non-resident attributes have a mapping pairs array to decompress. A crafted NTFS image can place a resident attribute where a non-resident one is expected, causing ntfs_attr_lookup() to succeed but return a resident attribute record. Previously this was caught only by a WARN_ON(), which does not stop execution. The code then falls through to read a->data.non_resident.highest_vcn from what is actually a resident attribute, accessing the wrong union member and corrupting the VCN range check. The caller path triggering this warning during mount is: ntfs_map_runlist_nolock ntfs_empty_logfile load_system_files ntfs_fill_super In this path ctx is NULL, so ntfs_map_runlist_nolock() allocates a temporary search context internally and sets ctx_needs_reset = true. The existing resident-attribute guard in the ctx != NULL branch already returns -EIO silently for the same condition; make the ctx_needs_reset path consistent by replacing the WARN_ON() with the same -EIO error return. This causes the crafted image to be rejected with a mount error instead of triggering a kernel warning.

Where it lives

The fix touches these files. If the subsystem is one you do not use, the practical exposure is lower, though the package is still the vulnerable one.

fs/ntfs/attrib.c

What this is
NTFS FILESYSTEMMAINTAINERS section matched on fs/ntfs/ · linux-fsdevel@vger.kernel.org · Maintained
Kernel module
ntfs

Check it on the machine

grep -w CONFIG_NTFS_FS /boot/config-$(uname -r)

Reads the booted kernel's own configuration, on the machine and nowhere else. =y is built in, =m is a module, and an is not set line means the code is not there.

lsmod | grep -w ntfs

Prints a line if that module is loaded right now, and nothing if it is not. One that is not loaded can still be loaded later by anything that needs it.

Show whether Debian builds this, per release

Debian does not build this code in 1 release. It does build it in 2 releases, so the answer depends on which release the machine runs. The build rule could not be established for 1 release, so nothing is claimed about those.

  • bookwormn
  • trixie?
  • forky, sidm
n
not enabled on any flavour - this release does not build the code
?
not established - no Makefile entry for the affected file
m
a loadable module on every flavour - check lsmod, can be blacklisted

Where a release above reads "not established", no build rule for the affected file was found in that release's kernel tree. That is a gap in this lookup, not a finding that the code is absent.

Build switch
CONFIG_NTFS_FS

From the configuration Debian publishes for every kernel flavour it builds. It covers only the architectures Debian ships a linux-config package for, and nothing about a kernel you built yourself. Debian's own status above stays authoritative about the source package.MAINTAINERS kbuild Makefiles Debian linux-config packages

Signals

Published
2026-08-15 (2 months ago)source
CVSS
9.8 critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:Hsource recompute it
Attack vector
network (AV:N)source
EPSS
0.67%, higher than 51.1% of all CVEssource
CISA KEV
not listedthe KEV catalogue
Debian urgency
unimportantsource
Subsystem
fs/ntfs

Upstream fixes

The versions the CNA records as introducing and fixing this, and the commit for each. source

IntroducedFixed inCommit
7.17.1.5b397b1238a21
7.17.2b8d6c528e9d5

Why the CNA scored it this way

Quoted from the kernel CNA's own scoring file, word for word. A highlighted metric carries the most severe value CVSS v3.1 defines for it, which is what pushes the score up. source

AV:NAttack vector, network
The bug is in fs/ntfs runlist mapping reached from ntfs_fill_super→ntfs_empty_logfile on mount and from VFS read/iomap paths (ntfs_attr_vcn_to_rl→ntfs_map_runlist_nolock); when a classic NTFS volume is exported via ksmbd or nfsd, a remote client read triggers the same mapping code on the server without local shell access.
AC:LAttack complexity, low
An attacker fully controls the crafted NTFS image: placing a resident $DATA extent where a non-resident one is expected makes ntfs_attr_lookup() succeed, bypasses the old WARN_ON-only guard, and deterministically drives the wrong union reads and mapping-pairs decompression with no races or victim-specific memory layout.
PR:NPrivileges required, none
Exploitation needs only a malicious NTFS image and access to have it parsed—no root on the target—via udev/systemd automount of attacker USB media, CAP_SYS_ADMIN mount of a loop image, or a remote ksmbd/nfsd client with guest/anonymous read (or write) on an already-exported NTFS share.
UI:NUser interaction, none
Once the crafted volume is mounted (automounter, admin, or server export), a single attacker-initiated mount or remote file read that maps an affected non-resident extent triggers the bug; no further victim clicks, prompts, or confirmation are required beyond supplying the image.
S:UScope, unchanged
Union confusion and forged runlist handling corrupt kernel heap metadata and can issue attacker-influenced block-device writes within the same host OS security domain; impact is local privilege escalation or disk corruption, not VM/hypervisor, IOMMU, or container sandbox escape.
C:HConfidentiality impact, high
WARN_ON does not stop execution; the code reads non_resident.highest_vcn and mapping_pairs_offset from a resident attribute union, then ntfs_mapping_pairs_decompress() scans attacker-controlled bytes as mapping pairs, yielding out-of-bounds kernel reads and disclosure/corruption primitives beyond a simple warning.
I:HIntegrity impact, high
Successful decompression installs an attacker-forged runlist; on rw mount ntfs_empty_logfile() uses those LCNs to write 0xff-filled clusters via ntfs_bdev_write() to arbitrary disk offsets, and heap runlist allocation from forged mapping pairs enables arbitrary kernel memory corruption and potential control-flow hijack.
A:HAvailability impact, high
The vulnerable path continues after WARN_ON instead of returning -EIO, so malformed mapping-pair decompression and use of a corrupted runlist can provoke kernel warnings, I/O errors, oops, or panic during mount or subsequent NTFS I/O, causing high availability impact even when full exploitation is not attempted.