<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-09-30T10:00:33.140918+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/cve-2026-74488</id>
    <title>CVE-2026-74488 — wifi: mwifiex: use the subframe length when parsing A-MSDU TDLS frames</title>
    <updated>2026-09-30T10:00:33.233938+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Linux</p>
<p>In the Linux kernel, the following vulnerability has been resolved:</p>
<p>wifi: mwifiex: use the subframe length when parsing A-MSDU TDLS frames</p>
<p>mwifiex_11n_dispatch_amsdu_pkt() splits an A-MSDU with
ieee80211_amsdu_to_8023s() and walks the resulting subframes. For each
subframe it passes the subframe data pointer to
mwifiex_process_tdls_action_frame(), but pairs it with skb-&gt;len, the
length of the A-MSDU parent, instead of rx_skb-&gt;len:</p>
<p>rx_skb = __skb_dequeue(&amp;list);
	rx_hdr = (struct rx_packet_hdr *)rx_skb-&gt;data;
	if (ISSUPP_TDLS_ENABLED(priv-&gt;adapter-&gt;fw_cap_info) &amp;&amp;
	    ntohs(rx_hdr-&gt;eth803_hdr.h_proto) == ETH_P_TDLS) {
		mwifiex_process_tdls_action_frame(priv, (u8 *)rx_hdr,
						  skb-&gt;len);
	}</p>
<p>The parent is not a valid description of that buffer, and may not be
valid memory at all. ieee80211_amsdu_to_8023s() ends with</p>
<p>if (!reuse_skb)
		dev_kfree_skb(skb);</p>
<p>and it only sets reuse_skb when the parent is linear, is not a
head_frag, and is being consumed as the *last* subframe. So when the
parent does not qualify for reuse it has already been freed, and the
read of skb-&gt;len is a use-after-free. When it is reused, skb-&gt;len is
the length of the last subframe, applied to every earlier subframe,
which over-states the buffer whenever an earlier subframe is shorter.</p>
<p>The callee cannot absorb a wrong length, because it derives its own
ceiling from the value it is given. Each frame type computes</p>
<p>ies_len = len - sizeof(struct ethhdr) - TDLS_*_FIX_LEN;</p>
<p>and the element walk is t…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/cve-2026-74488"/>
  </entry>
</feed>
