CVE-2026-89524
nicheKernel heap info leak in Linux ath6kl Wi-Fi driver via assoc length underflow
The Linux kernel's ath6kl wireless driver (for Qualcomm Atheros AR600x chipsets) fails to clamp association request/response lengths before subtracting fixed IE offsets in ath6kl_cfg80211_connect_event(). When a malicious or rogue access point delivers an association request shorter than 4 bytes or a response shorter than 6 bytes, the u8 length underflows to roughly 250, and cfg80211_connect_result()/cfg80211_roamed() then copy that many bytes out of the small assoc_info buffer to userspace via nl80211, disclosing adjacent kernel slab memory. The CVSS 8.1 score reflects adjacent-network attack requirements with no privileges or user interaction needed, and high impact on both confidentiality and availability. Only systems actually running the ath6kl driver (typically older embedded, IoT, and mobile-style devices with AR6003/AR6004 SDIO/USB Wi-Fi) are exposed; mainstream servers and desktops are unaffected. The flaw was found by automated source analysis (0sec.ai), is not in the CISA KEV catalog, and has no public PoC or known exploitation.
What to do: Apply a kernel update containing the length-clamping fix as soon as your distribution or vendor ships it (or backport the upstream commit). Because exploitation requires the victim to associate with an attacker-influenced access point, restrict legacy ath6kl devices to trusted/enterprise Wi-Fi networks and use 802.1X where feasible. On systems that do not use AR600x Wi-Fi, blacklist or unload the ath6kl module to eliminate the code path entirely.
| Linux kernel (ath6kl Wi-Fi driver) | — |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
In the Linux kernel, the following vulnerability has been resolved: wifi: ath6kl: clamp assoc request/response lengths before subtracting IE offsets ath6kl_cfg80211_connect_event() subtracts fixed IE offsets from assoc_req_len (-= 4) and assoc_resp_len (-= 6), both u8, with no lower bound. The aggregate check recently added to ath6kl_wmi_connect_event_rx() bounds the declared lengths from above (their sum must fit the received event), but an assoc request/response shorter than its fixed offset still underflows here: the u8 wraps to ~250, and cfg80211_connect_result() / cfg80211_roamed() then treat that wrapped value as the IE length and copy that many bytes out of the small assoc_info buffer to user space via nl80211, disclosing adjacent slab memory. Clamp both lengths to their offsets before subtracting. Found by 0sec (https://0sec.ai) using automated source analysis; the missing lower bound is evident from source. Compile-tested.
- Vector
- CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H
In the news0 stories
No ingested article mentions this CVE yet.