CVE-2026-89779
largeHeap out-of-bounds read in Linux kernel ntfs3 driver leaks kernel memory
The Linux kernel's ntfs3 filesystem driver fails to verify that an NTFS extended-attribute (EA) record's ef->size field is large enough to hold the record's own name and value, so a crafted image can pass validation in ntfs_read_ea() with a declared size of, e.g., 24 bytes while embedding a length (elength) of 0xffff. When getxattr() is later called on a file on that mounted image, ntfs_get_ea() trusts the bogus elength and copies up to 64 KB out of the undersized kmalloc'd buffer, producing a slab out-of-bounds read (confirmed by the KASAN report) that leaks adjacent kernel heap memory to userspace. An attacker who can get a malicious NTFS image or device mounted, for example via a USB drive auto-mounted on a desktop or a service that processes untrusted disk images, can disclose kernel heap contents, and the CVSS 9.1 rating (C:H/A:H) also reflects potential denial of service. Any Linux system running a kernel with the ntfs3 driver (CONFIG_NTFS3) enabled that mounts untrusted NTFS filesystems is affected. No public proof-of-concept is known, there is no reported in-the-wild exploitation, and the issue is not in CISA's KEV catalog.
What to do: Update the kernel via your distribution's security channel as fixes ship (the patch makes ntfs_get_ea()/ntfs_read_ea() require ef->size to cover the record's name and value); fixed version numbers were not provided in the advisory. Until patched, avoid mounting untrusted NTFS images or USB devices with the in-kernel ntfs3 driver (prefer the FUSE-based ntfs-3g) and restrict mount privileges to trusted users. Check whether CONFIG_NTFS3 is enabled or the ntfs3 module is loaded on your systems to gauge exposure.
| Linux kernel (fs/ntfs3 driver, CONFIG_NTFS3) | — |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
In the Linux kernel, the following vulnerability has been resolved: fs/ntfs3: validate ef->size covers the record's name and value When an EA record has a non-zero ef->size, ntfs_read_ea() only checks that the record fits in the remaining buffer (ea_size > bytes), not that ef->size is large enough to hold the record's own name_len + 1 + elength. A crafted image can pass validation with, e.g., ef->size = 24 but elength = 0xffff. ntfs_get_ea() then trusts elength and copies it out of the undersized record, reading past the kmalloc(info->size) allocation and leaking heap memory to userspace via getxattr(): BUG: KASAN: slab-out-of-bounds in ntfs_get_ea (fs/ntfs3/xattr.c:302) Read of size 65535 at addr ffff888100794550 by task exploit __asan_memcpy (mm/kasan/shadow.c:105) ntfs_get_ea (fs/ntfs3/xattr.c:302) ntfs_getxattr (fs/ntfs3/xattr.c:848) __vfs_getxattr (fs/xattr.c:441) vfs_getxattr (fs/xattr.c:474) do_getxattr (fs/xattr.c:800) path_getxattrat (fs/xattr.c:868) do_syscall_64 (arch/x86/entry/syscall_64.c:94) The buggy address is located 80 bytes inside of allocated 84-byte region in cache kmalloc-96 Compute the size the record needs and require ef->size to cover it.
- Vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H
In the news0 stories
No ingested article mentions this CVE yet.