{"id":29251,"date":"2026-09-25T20:32:15","date_gmt":"2026-09-25T12:32:15","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98096"},"modified":"2026-09-25T20:32:15","modified_gmt":"2026-09-25T12:32:15","slug":"cve-2026-98096","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98096","title":{"rendered":"CVE-2026-98096 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nipv6: sr: restore net"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ipv6: sr: restore network header before routing and forwarding<\/p>\n<p>ipv6_srh_rcv() runs with skb-&gt;data at the Segment Routing Header (SRH)<br \/>\nwhile skb_network_header() points at the IPv6 header.<\/p>\n<p>When segments_left &gt; 0, ipv6_srh_rcv() previously restored the skb-&gt;data<br \/>\nposition by pushing sizeof(struct ipv6hdr), assuming the SRH immediately<br \/>\nfollowed the fixed IPv6 header. If another extension header (such as a<br \/>\nHop-by-Hop options header) precedes the SRH, skb_network_offset()<br \/>\nremained negative.<\/p>\n<p>This led to two problems:<br \/>\n1. During ip6_route_input(), fib6_rules_early_flow_dissect() invokes<br \/>\n   __skb_flow_dissect() which passes the negative skb_network_offset()<br \/>\n   to flow dissection, breaking BPF and C flow dissector logic.<br \/>\n2. If forwarded via ip6_forward() or redirected via act_mirred, downstream<br \/>\n   handlers (like sch_fragment() or neighbour output) pass the negative<br \/>\n   offset as an unsigned length, triggering OOB memcpy or buffer overflows.<\/p>\n<p>Fix this by pushing -skb_network_offset(skb) before routing, ensuring<br \/>\nskb_network_offset(skb) is 0 for route lookup \/ flow dissection as well as<br \/>\ndownstream forwarding. On the loopback path, pull skb_transport_offset(skb)<br \/>\nto restore skb-&gt;data to the SRH before looping back.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>ipv6: sr: restore network header before routing and forwarding<\/p>\n<p>ipv6_srh_rcv() runs with skb-&gt;data at the Segment Routing Header (S<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-29251","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/29251","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=29251"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=29251"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=29251"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}