In the Linux kernel, the following vulnerability has been resolved:
ntfs: reject invalid MFT LCNs from boot sector
The NTFS boot sector stores the MFT and MFTMirr locations as unsigned
64-bit LCNs, but parse_ntfs_boot_sector() decoded them into an s64.
A crafted high-bit value could therefore become negative and pass
the existing upper-bound check. The invalid value then propagated into
the MFT zone allocator and could result in an out-of-bounds access to
lcn_empty_bits_per_page.
CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS Score: 9.8
AV:N - After a crafted NTFS volume is mounted, fs/ntfs registers ntfs_export_ops, so nfsd/ksmbd VFS writes and creates reach ntfs_cluster_alloc() and index the poisoned MFT-zone LCN into lcn_empty_bits_per_page without local shell access.
AC:L - The attacker fully controls the unsigned 64-bit MFT/MFTMirr LCNs in the boot sector; a high-bit value becomes a negative s64, bypasses the signed upper-bound check, and later allocator walks use that value as bmp_pos with no race or rare config.
PR:N - Triggering the allocator needs only write access to a mounted NTFS export (guest/anonymous SMB or a permissive NFS export) or an unprivileged write on an already-mounted volume, not init-namespace root or CAP_SYS_ADMIN at trigger time.
UI:N - After the crafted volume is mounted and exported, ordinary remote or local write/create operations invoke ntfs_cluster_alloc() with the poisoned mft_zone_pos; no extra victim mount dialog or USB insertion is required during the attack.
S:U - Out-of-bounds access to vol->lcn_empty_bits_per_page corrupts kernel heap within the host OS security domain and does not cross a VM, container, or IOMMU boundary to another authority.
C:H - ntfs_cluster_alloc() reads lcn_empty_bits_per_page[index] where index is derived from the attacker-chosen negative LCN (truncating to a controllable pgoff_t on 32-bit), an unbounded kernel heap out-of-bounds read that can disclose adjacent objects.
I:H - The same attacker-influenced index is passed to ntfs_set_lcn_empty_bits(), which increments or decrements lcn_empty_bits_per_page[index], a kernel heap out-of-bounds write exploitable for arbitrary write and control-flow hijacking.
A:H - The out-of-bounds lcn_empty_bits_per_page index causes a kernel oops or KASAN slab-out-of-bounds fault in ntfs_cluster_alloc()/ntfs_set_lcn_empty_bits(), crashing or hanging the host even when not fully exploited.
| Attack Vector |
Network |
Scope |
Unchanged |
| Attack Complexity |
Low |
Confidentiality Impact |
High |
| Privileges Required |
None |
Integrity Impact |
High |
| User Interaction |
None |
Availability Impact |
High |
AV:N - After a crafted NTFS volume is mounted, fs/ntfs registers ntfs_export_ops, so nfsd/ksmbd VFS writes and creates reach ntfs_cluster_alloc() and index the poisoned MFT-zone LCN into lcn_empty_bits_per_page without local shell access.
AC:L - The attacker fully controls the unsigned 64-bit MFT/MFTMirr LCNs in the boot sector; a high-bit value becomes a negative s64, bypasses the signed upper-bound check, and later allocator walks use that value as bmp_pos with no race or rare config.
PR:N - Triggering the allocator needs only write access to a mounted NTFS export (guest/anonymous SMB or a permissive NFS export) or an unprivileged write on an already-mounted volume, not init-namespace root or CAP_SYS_ADMIN at trigger time.
UI:N - After the crafted volume is mounted and exported, ordinary remote or local write/create operations invoke ntfs_cluster_alloc() with the poisoned mft_zone_pos; no extra victim mount dialog or USB insertion is required during the attack.
S:U - Out-of-bounds access to vol->lcn_empty_bits_per_page corrupts kernel heap within the host OS security domain and does not cross a VM, container, or IOMMU boundary to another authority.
C:H - ntfs_cluster_alloc() reads lcn_empty_bits_per_page[index] where index is derived from the attacker-chosen negative LCN (truncating to a controllable pgoff_t on 32-bit), an unbounded kernel heap out-of-bounds read that can disclose adjacent objects.
I:H - The same attacker-influenced index is passed to ntfs_set_lcn_empty_bits(), which increments or decrements lcn_empty_bits_per_page[index], a kernel heap out-of-bounds write exploitable for arbitrary write and control-flow hijacking.
A:H - The out-of-bounds lcn_empty_bits_per_page index causes a kernel oops or KASAN slab-out-of-bounds fault in ntfs_cluster_alloc()/ntfs_set_lcn_empty_bits(), crashing or hanging the host even when not fully exploited.
CVSS 3.1