linux-stable/net/mac80211
Jouni Malinen 8f483142b0 mac80211: Do not send Layer 2 Update frame before authorization
commit 3e493173b7 upstream.

The Layer 2 Update frame is used to update bridges when a station roams
to another AP even if that STA does not transmit any frames after the
reassociation. This behavior was described in IEEE Std 802.11F-2003 as
something that would happen based on MLME-ASSOCIATE.indication, i.e.,
before completing 4-way handshake. However, this IEEE trial-use
recommended practice document was published before RSN (IEEE Std
802.11i-2004) and as such, did not consider RSN use cases. Furthermore,
IEEE Std 802.11F-2003 was withdrawn in 2006 and as such, has not been
maintained amd should not be used anymore.

Sending out the Layer 2 Update frame immediately after association is
fine for open networks (and also when using SAE, FT protocol, or FILS
authentication when the station is actually authenticated by the time
association completes). However, it is not appropriate for cases where
RSN is used with PSK or EAP authentication since the station is actually
fully authenticated only once the 4-way handshake completes after
authentication and attackers might be able to use the unauthenticated
triggering of Layer 2 Update frame transmission to disrupt bridge
behavior.

Fix this by postponing transmission of the Layer 2 Update frame from
station entry addition to the point when the station entry is marked
authorized. Similarly, send out the VLAN binding update only if the STA
entry has already been authorized.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
Reviewed-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-01-17 19:46:56 +01:00
..
aead_api.c
aead_api.h
aes_ccm.h
aes_cmac.c
aes_cmac.h
aes_gcm.h
aes_gmac.c
aes_gmac.h
agg-rx.c mac80211: add support for HE 2018-06-18 22:40:32 +02:00
agg-tx.c mac80211: Fix Tx aggregation session tear down with ITXQs 2019-03-23 20:09:45 +01:00
cfg.c mac80211: Do not send Layer 2 Update frame before authorization 2020-01-17 19:46:56 +01:00
chan.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
debug.h
debugfs.c
debugfs.h
debugfs_key.c
debugfs_key.h
debugfs_netdev.c mac80211: fix txq null pointer dereference 2019-10-29 09:19:33 +01:00
debugfs_netdev.h
debugfs_sta.c
debugfs_sta.h
driver-ops.c mac80211: don't warn about CW params when not using them 2019-08-16 10:12:45 +02:00
driver-ops.h mac80211: do not call driver wake_tx_queue op during reconfig 2019-04-27 09:36:38 +02:00
ethtool.c mac80211: use BIT_ULL for NL80211_STA_INFO_* attribute types 2018-06-29 09:53:09 +02:00
fils_aead.c
fils_aead.h
he.c mac80211: add support for HE 2018-06-18 22:40:32 +02:00
ht.c ieee80211: bump IEEE80211_MAX_AMPDU_BUF to support HE 2018-06-18 22:39:39 +02:00
ibss.c mac80211: shorten the IBSS debug messages 2018-09-03 10:41:27 +02:00
ieee80211_i.h mac80211: do not start any work during reconfigure flow 2019-07-14 08:11:11 +02:00
iface.c mac80211: Fix kernel panic due to use of txq after free 2019-05-25 18:23:43 +02:00
Kconfig
key.c mac80211: Honor SW_CRYPTO_CONTROL for unicast keys in AP VLAN mode 2019-05-08 07:21:54 +02:00
key.h
led.c leds: triggers: let struct led_trigger::activate() return an error code 2018-07-05 23:21:10 +02:00
led.h
main.c mac80211: fix a kernel panic when TXing after TXQ teardown 2019-01-13 09:51:01 +01:00
Makefile mac80211: add support for HE 2018-06-18 22:40:32 +02:00
mesh.c mac80211: free peer keys before vif down in mesh 2019-07-14 08:11:06 +02:00
mesh.h mac80211: Use linked list instead of rhashtable walk for mesh tables 2019-02-27 10:08:49 +01:00
mesh_hwmp.c mac80211: fix TX status reporting for ieee80211s 2018-09-10 09:14:28 +02:00
mesh_pathtbl.c mac80211: mesh: fix missing unlock on error in table_path_del() 2019-07-10 09:53:45 +02:00
mesh_plink.c
mesh_ps.c
mesh_sync.c
michael.c
michael.h
mlme.c mac80211: fix saving a few HE values 2019-11-20 18:45:56 +01:00
ocb.c
offchannel.c mac80211: support scan features for improved scan privacy 2018-06-15 13:34:40 +02:00
pm.c
rate.c
rate.h
rc80211_minstrel.c net: remove blank lines at end of file 2018-07-24 14:10:43 -07:00
rc80211_minstrel.h
rc80211_minstrel_debugfs.c
rc80211_minstrel_ht.c mac80211: minstrel: fix sampling/reporting of CCK rates in HT mode 2019-11-24 08:21:05 +01:00
rc80211_minstrel_ht.h
rc80211_minstrel_ht_debugfs.c
rx.c mac80211: Correctly set noencrypt for PAE frames 2019-09-06 10:22:21 +02:00
scan.c This round's updates: 2018-06-30 21:08:12 +09:00
spectmgmt.c
sta_info.c mac80211: Do not send Layer 2 Update frame before authorization 2020-01-17 19:46:56 +01:00
sta_info.h mac80211: add support for HE 2018-06-18 22:40:32 +02:00
status.c mac80211: consider QoS Null frames for STA_NULLFUNC_ACKED 2019-12-31 16:36:13 +01:00
tdls.c mac80211: handle deauthentication/disassociation from TDLS peer 2019-06-25 11:36:01 +08:00
tkip.c
tkip.h
trace.c
trace.h mac80211: add support for HE 2018-06-18 22:40:32 +02:00
trace_msg.h mac80211: Increase MAX_MSG_LEN 2019-05-16 19:41:20 +02:00
tx.c mac80211: fix memory accounting with A-MSDU aggregation 2019-05-16 19:41:20 +02:00
util.c {nl,mac}80211: fix interface combinations on crypto controlled devices 2019-09-16 08:21:42 +02:00
vht.c
wep.c
wep.h
wme.c
wme.h
wpa.c mac80211: Do not use stack memory with scatterlist for GMAC 2019-06-25 11:36:02 +08:00
wpa.h