{"id":5344,"date":"2026-09-04T18:47:45","date_gmt":"2026-09-04T10:47:45","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-68136"},"modified":"2026-09-04T18:47:45","modified_gmt":"2026-09-04T10:47:45","slug":"cve-2026-68136","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-68136","title":{"rendered":"CVE-2026-68136 [CRITICAL] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nnet: gro: fix double"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>net: gro: fix double aggregation of flush-marked skbs<\/p>\n<p>Commit 0ab03f353d36 (&#8220;net-gro: Fix GRO flush when receiving a GSO<br \/>\npacket.&#8221;) added a flush check to skb_gro_receive(), but<br \/>\nskb_gro_receive_list() lacks the same validation.<\/p>\n<p>As a result, packets marked with NAPI_GRO_CB(skb)-&gt;flush may still be<br \/>\nre-aggregated.<\/p>\n<p>This allows already-GRO&#8217;d packets with existing frag_list to be<br \/>\nre-aggregated into a new GRO session, corrupting the frag_list chain<br \/>\nstructure. When skb_segment() attempts to unpack these malformed packets,<br \/>\nit encounters invalid state and triggers a kernel panic.<\/p>\n<p>Scenario (Tethering\/Device forwarding):<br \/>\n  1. Driver: Generated aggregated packet P1 via LRO with frag_list<br \/>\n  2. Dev A: Receives aggregated fraglist packet and flush flag set<br \/>\n  3. Dev A: Re-enters GRO, skb_gro_receive_list() is called<br \/>\n  4. Missing flush check allows re-aggregation despite flush flag<br \/>\n  5. Frag_list chain becomes corrupted (loops or dangling refs)<br \/>\n  6. Dev B: TX path calls skb_segment(), crashes on corrupted frag_list<\/p>\n<p>Root cause in skb_segment():<br \/>\n  The check at line ~4891:<br \/>\n    if (hsize = nfrags &amp;&amp; skb_headlen(list_skb) &amp;&amp;<br \/>\n        (skb_headlen(list_skb) == len || sg)) {<\/p>\n<p>  When frag_list is corrupted by double aggregation, when list_skb is<br \/>\n  a NULL pointer from skb-&gt;next, skb_headlen(list_skb) dereference<br \/>\n  NULL\/corrupted pointers occurs.<\/p>\n<p>Call Trace:<br \/>\n skb_headlen(NULL skb)<br \/>\n skb_segment<br \/>\n tcp_gso_segment<br \/>\n tcp4_gso_segment<br \/>\n inet_gso_segment<br \/>\n skb_mac_gso_segment<br \/>\n __skb_gso_segment<br \/>\n skb_gso_segment<br \/>\n validate_xmit_skb<br \/>\n validate_xmit_skb_list<br \/>\n sch_direct_xmit<br \/>\n qdisc_restart<br \/>\n __qdisc_run<br \/>\n qdisc_run<br \/>\n net_tx_action<\/p>\n<p>Fix: Add NAPI_GRO_CB(skb)-&gt;flush validation to the early-return check in<br \/>\nskb_gro_receive_list(), matching the defensive programming pattern of<br \/>\nskb_gro_receive().<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>net: gro: fix double aggregation of flush-marked skbs<\/p>\n<p>Commit 0ab03f353d36 (&#8220;net-gro: Fix GRO flush when receiving a GSO<br \/>\npacket.&#8221;) <\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-5344","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/5344","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=5344"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5344"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5344"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}