CVE-2026-64445: staging: rtl8723bs: fix WEP length underflow and OOB read in OnAuth()

Greg Kroah-Hartman <[email protected]> Sat, 25 Jul 2026 10:51:02 +0200
Newsgroups org.kernel.vger.linux-cve-announce
Message-ID <2026072539-CVE-2026-64445-2324@gregkh>
From: Greg Kroah-Hartman <[email protected]>

Description
===========

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

staging: rtl8723bs: fix WEP length underflow and OOB read in OnAuth()

OnAuth() has two bugs in the shared-key authentication path.

When the Privacy bit is set, rtw_wep_decrypt() is called without
verifying that the frame is long enough to contain a valid WEP IV and
ICV.  Inside rtw_wep_decrypt(), length is computed as:

    length = len - WLAN_HDR_A3_LEN - iv_len

and then passed as (length - 4) to crc32_le().  If len is less than
WLAN_HDR_A3_LEN + iv_len + icv_len (32 bytes), length - 4 is negative
and, after the implicit cast to size_t, causes crc32_le() to read far
beyond the frame buffer.  Add a minimum length check before accessing
the IV field and calling the decryption path.

When processing a seq=3 response, rtw_get_ie() stores the Challenge
Text IE length in ie_len, but the subsequent memcmp() always reads 128
bytes regardless of ie_len.  IEEE 802.11 mandates a challenge text of
exactly 128 bytes; reject any IE whose length field differs, matching
the check already applied to OnAuthClient().

The Linux kernel CVE team has assigned CVE-2026-64445 to this issue.


Affected and fixed versions
===========================

	Issue introduced in 4.12 with commit 554c0a3abf216c991c5ebddcdb2c08689ecd290b and fixed in 5.10.261 with commit 665e1ecb68b4e8419604e70a33f02d1c8b0222c6
	Issue introduced in 4.12 with commit 554c0a3abf216c991c5ebddcdb2c08689ecd290b and fixed in 5.15.212 with commit 87cccc2a767f17dcab71e3b9fe5ae29b5516c5ce
	Issue introduced in 4.12 with commit 554c0a3abf216c991c5ebddcdb2c08689ecd290b and fixed in 6.1.178 with commit c9000c93078e5c0a5a651b077c0ec92a4bc7d580
	Issue introduced in 4.12 with commit 554c0a3abf216c991c5ebddcdb2c08689ecd290b and fixed in 6.6.145 with commit 1f6c9d255bdda41216b6e34c96aa2b1abee0bb84
	Issue introduced in 4.12 with commit 554c0a3abf216c991c5ebddcdb2c08689ecd290b and fixed in 6.12.96 with commit 3e44a7665f3abd320a80d9c64ee4a93317041b8b
	Issue introduced in 4.12 with commit 554c0a3abf216c991c5ebddcdb2c08689ecd290b and fixed in 6.18.39 with commit 64ec4192d9c10e96922245d4a6747304cc76b19d
	Issue introduced in 4.12 with commit 554c0a3abf216c991c5ebddcdb2c08689ecd290b and fixed in 7.1.4 with commit d90b9f39f375c9826ef145605dfe97765d0ecb91
	Issue introduced in 4.12 with commit 554c0a3abf216c991c5ebddcdb2c08689ecd290b and fixed in 7.2-rc3 with commit a1fc19d61f661d47204f095b593de507884849f7

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2026-64445
will be updated if fixes are backported, please check that for the most
up to date information about this issue.


Affected files
==============

The file(s) affected by this issue are:
	drivers/staging/rtl8723bs/core/rtw_mlme_ext.c


Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/665e1ecb68b4e8419604e70a33f02d1c8b0222c6
	https://git.kernel.org/stable/c/87cccc2a767f17dcab71e3b9fe5ae29b5516c5ce
	https://git.kernel.org/stable/c/c9000c93078e5c0a5a651b077c0ec92a4bc7d580
	https://git.kernel.org/stable/c/1f6c9d255bdda41216b6e34c96aa2b1abee0bb84
	https://git.kernel.org/stable/c/3e44a7665f3abd320a80d9c64ee4a93317041b8b
	https://git.kernel.org/stable/c/64ec4192d9c10e96922245d4a6747304cc76b19d
	https://git.kernel.org/stable/c/d90b9f39f375c9826ef145605dfe97765d0ecb91
	https://git.kernel.org/stable/c/a1fc19d61f661d47204f095b593de507884849f7