{"id":8760,"date":"2026-09-04T18:50:04","date_gmt":"2026-09-04T10:50:04","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-74488-2"},"modified":"2026-09-04T18:50:04","modified_gmt":"2026-09-04T10:50:04","slug":"cve-2026-74488-2","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-74488-2","title":{"rendered":"CVE-2026-74488 [HIGH] &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: mwifiex: use th"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>wifi: mwifiex: use the subframe length when parsing A-MSDU TDLS frames<\/p>\n<p>mwifiex_11n_dispatch_amsdu_pkt() splits an A-MSDU with<br \/>\nieee80211_amsdu_to_8023s() and walks the resulting subframes. For each<br \/>\nsubframe it passes the subframe data pointer to<br \/>\nmwifiex_process_tdls_action_frame(), but pairs it with skb-&gt;len, the<br \/>\nlength of the A-MSDU parent, instead of rx_skb-&gt;len:<\/p>\n<p>\trx_skb = __skb_dequeue(&amp;list);<br \/>\n\trx_hdr = (struct rx_packet_hdr *)rx_skb-&gt;data;<br \/>\n\tif (ISSUPP_TDLS_ENABLED(priv-&gt;adapter-&gt;fw_cap_info) &amp;&amp;<br \/>\n\t    ntohs(rx_hdr-&gt;eth803_hdr.h_proto) == ETH_P_TDLS) {<br \/>\n\t\tmwifiex_process_tdls_action_frame(priv, (u8 *)rx_hdr,<br \/>\n\t\t\t\t\t\t  skb-&gt;len);<br \/>\n\t}<\/p>\n<p>The parent is not a valid description of that buffer, and may not be<br \/>\nvalid memory at all. ieee80211_amsdu_to_8023s() ends with<\/p>\n<p>\tif (!reuse_skb)<br \/>\n\t\tdev_kfree_skb(skb);<\/p>\n<p>and it only sets reuse_skb when the parent is linear, is not a<br \/>\nhead_frag, and is being consumed as the *last* subframe. So when the<br \/>\nparent does not qualify for reuse it has already been freed, and the<br \/>\nread of skb-&gt;len is a use-after-free. When it is reused, skb-&gt;len is<br \/>\nthe length of the last subframe, applied to every earlier subframe,<br \/>\nwhich over-states the buffer whenever an earlier subframe is shorter.<\/p>\n<p>The callee cannot absorb a wrong length, because it derives its own<br \/>\nceiling from the value it is given. Each frame type computes<\/p>\n<p>\ties_len = len &#8211; sizeof(struct ethhdr) &#8211; TDLS_*_FIX_LEN;<\/p>\n<p>and the element walk is then bounded entirely against that ceiling,<\/p>\n<p>\tfor (end = pos + ies_len; pos + 1  end)<br \/>\n\t\t\tbreak;<\/p>\n<p>so a too-large len moves end past the end of the subframe and the walk<br \/>\nreads and copies beyond it. The A-MSDU layout is chosen by the sender,<br \/>\nwhich makes the difference between the last subframe and a shorter<br \/>\nearlier one remotely selectable. Reaching this requires TDLS support in<br \/>\nfirmware and the TDLS ethertype on the subframe.<\/p>\n<p>The other caller, mwifiex_process_rx_packet(), is correct: it passes a<br \/>\npointer and a length that describe the same region of the RX buffer.<\/p>\n<p>Pass rx_skb-&gt;len, the length of the subframe actually being parsed.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>wifi: mwifiex: use the subframe length when parsing A-MSDU TDLS frames<\/p>\n<p>mwifiex_11n_dispatch_amsdu_pkt() splits an A-MSDU with<br \/>\nieee<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-8760","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/8760","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=8760"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8760"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8760"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}