mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-23 01:10:04 +00:00
mac80211: drop A-MSDUs on old ciphers
commit 270032a2a9
upstream.
With old ciphers (WEP and TKIP) we shouldn't be using A-MSDUs
since A-MSDUs are only supported if we know that they are, and
the only practical way for that is HT support which doesn't
support old ciphers.
However, we would normally accept them anyway. Since we check
the MMIC before deaggregating A-MSDUs, and the A-MSDU bit in
the QoS header is not protected in TKIP (or WEP), this enables
attacks similar to CVE-2020-24588. To prevent that, drop A-MSDUs
completely with old ciphers.
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20210511200110.076543300172.I548e6e71f1ee9cad4b9a37bf212ae7db723587aa@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
a3558e1b75
commit
5f76007401
1 changed files with 17 additions and 0 deletions
|
@ -2455,6 +2455,23 @@ ieee80211_rx_h_amsdu(struct ieee80211_rx_data *rx)
|
|||
true))
|
||||
return RX_DROP_UNUSABLE;
|
||||
|
||||
if (rx->key) {
|
||||
/*
|
||||
* We should not receive A-MSDUs on pre-HT connections,
|
||||
* and HT connections cannot use old ciphers. Thus drop
|
||||
* them, as in those cases we couldn't even have SPP
|
||||
* A-MSDUs or such.
|
||||
*/
|
||||
switch (rx->key->conf.cipher) {
|
||||
case WLAN_CIPHER_SUITE_WEP40:
|
||||
case WLAN_CIPHER_SUITE_WEP104:
|
||||
case WLAN_CIPHER_SUITE_TKIP:
|
||||
return RX_DROP_UNUSABLE;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ieee80211_amsdu_to_8023s(skb, &frame_list, dev->dev_addr,
|
||||
rx->sdata->vif.type,
|
||||
rx->local->hw.extra_tx_headroom,
|
||||
|
|
Loading…
Reference in a new issue