CVE-2026-89616

CVE-2026-89616

High · published September 12, 2026

CVSS v3.1
7.5
EPSS
0%
Percentile
34.8
In the wild
Unconfirmed
What it is

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 < 0) err = unc_size;

else if (!unc_size || 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.

The record
Technical detail
CVSS v3.1
7.5 · HIGH
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
CVSS v4.0
Not supplied
EPSS
0.00415 · 34.8th percentile
Published
2026-09-12T00:19Z
References (7)
EPSS history
Timeline
  • 13 SEP 03:23Z
    EPSS moved — → 0%
    epss
  • 11 SEP 19:45Z
    fs/ntfs3: fix info-leak on partial LZNT decompress in ni_read_frame()
    cvelistv5