ZeroHour

CVE-2026-89616

mass

Linux kernel NTFS3 driver leaks uninitialized kernel memory on LZNT decompression

CVSS 3.1
7.5 high
EPSS
Published
()
Modified
AI analysis

The Linux kernel's NTFS3 filesystem driver fails to zero the tail of a decompressed frame in ni_read_frame(): when decompress_lznt() exhausts the compressed stream early, it returns fewer bytes than the frame size, and the driver marks all pages uptodate without clearing the gap. A crafted NTFS file whose LZNT stream decompresses to only a few bytes causes a plain read(2) to disclose the unwritten tail — recently freed kernel page memory — to unprivileged userspace. Leaked content can reveal kernel pointers and defeat KASLR, providing reconnaissance for follow-on kernel exploitation. Any Linux system that mounts an NTFS filesystem with the in-kernel ntfs3 driver and reads such a file is affected; the issue is rated CVSS 3.1 7.5 (high) with a network attack vector, since a malicious NTFS image can be delivered remotely (downloaded image, network share) and mounted by the victim. The flaw is fixed upstream by zeroing the [unc_size, frame_size) tail after a successful LZNT decompression, and no public PoC or in-the-wild exploitation is known.

What to do: Install a kernel that backports the fs/ntfs3 fix (which zeroes the [unc_size, frame_size) tail immediately after a successful LZNT decompression) as soon as your distribution ships it. Until patched, avoid mounting untrusted NTFS disk images or removable media with the in-kernel ntfs3 driver — disable CONFIG_NTFS3, prefer the userspace ntfs-3g driver, or block automounting of NTFS media. Note that only systems with the ntfs3 driver compiled in or loaded as a module and actually reading NTFS volumes are exposed, so servers without NTFS mounts carry minimal practical risk.

Affected
Linux Kernel (fs/ntfs3 NTFS3 driver)All kernel versions shipping the fs/ntfs3 NTFS3 driver prior to the fixing commit; the advisory does not enumerate specific version ranges
Estimated exposure
massTens of millions of Linux systems ship kernels containing the vulnerable ntfs3 code path — The ntfs3 driver is enabled or buildable in most mainstream distribution kernels, and any system that mounts an NTFS volume (external USB media, dual-boot disks, downloaded disk images) traverses the vulnerable read path, so the plausibly…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

In the Linux kernel, the following vulnerability has been resolved: fs/ntfs3: fix info-leak on partial LZNT decompress in ni_read_frame() ni_read_frame() decompresses an LZNT $DATA frame into the vmapped target pages and then trusts decompress_lznt()'s return value: unc_size = decompress_lznt(frame_ondisk, ondisk_size, frame_mem, frame_size); if ((ssize_t)unc_size frame_size) err = -EINVAL; decompress_lznt() stops as soon as the compressed stream is exhausted (e.g. a zero chunk header) and returns the number of bytes it actually wrote, which may be far less than frame_size. The bytes between unc_size and frame_size are never written. The only memset() that follows zeroes the region beyond i_valid; when the frame lies entirely within the file's valid size that memset() does not run, so the gap retains whatever was in the just-vmapped pages. All pages are then marked uptodate and returned to userspace, disclosing uninitialized (recently-freed) kernel page memory. A crafted compressed file whose stream decompresses to only a few bytes leaks the remainder of every frame on a plain read(2), which is enough to recover kernel pointers and defeat KASLR. Zero the [unc_size, frame_size) tail immediately after a successful LZNT decompress so the remainder reads back as zero.

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

In the news

No ingested article mentions this CVE yet.