UBUNTU-CVE-2026-90200: Integer Overflow
In the Linux kernel, the following vulnerability has been resolved: fs/ntfs3: fix integer overflow in MFT cluster validation In ntfsinitfromboot(), the boot sector's MFT cluster numbers are validated against the volume size with: if (mlcn sctperclst >= sectors || mlcn2 sctperclst >= sectors) goto out; mlcn and mlcn2 are u64 fields read directly from the boot sector. sctperclst is bounded above by 4096 (truesectorsperclst() plus the ispowerof2() check below it), but the multiplication is done in u64 and wraps when mlcn (or mlcn2) is large enough -- e.g. mlcn near 2^62 with sctperclst == 4 wraps to 0, which compares below any non-zero 'sectors', so the check is bypassed and the malformed record is accepted. The accepted mlcn is then used unchanged in sbi->mft.lbo = mlcn << clusterbits; In practice the resulting reads fail at the block layer (sbbread() returns NULL via growbuffers()'s checkmuloverflow() guard), so today this manifests as mount failing in odd places rather than as something more dangerous, but the validation step is still wrong and there is no reason for callers to rely on the block layer to catch a value that should never have been accepted in the first place. Use checkmuloverflow() to compute the two sector positions and fail the mount if either multiplication wraps; this preserves the existing semantics (mlcn sctperclst >= sectors) instead of switching to division (mlcn >= sectors / sctperclst), which would tighten the check at edge cases where 'sectors' is not a multiple of sctperclst. The checkoverflow() style is the one ntfs3 already uses for similar on-disk arithmetic in fs/ntfs3/run.c.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
ubuntu/linux-hwe-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42~24.04.1 - Upgrade
Upgrade
ubuntu/linux-riscv-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1~24.04.1 - Upgrade
Upgrade
ubuntu/linuxto a version that resolves this vulnerability.Fixed in 7.0.0-42.42 - Upgrade
Upgrade
ubuntu/linux-awsto a version that resolves this vulnerability.Fixed in 7.0.0-1016.17 - Upgrade
Upgrade
ubuntu/linux-gcpto a version that resolves this vulnerability.Fixed in 7.0.0-1016.18 - Upgrade
Upgrade
ubuntu/linux-ibmto a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oem-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oracleto a version that resolves this vulnerability.Fixed in 7.0.0-1015.16 - Upgrade
Upgrade
ubuntu/linux-riscvto a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1
Event History
Frequently Asked Questions
Who is exposed to this issue?
Systems using the listed Ubuntu Linux kernel packages are exposed when they mount an NTFS volume whose boot sector contains maliciously large MFT cluster-number fields. The vulnerable values are read directly from the NTFS boot sector.
What does an attacker need to exploit it?
An attacker needs to induce a system to mount a crafted NTFS filesystem and requires user interaction according to the supplied vector. No privileges are required by the vulnerability vector.
What happens when the malformed filesystem is mounted?
The MFT cluster validation can be bypassed because a 64-bit multiplication wraps. In current practice, subsequent block-layer reads fail and the mount fails in unusual locations rather than producing the more dangerous behavior the validation was intended to prevent.
How can I identify a potentially affected filesystem?
A potentially malicious NTFS boot sector has an MFT cluster number large enough that multiplying it by sectors per cluster overflows a 64-bit value, causing the result to appear below the volume sector count. The data gives an example of a value near 2^62 when sectors per cluster is 4.