# CVE-2026-98711: wifi: cw1200: fix TX padding OOB read leaking heap data to device

> A malicious Wi-Fi device can read up to 511 bytes of kernel heap memory per transmission due to an out-of-bounds read in the cw1200 driver.

- **Severity:** Not scored
- **Exploited in the wild:** Not known
- **Login needed:** Not needed
- **Attackable:** Local or same network only
- **Victim action needed:** Not needed
- **Fix available:** Yes
- **Published:** 18 Oct 2026
- **Updated:** 21 Oct 2026
- **Also known as:** AZL-108893, BELL-CVE-2026-98711, DEBIAN-CVE-2026-98711, GHSA-rfqv-xwf2-63qv, UBUNTU-CVE-2026-98711

## What is CVE-2026-98711?

CVE-2026-98711 is a vulnerability in Linux, published on 18 Oct 2026. It can only be exploited from the same machine or local network, with no action from the victim.

### Official description

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

wifi: cw1200: fix TX padding OOB read leaking heap data to device

The TX path rounds the transfer size up to the bus alignment
(align_size(), up to 511 bytes for SDIO, 1 byte for SPI) but sends
the padded length straight from the frame buffer, which has no room
reserved for the padding.  cw1200_data_write() therefore reads past
the end of the frame and the bus transfer carries those bytes to the
device.  A bogus device can collect up to 511 bytes of kernel heap
data per TX frame.

The RX path does not have this problem: it allocates the skb with
the aligned length (alloc_len) before reading.

Compute the exact padding with the bus align_size() callback, make
sure queued TX frames have tailroom for it, and zero the padding
bytes before the transfer so nothing past the frame is exposed.

This is not expected to change driver behavior on most cases: frame
contents and transfer sizes are unchanged, only the content of the
padding bytes (previously undefined stale memory, now zero), which
the device never reads since the WSM header carries the real frame
length.  The skb expansion can only fail under memory exhaustion,
in which case the frame is dropped like on the existing error paths
of cw1200_tx().

Discovered by Atuin - Automated Vulnerability Discovery Engine.

## Which versions are affected by CVE-2026-98711?


## How do I fix CVE-2026-98711?

Apply the vendor's patch.

## Is CVE-2026-98711 being exploited?

There is no known exploitation of CVE-2026-98711 in the wild and no public exploit code.

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2026-98711 and fix it if it is affected.

What it is: CVE-2026-98711 is a vulnerability in Linux, published on 18 Oct 2026. It can only be exploited from the same machine or local network, with no action from the victim.
Exploitation: There is no known exploitation of CVE-2026-98711 in the wild and no public exploit code.

Affected product: Linux. No package-level version data is available, so check the vendor advisory linked from the reference page.

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2026-98711/ (Markdown: https://insights.sbomify.com/CVE-2026-98711/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2026-98711
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-98711
- OSV: https://osv.dev/vulnerability/CVE-2026-98711

---
From sbomify Insights: https://insights.sbomify.com/CVE-2026-98711/
Summaries are generated and may contain mistakes; the official description above is the record.
