[Vivid, Xenial][CVE-2016-8658] brcmfmac: avoid potential stack overflow in brcmf_cfg80211_start_ap()
Luis Henriques
luis.henriques at canonical.com
Fri Oct 21 14:26:51 UTC 2016
From: Arend Van Spriel <arend.vanspriel at broadcom.com>
User-space can choose to omit NL80211_ATTR_SSID and only provide raw
IE TLV data. When doing so it can provide SSID IE with length exceeding
the allowed size. The driver further processes this IE copying it
into a local variable without checking the length. Hence stack can be
corrupted and used as exploit.
Cc: stable at vger.kernel.org # v4.7
Reported-by: Daxing Guo <freener.gdx at gmail.com>
Reviewed-by: Hante Meuleman <hante.meuleman at broadcom.com>
Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts at broadcom.com>
Reviewed-by: Franky Lin <franky.lin at broadcom.com>
Signed-off-by: Arend van Spriel <arend.vanspriel at broadcom.com>
Signed-off-by: Kalle Valo <kvalo at codeaurora.org>
CVE-2016-8658
(backported from commit ded89912156b1a47d940a0c954c43afbabd0c42c)
[ luis: file rename:
- drivers/net/wireless/{ => broadcom}/brcm80211/brcmfmac/cfg80211.c
Signed-off-by: Luis Henriques <luis.henriques at canonical.com>
---
drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
index deb5f78dcacc..786fff3d7466 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
@@ -4099,7 +4099,7 @@ brcmf_cfg80211_start_ap(struct wiphy *wiphy, struct net_device *ndev,
(u8 *)&settings->beacon.head[ie_offset],
settings->beacon.head_len - ie_offset,
WLAN_EID_SSID);
- if (!ssid_ie)
+ if (!ssid_ie || ssid_ie->len > IEEE80211_MAX_SSID_LEN)
return -EINVAL;
memcpy(ssid_le.SSID, ssid_ie->data, ssid_ie->len);
More information about the kernel-team
mailing list