CVE-2026-74488: wifi: mwifiex: use the subframe length when parsing A-MSDU TDLS frames

Published Aug 15, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

wifi: mwifiex: use the subframe length when parsing A-MSDU TDLS frames

mwifiex11ndispatchamsdupkt() splits an A-MSDU with ieee80211amsduto8023s() and walks the resulting subframes. For each subframe it passes the subframe data pointer to mwifiexprocesstdlsactionframe(), but pairs it with skb->len, the length of the A-MSDU parent, instead of rxskb->len:

rxskb = skbdequeue(&list); rxhdr = (struct rxpackethdr )rxskb->data; if (ISSUPPTDLSENABLED(priv->adapter->fwcapinfo) && ntohs(rxhdr->eth803hdr.hproto) == ETHPTDLS) { mwifiexprocesstdlsactionframe(priv, (u8 )rxhdr, skb->len); }

The parent is not a valid description of that buffer, and may not be valid memory at all. ieee80211amsduto8023s() ends with

if (!reuseskb) devkfreeskb(skb);

and it only sets reuseskb when the parent is linear, is not a headfrag, 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->len is a use-after-free. When it is reused, skb->len is the length of the last subframe, applied to every earlier subframe, which over-states the buffer whenever an earlier subframe is shorter.

The callee cannot absorb a wrong length, because it derives its own ceiling from the value it is given. Each frame type computes

ieslen = len - sizeof(struct ethhdr) - TDLSFIXLEN;

and the element walk is then bounded entirely against that ceiling,

for (end = pos + ieslen; pos + 1 < end; pos += 2 + pos[1]) { u8 ielen = pos[1];

if (pos + 2 + ielen > end) break;

so a too-large len moves end past the end of the subframe and the walk reads and copies beyond it. The A-MSDU layout is chosen by the sender, which makes the difference between the last subframe and a shorter earlier one remotely selectable. Reaching this requires TDLS support in firmware and the TDLS ethertype on the subframe.

The other caller, mwifiexprocessrxpacket(), is correct: it passes a pointer and a length that describe the same region of the RX buffer.

Pass rxskb->len, the length of the subframe actually being parsed.

Affected Software

1 affected component
Linux Linux kernel

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade Linux kernel to a version that resolves this vulnerability.

    Patch Pass rx_skb->len, the length of the subframe actually being parsed.

Event History

Aug 15, 2026
CVE Published
via MITRE·12:27 PM
Data Sourced
via MITRE·12:27 PM
Description
Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is the severity of CVE-2026-74488?

The severity of CVE-2026-74488 is rated at 57.

2

How do I fix CVE-2026-74488?

To fix CVE-2026-74488, update your Linux kernel to the latest version where this vulnerability is addressed.

3

What type of vulnerability is CVE-2026-74488?

CVE-2026-74488 is classified as a Use After Free vulnerability.

4

Which software is affected by CVE-2026-74488?

CVE-2026-74488 affects the Linux kernel, specifically related to the mwifiex driver.

5

When was CVE-2026-74488 published?

CVE-2026-74488 was published on August 15, 2026.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203