Description
In the Linux kernel, the following vulnerability has been resolved: staging: rtl8723bs: fix heap buffer overflow in rtw_cfg80211_set_wpa_ie() supplicant_ie is a 256-byte array in struct security_priv. The WPA and WPA2 IE copy paths use: memcpy(padapter->securitypriv.supplicant_ie, &pwpa[0], wpa_ielen + 2); where wpa_ielen is the raw IE length field (u8, 0-255). When a local user supplies a connect request via nl80211 with a crafted WPA IE of length 255, wpa_ielen + 2 equals 257, overflowing the 256-byte buffer by one byte into the adjacent last_mic_err_time field. rtw_parse_wpa_ie() does not prevent this: its length consistency check compares *(wpa_ie+1) against (u8)(wpa_ie_len-2), which is (u8)(255) == 255 when wpa_ie_len = 257, so the check passes silently. Add explicit bounds checks for both the WPA and WPA2 paths before the memcpy, rejecting any IE whose total size (wpa_ielen + 2) exceeds the supplicant_ie buffer.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
554c0a3abf216c991c5ebddcdb2c08689ecd290b to < a94a643a80a84ceb8139061c3d6bf988d75e45a5affected554c0a3abf216c991c5ebddcdb2c08689ecd290b to < 2131621986c62c86109ce4d84cf73a73757eb8a6affected554c0a3abf216c991c5ebddcdb2c08689ecd290b to < 6f20d7b0ee47c470734a69379b0fc6647c519603affected554c0a3abf216c991c5ebddcdb2c08689ecd290b to < 5d7812360abf3143afcbf5efe4ef242448fa1f28affected554c0a3abf216c991c5ebddcdb2c08689ecd290b to < 46f66c16a95191d9aca07a72ae6b1252a244e26caffected554c0a3abf216c991c5ebddcdb2c08689ecd290b to < b9c4bf133c3c47e23baf4f5403b98a953bf58606affected554c0a3abf216c991c5ebddcdb2c08689ecd290b to < 138cd190efd56ab36c9fdd8fef8749d06937f24baffected554c0a3abf216c991c5ebddcdb2c08689ecd290b to < 5a752a616e756844388a1a45404db9fc29fec655affected
Linux Linux
Default version status: affected
4.12affected0 to < 4.12unaffected5.10.261 to ≤ 5.10.*unaffected5.15.212 to ≤ 5.15.*unaffected6.1.178 to ≤ 6.1.*unaffected6.6.145 to ≤ 6.6.*unaffected6.12.96 to ≤ 6.12.*unaffected6.18.39 to ≤ 6.18.*unaffected7.1.4 to ≤ 7.1.*unaffected7.2 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/a94a643a80a84ceb8139061c3d6bf988d75e45a5 ↗
- https://git.kernel.org/stable/c/2131621986c62c86109ce4d84cf73a73757eb8a6 ↗
- https://git.kernel.org/stable/c/6f20d7b0ee47c470734a69379b0fc6647c519603 ↗
- https://git.kernel.org/stable/c/5d7812360abf3143afcbf5efe4ef242448fa1f28 ↗
- https://git.kernel.org/stable/c/46f66c16a95191d9aca07a72ae6b1252a244e26c ↗
- https://git.kernel.org/stable/c/b9c4bf133c3c47e23baf4f5403b98a953bf58606 ↗
- https://git.kernel.org/stable/c/138cd190efd56ab36c9fdd8fef8749d06937f24b ↗
- https://git.kernel.org/stable/c/5a752a616e756844388a1a45404db9fc29fec655 ↗