{"id":6823,"date":"2026-09-04T18:49:18","date_gmt":"2026-09-04T10:49:18","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72191"},"modified":"2026-09-04T18:49:18","modified_gmt":"2026-09-04T10:49:18","slug":"cve-2026-72191","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72191","title":{"rendered":"CVE-2026-72191 [CRITICAL] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nntfs3: validate split"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ntfs3: validate split-point offset in indx_insert_into_buffer<\/p>\n<p>indx_insert_into_buffer() computes<\/p>\n<p>    used = used1 &#8211; to_copy &#8211; sp_size;<br \/>\n    memmove(de_t, Add2Ptr(sp, sp_size), used &#8211; le32_to_cpu(hdr1-&gt;de_off));<\/p>\n<p>where sp and sp_size come from hdr_find_split().  hdr_find_split()<br \/>\nwalks entries by le16_to_cpu(e-&gt;size) without validating that each<br \/>\nstep stays within hdr-&gt;used or that the size field is at least<br \/>\nsizeof(struct NTFS_DE).  index_hdr_check(), the on-load gatekeeper,<br \/>\nonly validates header-level fields (used, total, de_off) and does<br \/>\nnot walk per-entry sizes.<\/p>\n<p>A crafted NTFS image whose leaf INDEX_HDR reports used == total but<br \/>\ncontains one interior NTFS_DE with size = 0xFFF0 therefore passes<br \/>\nvalidation, descends to indx_insert_into_buffer() through the<br \/>\nntfs_create() -&gt; indx_insert_entry() path, and makes hdr_find_split()<br \/>\nreturn an sp whose sp_size (0xFFF0) greatly exceeds the remaining<br \/>\nbytes in the buffer.  The u32 subtraction underflows and the memmove<br \/>\ncount becomes a near-4-GiB value, producing an out-of-bounds kernel<br \/>\nwrite that corrupts adjacent allocations and panics the kernel.<\/p>\n<p>Reproduced on 7.0.0-rc7 with UML + KASAN via a crafted image and a<br \/>\nsingle &#8216;touch&#8217; inside the mounted directory; crash site resolves to<br \/>\nfs\/ntfs3\/index.c at the memmove.  Trigger requires only local mount<br \/>\nof an attacker-supplied filesystem image (USB, loopback, or removable<br \/>\nmedia auto-mount).<\/p>\n<p>Reject the split whenever the chosen sp plus its declared size<br \/>\nalready extends past hdr1-&gt;used.  This is the minimal fix; it<br \/>\npreserves the existing hdr_find_split() contract and relies on the<br \/>\nsame out: cleanup path as the pre-existing error returns.<\/p>\n<p>A prior OOB read in the very same indx_insert_into_buffer() memmove<br \/>\nwas fixed in commit b8c44949044e (&#8220;fs\/ntfs3: Fix OOB read in<br \/>\nindx_insert_into_buffer&#8221;) by tightening hdr_find_e(), but that fix<br \/>\ndoes not cover the split-point size field path addressed here: sp is<br \/>\nreturned by hdr_find_split(), not hdr_find_e(), and the underflow is<br \/>\ndriven by sp-&gt;size rather than hdr-&gt;used exceeding hdr-&gt;total.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ntfs3: validate split-point offset in indx_insert_into_buffer<\/p>\n<p>indx_insert_into_buffer() computes<\/p>\n<p>    used = used1 &#8211; to_copy &#8211; sp_<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-6823","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/6823","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6823"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6823"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6823"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}