{"id":33441,"date":"2026-10-06T20:32:00","date_gmt":"2026-10-06T12:32:00","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98372"},"modified":"2026-10-06T20:32:00","modified_gmt":"2026-10-06T12:32:00","slug":"cve-2026-98372","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98372","title":{"rendered":"CVE-2026-98372 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nxfrm: iptfs: fix stac"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>xfrm: iptfs: fix stack OOB read in iptfs_skb_reset_frag_walk()<\/p>\n<p>iptfs_skb_reset_frag_walk() advances to the fragment containing @offset<br \/>\nwith an unbounded loop:<\/p>\n<p>\twhile (offset &gt;= walk-&gt;past + walk-&gt;frags[walk-&gt;fragi].len)<br \/>\n\t\twalk-&gt;past += walk-&gt;frags[walk-&gt;fragi++].len;<\/p>\n<p>walk-&gt;fragi is advanced and walk-&gt;frags[walk-&gt;fragi] is dereferenced<br \/>\nwithout ever checking fragi against walk-&gt;nr_frags. When the requested<br \/>\noffset is at or beyond the total length spanned by the walk&#8217;s fragments,<br \/>\nfragi runs past nr_frags and off the end of the fixed-size on-stack<br \/>\nfrags[MAX_SKB_FRAGS + 1] array, reading out-of-bounds stack memory.<\/p>\n<p>The two callers behave differently: iptfs_skb_add_frags() already guards<br \/>\nagainst this with<\/p>\n<p>\tif (!walk-&gt;nr_frags ||<br \/>\n\t    offset &gt;= walk-&gt;total + walk-&gt;initial_offset)<br \/>\n\t\treturn len;<\/p>\n<p>but iptfs_skb_can_add_frags() has no such guard and calls<br \/>\niptfs_skb_reset_frag_walk() unconditionally, so it performs the<br \/>\nout-of-range walk. Its own &#8220;fragi nr_frags&#8221; bound check runs only<br \/>\nafterwards, too late to prevent the read.<\/p>\n<p>This is reachable from the receive path: a crafted IP-TFS (AGGFRAG)<br \/>\npayload delivered to an IPTFS SA drives iptfs_reassem_cont() -&gt;<br \/>\niptfs_skb_can_add_frags() with an offset past the fragment total, e.g.:<\/p>\n<p>  BUG: KASAN: stack-out-of-bounds in iptfs_skb_reset_frag_walk+0x235\/0x250<br \/>\n  Read of size 4 at addr ffff888008ad7210 by task repro\/345<br \/>\n   iptfs_skb_reset_frag_walk+0x235\/0x250 net\/xfrm\/xfrm_iptfs.c:392<br \/>\n   iptfs_skb_can_add_frags+0x155\/0x310  net\/xfrm\/xfrm_iptfs.c:420<br \/>\n   iptfs_reassem_cont+0xcf8\/0x1140      net\/xfrm\/xfrm_iptfs.c:902<br \/>\n   iptfs_input_ordered+0x552\/0x670      net\/xfrm\/xfrm_iptfs.c:1280<br \/>\n   iptfs_input+0x3d6\/0xde0              net\/xfrm\/xfrm_iptfs.c:1741<br \/>\n   xfrm_input+0x282f\/0x6140             net\/xfrm\/xfrm_input.c:700<br \/>\n   xfrm4_esp_rcv+0x93\/0x120             net\/ipv4\/xfrm4_protocol.c:104<br \/>\n   ip_rcv+0x278\/0x2d0                   net\/ipv4\/ip_input.c:612<\/p>\n<p>Give iptfs_skb_can_add_frags() the same up-front guard that<br \/>\niptfs_skb_add_frags() already has, so the walk is never entered with an<br \/>\nout-of-range offset. When it triggers, the caller falls back to the<br \/>\nexisting linearize-and-copy path, which is safe.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>xfrm: iptfs: fix stack OOB read in iptfs_skb_reset_frag_walk()<\/p>\n<p>iptfs_skb_reset_frag_walk() advances to the fragment containing @of<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-33441","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/33441","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=33441"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=33441"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=33441"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}