CVE-2026-89616

fs/ntfs3: fix info-leak on partial LZNT decompress in ni_read_frame()

State
Published
Severity
7.5 High
Published
Sep 11, 2026
Updated
Oct 19, 2026
Reserved
Sep 11, 2026

Read the record on cve.org

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 < 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.

Scores

CVSSScoreVectorSource
3.17.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:NLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 4342306f0f0d5ff4315a204d315c1b51b914fca5 to before 7d60a4c49af4d5cb88aa7cbf998d0408bd415055Affected
  • 4342306f0f0d5ff4315a204d315c1b51b914fca5 to before cd40eee4923d104ebec9ac7513b971bc441e431dAffected
  • 4342306f0f0d5ff4315a204d315c1b51b914fca5 to before 77d8efd04745cda23858546afdbd9d07b591758eAffected
  • 4342306f0f0d5ff4315a204d315c1b51b914fca5 to before 0f699ddb290a24b37e1bc9bf1e3c9dbccf564beaAffected
  • 4342306f0f0d5ff4315a204d315c1b51b914fca5 to before 376ee45659a4b943df672ad275c63da00655f929Affected
  • 4342306f0f0d5ff4315a204d315c1b51b914fca5 to before 4a1b39b2e10eb8de86265e80cf2be4396bc1dce4Affected
  • 4342306f0f0d5ff4315a204d315c1b51b914fca5 to before 35d1ea92c7d946e2ebdbe36cdb2c969c8704bebdAffected
LinuxLinux
  • 5.15Affected
  • before 5.15Not affected
  • 5.15.221 through 5.15.*Not affected
  • 6.1.188 through 6.1.*Not affected
  • 6.6.157 through 6.6.*Not affected
  • 6.12.109 through 6.12.*Not affected
  • 6.18.50 through 6.18.*Not affected
  • 7.2.4 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.