{"id":41301,"date":"2026-10-19T00:33:06","date_gmt":"2026-10-18T16:33:06","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98829"},"modified":"2026-10-19T00:33:06","modified_gmt":"2026-10-18T16:33:06","slug":"cve-2026-98829","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98829","title":{"rendered":"CVE-2026-98829 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: mac80211: drop"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>wifi: mac80211: drop oversized fragments to avoid extra_len overflow<\/p>\n<p>In ieee80211_rx_h_defragment(), fragment payloads are accumulated into<br \/>\nentry-&gt;extra_len as subsequent fragments arrive:<\/p>\n<p>        entry-&gt;extra_len += rx-&gt;skb-&gt;len;<\/p>\n<p>When the final fragment arrives, the head fragment is dequeued, and<br \/>\npskb_expand_head() is called with entry-&gt;extra_len to ensure sufficient<br \/>\ntailroom for all queued fragments before copying:<\/p>\n<p>        if (skb_tailroom(rx-&gt;skb) extra_len) {<br \/>\n                if (unlikely(pskb_expand_head(rx-&gt;skb, 0, entry-&gt;extra_len,<br \/>\n                                              GFP_ATOMIC))) {<br \/>\n                        &#8230;<br \/>\n                }<br \/>\n        }<br \/>\n        while ((skb = __skb_dequeue(&amp;entry-&gt;skb_list))) {<br \/>\n                skb_put_data(rx-&gt;skb, skb-&gt;data, skb-&gt;len);<br \/>\n                dev_kfree_skb(skb);<br \/>\n        }<\/p>\n<p>In commit 69f132236827 (&#8220;mac80211: shrink struct<br \/>\nieee80211_fragment_entry&#8221;), entry-&gt;extra_len was narrowed from unsigned<br \/>\nint to u16 in order to reduce structure memory footprint.<\/p>\n<p>However, an IEEE 802.11 frame sequence can contain up to 16 fragments<br \/>\n(frag numbers 0..15). If a sequence of large fragments arrives (e.g. from<br \/>\na malicious peer or rogue AP), the sum of fragment lengths can exceed<br \/>\n65535 bytes (for example, 15 fragments of 4400 bytes total 66000 bytes).<br \/>\nBecause extra_len is a u16, this addition overflows and wraps around<br \/>\nmodulo 65536 (e.g. 66000 wraps to 464).<\/p>\n<p>Consequently, pskb_expand_head() allocates only the truncated amount of<br \/>\ntailroom (or is skipped entirely if the head fragment already has &gt;= 464<br \/>\nbytes of tailroom). When skb_put_data() subsequently iterates through the<br \/>\nqueued skb list, it appends the full payload into the undersized buffer,<br \/>\ncausing skb_put() to trigger skb_over_panic() and crash the kernel in<br \/>\nsoftirq context.<\/p>\n<p>A legitimate MSDU in IEEE 802.11 is at most 2304 bytes (or up to 7935\/11454<br \/>\nbytes for A-MSDU, which is not fragmented), well below U16_MAX.<\/p>\n<p>Fix this without increasing the size of struct ieee80211_fragment_entry by<br \/>\nchecking whether adding the incoming fragment length would exceed U16_MAX.<br \/>\nIf so, purge the queued fragments and drop the frame.<\/p>\n<p>[assign a separate drop reason]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>wifi: mac80211: drop oversized fragments to avoid extra_len overflow<\/p>\n<p>In ieee80211_rx_h_defragment(), fragment payloads are accumul<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-41301","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/41301","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=41301"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=41301"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=41301"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}