{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-89615","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2026-09-11T19:38:34.735Z","datePublished":"2026-09-11T19:45:15.397Z","dateUpdated":"2026-09-14T12:01:31.040Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-09-14T12:01:31.040Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nfs/ntfs3: bound page_lcns[] index by the log record\n\nThe copy_lcns loop and the redo shorten loop index page_lcns[] at j + i,\nwhere i runs up to the log record's lcns_follow. That count is checked only\nagainst the record's own length, not the target entry, so check_dp_table()\n(which validates the entry's lcns_follow) does not cover it: the copy_lcns\nentry may even be freshly allocated after that check, and find_dp() bounds j\nbut not i. A crafted record thus overflows page_lcns[] of an otherwise valid\nentry.\n\nAdd dp_range_ok() and reject, before each loop, any record whose run does\nnot fit the entry. These are the only two page_lcns[] accesses indexed by\nthe record rather than the entry, so together with the entry validation\nevery access is now bounded.\n\n[almaz.alexandrovich@paragon-software.com: original patch contained changes to the problem already handled, applied partly]"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","baseScore":8.4,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - The page_lcns[] overflow is reached only in log_replay() on the local ntfs3 mount path (path_mount→ntfs_fill_super→ntfs_loadlog_and_replay→log_replay). ksmbd/nfsd never parse $LogFile; journal replay runs at fill_super, not while serving exported files.\nAC:L - An attacker fully controls crafted $LogFile LOG_REC_HDR fields (target_vcn, lcns_follow) and the target DIR_PAGE_ENTRY. find_dp() only bounds the base index j; the redo shorten loop then indexes page_lcns[j+i-1] with i up to the record's lcns_follow, so the OOB access is deterministic with no race.\nPR:N - No account or privilege on the victim is required: a crafted NTFS volume on USB/removable media, a disk image, or shared storage is sufficient for udisks2/systemd automount or an administrator mount to run $LogFile replay as root.\nUI:N - Desktop, kiosk, and shared-workstation automounters mount attacker-supplied NTFS media and run log_replay() inside ntfs_fill_super() without the user opening files or confirming a dialog; attaching the crafted volume is sufficient to trigger the overflow.\nS:U - Heap out-of-bounds page_lcns[] access occurs in the host kernel during ntfs3 journal replay in the mounting process; impact stays within one kernel security authority and is not a VM escape or IOMMU/DMA bypass.\nC:H - The redo shorten loop reads dp->page_lcns[j+i-1] with i taken from the log record's lcns_follow (u16, up to 65535 entries / ~512KB past the DIR_PAGE_ENTRY). That unbounded slab out-of-bounds read of adjacent heap is Confidentiality High per kernel OOB-read guidance.\nI:H - On unfixed kernels the copy_lcns analysis loop wrote attacker-controlled __le64 values past page_lcns[], a heap OOB write. Independently, OOB page_lcns[] reads in the redo pass control dlen passed to do_action() memcpy/memmove into MFT and index buffers, enabling further kernel writes.\nA:H - Indexing far past the kmalloc-backed DIR_PAGE_ENTRY in log_replay() on mount can fault unmapped adjacent slab memory, causing a kernel oops or panic. The crash is repeatable on every mount of the crafted NTFS volume."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/ntfs3/fslog.c"],"versions":[{"version":"b46acd6a6a627d876898e1c84d3f84902264b445","lessThan":"31fdd11f75da9823500168cecb07aa45130915a3","status":"affected","versionType":"git"},{"version":"b46acd6a6a627d876898e1c84d3f84902264b445","lessThan":"bb742d1030864c0fe140666f639428ba4e90b2ca","status":"affected","versionType":"git"},{"version":"b46acd6a6a627d876898e1c84d3f84902264b445","lessThan":"61ca8cbbf68f77f25b699ed4358bd232f94ed43b","status":"affected","versionType":"git"},{"version":"b46acd6a6a627d876898e1c84d3f84902264b445","lessThan":"f4c1bc6d7331f344ffcea93c2a37badcbe15baa6","status":"affected","versionType":"git"},{"version":"b46acd6a6a627d876898e1c84d3f84902264b445","lessThan":"7ccb94901f38a062034b56b43c774050b113758f","status":"affected","versionType":"git"},{"version":"b46acd6a6a627d876898e1c84d3f84902264b445","lessThan":"1135ebc225996b3ac1a295652b19a0a706737a6c","status":"affected","versionType":"git"},{"version":"b46acd6a6a627d876898e1c84d3f84902264b445","lessThan":"6f7b9dbdc1b7520206abce0049bdd143eb536e75","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/ntfs3/fslog.c"],"versions":[{"version":"5.15","status":"affected"},{"version":"0","lessThan":"5.15","status":"unaffected","versionType":"semver"},{"version":"5.15.221","lessThanOrEqual":"5.15.*","status":"unaffected","versionType":"semver"},{"version":"6.1.188","lessThanOrEqual":"6.1.*","status":"unaffected","versionType":"semver"},{"version":"6.6.157","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.12.109","lessThanOrEqual":"6.12.*","status":"unaffected","versionType":"semver"},{"version":"6.18.50","lessThanOrEqual":"6.18.*","status":"unaffected","versionType":"semver"},{"version":"7.2.4","lessThanOrEqual":"7.2.*","status":"unaffected","versionType":"semver"},{"version":"7.3-rc1","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":"5.15","versionEndExcluding":"5.15.221"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.15","versionEndExcluding":"6.1.188"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.15","versionEndExcluding":"6.6.157"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.15","versionEndExcluding":"6.12.109"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.15","versionEndExcluding":"6.18.50"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.15","versionEndExcluding":"7.2.4"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"5.15","versionEndExcluding":"7.3-rc1"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/31fdd11f75da9823500168cecb07aa45130915a3"},{"url":"https://git.kernel.org/stable/c/bb742d1030864c0fe140666f639428ba4e90b2ca"},{"url":"https://git.kernel.org/stable/c/61ca8cbbf68f77f25b699ed4358bd232f94ed43b"},{"url":"https://git.kernel.org/stable/c/f4c1bc6d7331f344ffcea93c2a37badcbe15baa6"},{"url":"https://git.kernel.org/stable/c/7ccb94901f38a062034b56b43c774050b113758f"},{"url":"https://git.kernel.org/stable/c/1135ebc225996b3ac1a295652b19a0a706737a6c"},{"url":"https://git.kernel.org/stable/c/6f7b9dbdc1b7520206abce0049bdd143eb536e75"}],"title":"fs/ntfs3: bound page_lcns[] index by the log record","x_generator":{"engine":"bippy-1.2.0"}}}}