ZeroHour

CVE-2026-89617

large

Out-of-bounds memory access in Linux kernel NTFS3 driver log replay

CVSS 3.1
7.8 high
EPSS
Published
()
Modified
AI analysis

The Linux kernel's ntfs3 filesystem driver fails to validate that the page_lcns[] array at the end of each DIR_PAGE_ENTRY in the restart/dirty-page table actually fits within the entry, trusting the on-disk lcns_follow length field from the NTFS journal. A crafted NTFS volume can set an inflated lcns_follow value, causing the v0-to-v1 conversion memmove and subsequent log-replay passes (including HotFix lookups via find_dp()) to read and write past the end of the allocated entry, corrupting kernel memory. An attacker triggers this by getting a victim system to mount and replay the journal of a maliciously crafted NTFS filesystem (e.g., external USB media or a supplied disk image), potentially gaining kernel-level memory corruption leading to a crash or privilege escalation; the CVSS vector (AV:L/PR:L) indicates a local, low-privilege attack scenario. Any system running a kernel whose fs/ntfs3 code predates the fix adding check_dp_table() is affected, with the practical risk concentrated on systems that mount NTFS volumes of untrusted origin. No public proof of concept exists, the flaw is not in CISA's KEV catalog, and no exploitation has been observed in the wild.

What to do: Apply distribution kernel updates containing the fs/ntfs3 fix (look for the check_dp_table() validation in the changelog) and reboot into the patched kernel. As a mitigation, avoid mounting untrusted NTFS volumes with the in-kernel ntfs3 driver — use read-only mounts or the userspace ntfs-3g FUSE driver for media of unknown origin, and consider disabling ntfs3 on systems that never handle NTFS disks. Review mount/audit logs for unexpected NTFS mounts from removable media if untrusted disks are plausible in your environment.

Affected
Linux kernel (fs/ntfs3 NTFS driver)Kernel versions shipping fs/ntfs3 log-replay code prior to the fix that adds the check_dp_table() size validation; no fixed version number is stated in the advi
Estimated exposure
largeHundreds of millions of Linux devices ship the ntfs3 code, but the realistically attackable subset — systems that mount untrusted NTFS media — is unknown — The ntfs3 driver is part of the mainline kernel and enabled in most modern distribution kernels, so the code path is nearly ubiquitous, but it is only reachable when replaying a journal from an attacker-supplied NTFS volume, so the truly…

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: validate dirty page table on log replay Each DIR_PAGE_ENTRY ends in a page_lcns[] array whose length is the on-disk lcns_follow field. check_rstbl() validates the table bookkeeping but never checks that this array fits in the entry, so a crafted lcns_follow lets the v0->v1 conversion memmove and later replay passes run off the entry. Add check_dp_table() to reject, right after check_rstbl(), any entry larger than its size claims via struct_size() (the same expression used to allocate these entries, so the check is overflow-safe by construction). All consumers can then trust lcns_follow as the real capacity. This covers every page_lcns[] access whose index is bounded by the entry itself (the conversion memmove, the HotFix store via find_dp(), and the self-bounded scan loops). Accesses whose index comes from the log record need a separate bound and are handled in a follow-up patch.

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

In the news

No ingested article mentions this CVE yet.