CVE-2026-90016: staging: rtl8723bs: fix OOB read in rtw_restruct_wmm_ie()
In the Linux kernel, the following vulnerability has been resolved:
staging: rtl8723bs: fix OOB read in rtwrestructwmmie()
rtwrestructwmmie() scans inie for a WMM IE with:
while (i < inlen) { ... if (i + 5 < inlen && inie[i] == 0xDD && ...) { ... break; } i += (inie[i + 1] + 2); / to the next IE element / }
When the "i + 5 < inlen" match check fails simply because i is within 5 bytes of the end of the buffer (i.e. no WMM IE was found near the tail of inie), execution falls through to "i += (inie[i + 1] + 2)", which reads inie[i + 1]. If i == inlen - 1 at that point, this is a 1-byte out-of-bounds read of an attacker-influenced IE buffer built from association/scan data.
Commit a75281626fc8f ("staging: rtl8723bs: fix potential out-of-bounds read in rtwrestructwmmie") added the "i + 5 < inlen" guard to the match condition itself, but did not add an equivalent guard before the fallthrough advance, so the same class of OOB read remained reachable through the non-matching path.
Add an explicit bounds check before advancing to the next IE.
Affected Software
Event History
Frequently Asked Questions
Who can trigger the vulnerable parsing path?
An attacker able to supply attacker-influenced information-element data through Wi-Fi association or scan data can reach the affected parsing path. The issue is in the rtl8723bs staging driver.
What malformed input is needed to cause the out-of-bounds read?
The input must cause the WMM IE match to fail while the parser index is near the end of the IE buffer. In particular, when the index reaches the final byte, the non-matching path reads the following byte while advancing to the next IE element.
How can I determine whether a system has the fix?
Check whether the kernel source includes an explicit bounds check before rtw_restruct_wmm_ie() advances using in_ie[i + 1]. The referenced stable commits contain the remediation.