{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2026-89614", "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "state": "PUBLISHED", "assignerShortName": "Linux", "dateReserved": "2026-09-11T19:38:34.735Z", "datePublished": "2026-09-11T19:45:14.747Z", "dateUpdated": "2026-10-19T08:49:46.853Z" }, "containers": { "cna": { "providerMetadata": { "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux", "dateUpdated": "2026-10-19T08:49:46.853Z" }, "descriptions": [ { "lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nntfs: bound the free-cluster bitmap scan to the volume\n\nvol->lcn_empty_bits_per_page is sized from vol->nr_clusters at mount, but\nntfs_cluster_alloc() bounds its scan of that array by the size of $Bitmap.\nThose are independent on-disk quantities and the mount-time check only\nrejects a $Bitmap that is too small, so an image whose $Bitmap covers more\nclusters than the volume has lets the scan index past the array. A run\nwhose LCN lies in that gap takes the allocator straight there, since the\ncaller passes the file's own last LCN as its locality hint. KASAN reports\na slab out-of-bounds read when a file on such a volume is extended.\n\nClamp the scan to what that array covers, mirroring the max_index\ncalculation the mount-time scan already uses, and reject a decoded LCN\nat or beyond nr_clusters in the mapping pairs decoder. Conforming\nvolumes are unaffected." } ], "metrics": [ { "cvssV3_1": { "version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H", "baseScore": 9.8, "baseSeverity": "CRITICAL" }, "scenarios": [ { "lang": "en", "value": "AV:N - fs/ntfs registers ntfs_export_ops, so nfsd/ksmbd VFS writes on an exported NTFS volume reach ntfs_file_write_iter->iomap->ntfs_attr_expand->ntfs_cluster_alloc, and reads reach ntfs_mapping_pairs_decompress, without local shell access.\nAC:L - A crafted image whose $Bitmap covers more clusters than nr_clusters, plus a file run whose LCN sits in that gap, deterministically drives the allocator to index past lcn_empty_bits_per_page and the decoder to accept out-of-volume LCNs, with no race or victim-specific layout.\nPR:N - Triggering needs only permission to cause server-side parse or extend of mounted NTFS metadata (guest/anonymous SMB, a permissive NFS export, or an unprivileged local open/write on an already-mounted volume), not init-namespace root or CAP_SYS_ADMIN at trigger time.\nUI:N - After the crafted volume is mounted and optionally exported, ordinary remote or local write/truncate/fallocate, and reads that decompress mapping pairs, trigger the bug; no extra victim mount dialog, USB insertion, or confirmation is required during the attack.\nS:U - Slab out-of-bounds access to vol->lcn_empty_bits_per_page and misdirected block I/O remain in the host kernel/OS security domain and do not cross a VM, container, or IOMMU boundary to another authority.\nC:H - ntfs_cluster_alloc performs a KASAN-confirmed slab out-of-bounds read of lcn_empty_bits_per_page at an attacker-influenced page index, and decoded LCNs past nr_clusters make iomap reads disclose data beyond the NTFS volume, a kernel heap/OOB-read disclosure primitive.\nI:H - With zone_end set from the poisoned LCN, the bitmap scan calls ntfs_set_lcn_empty_bits() on out-of-range indices (heap OOB write of empty-bit counts) and iomap can write past the volume using those LCNs, a kernel memory-corruption primitive consistent with privilege escalation.\nA:H - KASAN reports a slab out-of-bounds access when a file on such a volume is extended; indexing past the kvmalloc array can oops, and the OOB write of lcn_empty_bits_per_page can panic or hang the host, so even failed exploitation denies service." } ] } ], "affected": [ { "product": "Linux", "vendor": "Linux", "defaultStatus": "unaffected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "fs/ntfs/lcnalloc.c", "fs/ntfs/runlist.c" ], "versions": [ { "version": "11ccc9107dc460de28af90fac1f42404d9802735", "lessThan": "dc15a9f5307d5372aef3b64bf3ed7802f530c471", "status": "affected", "versionType": "git" }, { "version": "11ccc9107dc460de28af90fac1f42404d9802735", "lessThan": "19cac7902a8ab748e15f98ddaafcf5f8882be21d", "status": "affected", "versionType": "git" } ] }, { "product": "Linux", "vendor": "Linux", "defaultStatus": "affected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "fs/ntfs/lcnalloc.c", "fs/ntfs/runlist.c" ], "versions": [ { "version": "7.1", "status": "affected" }, { "version": "0", "lessThan": "7.1", "status": "unaffected", "versionType": "semver" }, { "version": "7.2.4", "lessThanOrEqual": "7.2.*", "status": "unaffected", "versionType": "semver" }, { "version": "7.3", "lessThanOrEqual": "*", "status": "unaffected", "versionType": "original_commit_for_fix" } ] } ], "cpeApplicability": [ { "nodes": [ { "operator": "OR", "negate": false, "cpeMatch": [ { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "7.1", "versionEndExcluding": "7.2.4" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "7.1", "versionEndExcluding": "7.3" } ] } ] } ], "references": [ { "url": "https://git.kernel.org/stable/c/dc15a9f5307d5372aef3b64bf3ed7802f530c471" }, { "url": "https://git.kernel.org/stable/c/19cac7902a8ab748e15f98ddaafcf5f8882be21d" } ], "title": "ntfs: bound the free-cluster bitmap scan to the volume", "x_generator": { "engine": "bippy-1.2.0" } } } }