{"api_version":"1","generated_at":"2026-08-22T18:23:04+00:00","cve":"CVE-2026-72185","urls":{"html":"https://cve.report/CVE-2026-72185","api":"https://cve.report/api/cve/CVE-2026-72185.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-72185","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-72185"},"summary":{"title":"ntfs: fix WARN_ON for resident attribute in ntfs_map_runlist_nolock()","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nntfs: fix WARN_ON for resident attribute in ntfs_map_runlist_nolock()\n\nWhen ntfs_map_runlist_nolock() needs to look up the attribute extent\ncontaining a target VCN (ctx_needs_reset == true), it calls\nntfs_attr_lookup() and then expects the result to be a non-resident\nattribute, since only non-resident attributes have a mapping pairs\narray to decompress.\n\nA crafted NTFS image can place a resident attribute where a non-resident\none is expected, causing ntfs_attr_lookup() to succeed but return a\nresident attribute record.  Previously this was caught only by a\nWARN_ON(), which does not stop execution.  The code then falls through to\nread a->data.non_resident.highest_vcn from what is actually a resident\nattribute, accessing the wrong union member and corrupting the VCN range\ncheck.\n\nThe caller path triggering this warning during mount is:\n\n  ntfs_map_runlist_nolock\n  ntfs_empty_logfile\n  load_system_files\n  ntfs_fill_super\n\nIn this path ctx is NULL, so ntfs_map_runlist_nolock() allocates a\ntemporary search context internally and sets ctx_needs_reset = true.\nThe existing resident-attribute guard in the ctx != NULL branch already\nreturns -EIO silently for the same condition; make the ctx_needs_reset\npath consistent by replacing the WARN_ON() with the same -EIO error\nreturn.\n\nThis causes the crafted image to be rejected with a mount error instead\nof triggering a kernel warning.","state":"PUBLISHED","assigner":"Linux","published_at":"2026-08-15 06:21:36","updated_at":"2026-08-17 06:18:19"},"problem_types":[],"metrics":[{"version":"3.1","source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","type":"Secondary","score":"9.8","severity":"CRITICAL","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","data":{"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","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"HIGH","availabilityImpact":"HIGH"}},{"version":"3.1","source":"CNA","type":"DECLARED","score":"9.8","severity":"CRITICAL","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","data":{"baseScore":9.8,"baseSeverity":"CRITICAL","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","version":"3.1"}}],"references":[{"url":"https://git.kernel.org/stable/c/b397b1238a217264bb02f963a1a1eadf71906375","name":"https://git.kernel.org/stable/c/b397b1238a217264bb02f963a1a1eadf71906375","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/b8d6c528e9d57d263fee1a648409f84a68b2561d","name":"https://git.kernel.org/stable/c/b8d6c528e9d57d263fee1a648409f84a68b2561d","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-72185","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-72185","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 495e90fa334828d4119061e2726af51d0a0fb4ed b397b1238a217264bb02f963a1a1eadf71906375 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 495e90fa334828d4119061e2726af51d0a0fb4ed b8d6c528e9d57d263fee1a648409f84a68b2561d git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 7.1","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.1 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.1.5 7.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.2 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2026","cve_id":"72185","cve":"CVE-2026-72185","epss":"0.006260000","percentile":"0.470750000","score_date":"2026-08-17","updated_at":"2026-08-18 00:11:47"},"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["fs/ntfs/attrib.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"b397b1238a217264bb02f963a1a1eadf71906375","status":"affected","version":"495e90fa334828d4119061e2726af51d0a0fb4ed","versionType":"git"},{"lessThan":"b8d6c528e9d57d263fee1a648409f84a68b2561d","status":"affected","version":"495e90fa334828d4119061e2726af51d0a0fb4ed","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["fs/ntfs/attrib.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"7.1"},{"lessThan":"7.1","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"7.1.*","status":"unaffected","version":"7.1.5","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.2","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.1.5","versionStartIncluding":"7.1","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.2","versionStartIncluding":"7.1","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nntfs: fix WARN_ON for resident attribute in ntfs_map_runlist_nolock()\n\nWhen ntfs_map_runlist_nolock() needs to look up the attribute extent\ncontaining a target VCN (ctx_needs_reset == true), it calls\nntfs_attr_lookup() and then expects the result to be a non-resident\nattribute, since only non-resident attributes have a mapping pairs\narray to decompress.\n\nA crafted NTFS image can place a resident attribute where a non-resident\none is expected, causing ntfs_attr_lookup() to succeed but return a\nresident attribute record.  Previously this was caught only by a\nWARN_ON(), which does not stop execution.  The code then falls through to\nread a->data.non_resident.highest_vcn from what is actually a resident\nattribute, accessing the wrong union member and corrupting the VCN range\ncheck.\n\nThe caller path triggering this warning during mount is:\n\n  ntfs_map_runlist_nolock\n  ntfs_empty_logfile\n  load_system_files\n  ntfs_fill_super\n\nIn this path ctx is NULL, so ntfs_map_runlist_nolock() allocates a\ntemporary search context internally and sets ctx_needs_reset = true.\nThe existing resident-attribute guard in the ctx != NULL branch already\nreturns -EIO silently for the same condition; make the ctx_needs_reset\npath consistent by replacing the WARN_ON() with the same -EIO error\nreturn.\n\nThis causes the crafted image to be rejected with a mount error instead\nof triggering a kernel warning."}],"metrics":[{"cvssV3_1":{"baseScore":9.8,"baseSeverity":"CRITICAL","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","version":"3.1"},"scenarios":[{"lang":"en","value":"AV:N - The bug is in fs/ntfs runlist mapping reached from ntfs_fill_super→ntfs_empty_logfile on mount and from VFS read/iomap paths (ntfs_attr_vcn_to_rl→ntfs_map_runlist_nolock); when a classic NTFS volume is exported via ksmbd or nfsd, a remote client read triggers the same mapping code on the server without local shell access.\nAC:L - An attacker fully controls the crafted NTFS image: placing a resident $DATA extent where a non-resident one is expected makes ntfs_attr_lookup() succeed, bypasses the old WARN_ON-only guard, and deterministically drives the wrong union reads and mapping-pairs decompression with no races or victim-specific memory layout.\nPR:N - Exploitation needs only a malicious NTFS image and access to have it parsed—no root on the target—via udev/systemd automount of attacker USB media, CAP_SYS_ADMIN mount of a loop image, or a remote ksmbd/nfsd client with guest/anonymous read (or write) on an already-exported NTFS share.\nUI:N - Once the crafted volume is mounted (automounter, admin, or server export), a single attacker-initiated mount or remote file read that maps an affected non-resident extent triggers the bug; no further victim clicks, prompts, or confirmation are required beyond supplying the image.\nS:U - Union confusion and forged runlist handling corrupt kernel heap metadata and can issue attacker-influenced block-device writes within the same host OS security domain; impact is local privilege escalation or disk corruption, not VM/hypervisor, IOMMU, or container sandbox escape.\nC:H - WARN_ON does not stop execution; the code reads non_resident.highest_vcn and mapping_pairs_offset from a resident attribute union, then ntfs_mapping_pairs_decompress() scans attacker-controlled bytes as mapping pairs, yielding out-of-bounds kernel reads and disclosure/corruption primitives beyond a simple warning.\nI:H - Successful decompression installs an attacker-forged runlist; on rw mount ntfs_empty_logfile() uses those LCNs to write 0xff-filled clusters via ntfs_bdev_write() to arbitrary disk offsets, and heap runlist allocation from forged mapping pairs enables arbitrary kernel memory corruption and potential control-flow hijack.\nA:H - The vulnerable path continues after WARN_ON instead of returning -EIO, so malformed mapping-pair decompression and use of a corrupted runlist can provoke kernel warnings, I/O errors, oops, or panic during mount or subsequent NTFS I/O, causing high availability impact even when full exploitation is not attempted."}]}],"providerMetadata":{"dateUpdated":"2026-08-17T05:41:15.234Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/b397b1238a217264bb02f963a1a1eadf71906375"},{"url":"https://git.kernel.org/stable/c/b8d6c528e9d57d263fee1a648409f84a68b2561d"}],"title":"ntfs: fix WARN_ON for resident attribute in ntfs_map_runlist_nolock()","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-72185","datePublished":"2026-08-15T05:53:47.388Z","dateReserved":"2026-08-09T03:40:39.911Z","dateUpdated":"2026-08-17T05:41:15.234Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-08-15 06:21:36","lastModifiedDate":"2026-08-17 06:18:19","problem_types":[],"metrics":{"cvssMetricV31":[{"source":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","type":"Secondary","cvssData":{"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","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"HIGH","availabilityImpact":"HIGH"},"exploitabilityScore":3.9,"impactScore":5.9}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"72185","Ordinal":"1","Title":"ntfs: fix WARN_ON for resident attribute in ntfs_map_runlist_nol","CVE":"CVE-2026-72185","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"72185","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\nntfs: fix WARN_ON for resident attribute in ntfs_map_runlist_nolock()\n\nWhen ntfs_map_runlist_nolock() needs to look up the attribute extent\ncontaining a target VCN (ctx_needs_reset == true), it calls\nntfs_attr_lookup() and then expects the result to be a non-resident\nattribute, since only non-resident attributes have a mapping pairs\narray to decompress.\n\nA crafted NTFS image can place a resident attribute where a non-resident\none is expected, causing ntfs_attr_lookup() to succeed but return a\nresident attribute record.  Previously this was caught only by a\nWARN_ON(), which does not stop execution.  The code then falls through to\nread a->data.non_resident.highest_vcn from what is actually a resident\nattribute, accessing the wrong union member and corrupting the VCN range\ncheck.\n\nThe caller path triggering this warning during mount is:\n\n  ntfs_map_runlist_nolock\n  ntfs_empty_logfile\n  load_system_files\n  ntfs_fill_super\n\nIn this path ctx is NULL, so ntfs_map_runlist_nolock() allocates a\ntemporary search context internally and sets ctx_needs_reset = true.\nThe existing resident-attribute guard in the ctx != NULL branch already\nreturns -EIO silently for the same condition; make the ctx_needs_reset\npath consistent by replacing the WARN_ON() with the same -EIO error\nreturn.\n\nThis causes the crafted image to be rejected with a mount error instead\nof triggering a kernel warning.","Type":"Description","Title":"ntfs: fix WARN_ON for resident attribute in ntfs_map_runlist_nol"}]}}}