KernelScan.io

HIGH Introduced in 4.12

rtl8723bs WpsAttr Overflow

CVE-2026-90018

CVSS 8.8 / 10.0 NVD

CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

KernelScan AI8.7HIGH

01

In the Linux kernel, the following vulnerability has been resolved: staging: rtl8723bs: fix OOB read / stack overflow in rtw_get_wps_attr() rtw_get_wps_attr() walks WPS attributes inside a WPS IE taken from a wireless management frame. For each candidate attribute it only checks that the fixed 4-byte attribute header (2-byte ID + 2-byte length) fits inside the IE: if (attr_ptr + 4 > wps_ie + wps_ielen) break; u16 attr_id = get_unaligned_be16(attr_ptr); u16 attr_data_len = get_unaligned_be16(attr_ptr + 2); u16 attr_len = attr_data_len + 4; attr_data_len (and therefore attr_len) is read directly from the wire and is never checked against the remaining bytes in the IE before being used as the size of: memcpy(buf_attr, attr_ptr, attr_len); Since attr_len is fully attacker controlled (0 to 65535+4), this is both a heap OOB read of wps_ie, and, more seriously, a stack buffer overflow at several call sites where buf_attr is a single-byte stack variable, e.g. rtw_get_wps_attr_content()'s callers passing WPS_ATTR_SELECTED_REGISTRAR into a stack "u8 sr"/"u8 selected_registrar" (drivers/staging/rtl8723bs/os_dep/ioctl_cfg80211.c, drivers/staging/rtl8723bs/core/rtw_mlme_ext.c). A crafted WPS IE in a beacon or probe response processed during scanning can therefore smash the stack of the parsing thread. rtw_get_wps_attr_content() itself has no independent length check and simply trusts the attr_len it gets back from rtw_get_wps_attr(), so fixing the bound here also fixes that caller. The "attr_ptr + 4 > wps_ie + wps_ielen" header check above was added by commit 1463ca3ec6601 ("staging: rtl8723bs: fix OOB reads in rtw_get_sec_ie(), rtw_get_wapi_ie(), and rtw_get_wps_attr()"), which bounded the fixed header but never extended the check to cover the variable-length attribute data that follows it. Add that missing check before attr_len is used as a memcpy() length or accepted as a match.

02

Engine v0.6.0

Risk summary

A nearby attacker can exploit a missing length validation in the rtl8723bs WiFi driver's WPS attribute parser to trigger a stack buffer overflow by sending crafted WiFi beacon or probe response frames. The overflow corrupts the kernel stack of the scanning thread, potentially enabling remote code execution or a kernel panic. Any device with this WiFi driver active and within wireless range of an attacker is at risk; no authentication or user interaction is required.

Affecteddrivers/staging/rtl8723bs/core/rtw_ieee80211.c (rtl8723bs WiFi driver)

Vulnerability analysis

The rtl8723bs WiFi driver parses WPS attributes from wireless management frames using a length field read directly from the frame data without checking it against the remaining bytes in the Information Element. This attacker-controlled length is then passed to a memory copy into a small stack buffer at several call sites, causing a stack buffer overflow that can corrupt the kernel stack of the thread processing the frame. The fix adds a bounds check that rejects any attribute whose claimed length extends past the end of the IE before that length is used. The vulnerable path is reached when the driver processes a crafted WPS IE in a beacon or probe response during WiFi scanning — any device within wireless range can trigger it with no authentication or user interaction, provided the rtl8723bs driver is loaded and the WiFi interface is active.

03

BranchIntroducedFixed inPatch commit
6.14.126.1.1883a6457ebf390
5.154.125.15.221931640dfcb8c
6.64.126.6.157fd5e24ea8373
7.24.127.2.534f51d196c43
mainline4.127.3-rc299aa998dec83
6.124.126.12.110a53d1ac9ce63
6.184.126.18.51ff61aa328935
cip/6.124.126.12.111-cip32a53d1ac9ce63