CVE-2026-64431

Source
https://cve.org/CVERecord?id=CVE-2026-64431
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-64431.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-64431
Downstream
Published
2026-07-25T08:51:07.194Z
Modified
2026-07-27T04:03:21.983330559Z
Summary
ntfs: avoid calling post_write_mst_fixup() for invalid index_block
Details

In the Linux kernel, the following vulnerability has been resolved:

ntfs: avoid calling postwritemstfixup() for invalid indexblock

ntfsicxibsyncwrite() calls postwritemstfixup() when ntfsib_write() returns an error, intending to restore the buffer after a failed write.

However, ntfsibwrite() returns an error immediately if prewritemstfixup() validation fails. The caller, ntfsicxibsyncwrite(), interprets any error as a write failure requiring rollback. It does not differentiate between I/O errors and validation failures, and calls postwritemstfixup() anyway.

Since postwritemstfixup() assumes that the indexblock contents is correct, it doesn't perform the boundary checks, which results in out-of-bounds memory access.

An attacker can craft a malicious NTFS image with: - large indexblock.usaofs offset, pointing outside the ntfsrecord - indexblock.usacount = 0, causing integer underflow - or indexblock.usacount larger than actual number of sectors in the ntfsrecord, causing out-of-bounds access

KASAN reports describing the memory corruption: ================================================================== BUG: KASAN: slab-out-of-bounds in postwritemstfixup+0x19c/0x1d0 Read of size 2 at addr ffff8881586c9018 by task p/9428 Call Trace: <TASK> dumpstacklvl+0x100/0x190 printreport+0x139/0x4ad ? postwritemst_fixup+0x19c/0x1d0 ? __virtaddrvalid+0x262/0x500 ? postwritemstfixup+0x19c/0x1d0 kasanreport+0xe4/0x1d0 ? postwritemstfixup+0x19c/0x1d0 postwritemstfixup+0x19c/0x1d0 ntfsicxibsyncwrite+0x179/0x220 ntfsinodesync_filename+0x83d/0x1080 __ntfswriteinode+0x1049/0x1480 ntfsfilefsync+0x131/0x9b0 ================================================================== BUG: KASAN: slab-out-of-bounds in postwritemstfixup+0x1aa/0x1d0 Write of size 2 at addr ffff8881586c91fe by task p/9428 Call Trace: <TASK> dumpstacklvl+0x100/0x190 printreport+0x139/0x4ad ? postwritemst_fixup+0x1aa/0x1d0 ? __virtaddrvalid+0x262/0x500 ? postwritemstfixup+0x1aa/0x1d0 kasanreport+0xe4/0x1d0 ? postwritemstfixup+0x1aa/0x1d0 postwritemstfixup+0x1aa/0x1d0 ntfsicxibsyncwrite+0x179/0x220 ntfsinodesync_filename+0x83d/0x1080 __ntfswriteinode+0x1049/0x1480 ntfsfilefsync+0x131/0x9b0 ==================================================================

Let's move the postwritemstfixup() call to ntfsibwrite(). The ntfsibwrite() function calls prewritemstfixup() at the beginning. If the indexblock contents is invalid, prewritemstfixup() fails and ntfsibwrite() returns early without calling postwritemstfixup() on bad indexblock.

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/64xxx/CVE-2026-64431.json",
    "cna_assigner": "Linux"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
0a8ac0c1fa0b99a5b29002bc7f232ed7eafddef0
Fixed
e2018628301a6d9f54e34b0cb417f1688c66df1d
Fixed
5b6eedd7cc2936f9238e852b553a1b326105bde8

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-64431.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
7.1.0
Fixed
7.1.4

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-64431.json"