{"id":6839,"date":"2026-09-04T18:49:19","date_gmt":"2026-09-04T10:49:19","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72209"},"modified":"2026-09-04T18:49:19","modified_gmt":"2026-09-04T10:49:19","slug":"cve-2026-72209","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-72209","title":{"rendered":"CVE-2026-72209 [CRITICAL] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nntfs: validate attrib"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ntfs: validate attribute values on lookup<\/p>\n<p>ntfs_attr_find() and ntfs_external_attr_find() check that generic<br \/>\nresident attribute values fit in their attribute records and that<br \/>\nfixed-size resident values are large enough. For variable-length resident<br \/>\nformats, however, the fixed part is not enough: embedded length fields<br \/>\ncan still point callers past the resident value.<\/p>\n<p>A crafted image can set a small resident $FILE_NAME value_length while<br \/>\nleaving file_name_length large. Callers then trust file_name_length and<br \/>\nread past the resident value when converting or comparing the name. This<br \/>\nwas reproduced with a crafted image under KASAN as a slab-out-of-bounds<br \/>\nread from the kmalloc-1k MFT record copy. The stack included<br \/>\nntfs_lookup(), ntfs_iget(), ntfs_read_locked_inode(), ntfs_attr_name_get(),<br \/>\nntfs_ucstonls(), and utf16s_to_utf8s().<\/p>\n<p>Add a shared attribute value validator and use it before a lookup path<br \/>\ncan return an attribute, including the AT_UNUSED enumeration case where<br \/>\ncallers inspect returned attributes directly. The helper validates<br \/>\nresident value bounds, minimum resident value sizes, variable-length<br \/>\n$FILE_NAME fields, and non-resident mapping-pairs metadata that was<br \/>\npreviously checked separately in both lookup paths.<\/p>\n<p>This also preserves the intended resident @val matching semantics in the<br \/>\nexternal attribute lookup path. The old duplicated validation block<br \/>\noverwrote the actual resident value length with the type-specific minimum<br \/>\nlength before comparing @val, so variable-length resident values could<br \/>\nfail to match even when the bytes were identical. Keep the comparison on<br \/>\nthe actual value length, and make ntfs_attrlist_entry_add() compare<br \/>\nresident attributes with lowest_vcn zero instead of reading the<br \/>\nnon-resident union member after a successful resident match.<\/p>\n<p>Reject non-resident $FILE_NAME records too: the format requires<br \/>\n$FILE_NAME to be resident and callers treat returned records as resident.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ntfs: validate attribute values on lookup<\/p>\n<p>ntfs_attr_find() and ntfs_external_attr_find() check that generic<br \/>\nresident attribute val<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-6839","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/6839","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=6839"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6839"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6839"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}