{"id":33440,"date":"2026-10-06T20:32:00","date_gmt":"2026-10-06T12:32:00","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98371"},"modified":"2026-10-06T20:32:00","modified_gmt":"2026-10-06T12:32:00","slug":"cve-2026-98371","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98371","title":{"rendered":"CVE-2026-98371 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nxfrm: iptfs: fix runt"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>xfrm: iptfs: fix runt reassembly panic from short inner tot_len<\/p>\n<p>When the start of an inner packet is split across two outer packets<br \/>\nsuch that fewer than 4 bytes land at the end of the first one,<br \/>\n__input_process_payload() saves those bytes as a runt and skips the<br \/>\niplen\/iphlen validation performed for in-place packets. When the<br \/>\ncontinuation packet arrives, iptfs_reassem_cont() only requires the<br \/>\ndeclared inner length to be &gt;= sizeof(ra_runt) (6) before allocating<br \/>\nthe reassembly skb with that attacker-controlled length.<\/p>\n<p>However, __iptfs_iphlen() always returns the fixed minimum IP header<br \/>\nsize (20 for IPv4, 40 for IPv6), so for an inner IPv4 tot_len in<br \/>\n[6, 19] the header-completion copy writes past the declared packet<br \/>\nlength, and the subsequent &#8220;ipremain -= copylen&#8221; underflows to ~4GB,<br \/>\nleaving the payload copy length bounded only by blkoff (up to 64KB).<br \/>\nAt runtime the skb_put() tailroom check turns this into<br \/>\nskb_over_panic(), i.e. an unprivileged kernel panic (DoS), reachable<br \/>\nlocally via userns+netns IPTFS SAs and remotely against IPTFS VPN<br \/>\ngateways when the decrypted outer skb is linear (e.g. AF_PACKET taps,<br \/>\ntun\/tap delivery).<\/p>\n<p>Align the runt path with the normal path by requiring the declared<br \/>\ninner length to cover at least the IP header size. This also subsumes<br \/>\nthe previous &gt;= sizeof(ra_runt) check, since the minimum IP header<br \/>\nis always larger than the runt buffer.<\/p>\n<p>This issue was found by the autokbug dynamic kernel fuzzer at<br \/>\nTencent Yunding Lab.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>xfrm: iptfs: fix runt reassembly panic from short inner tot_len<\/p>\n<p>When the start of an inner packet is split across two outer packet<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-33440","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/33440","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=33440"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=33440"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=33440"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}