wpa_supplicant: Add GTK RSC relaxation workaround
authorMax Stepanov <Max.Stepanov@intel.com>
Wed, 14 Oct 2015 09:26:33 +0000 (12:26 +0300)
committerJouni Malinen <j@w1.fi>
Sun, 1 Nov 2015 19:00:22 +0000 (21:00 +0200)
commit73ed03f33323414ba02e50c15149bcb1c37d57e8
tree861aaa8f5bbddd46b1bd588a6cf21bc2de64f984
parentea6030c77f119056868e9b8df06f3200943c61ef
wpa_supplicant: Add GTK RSC relaxation workaround

Some APs may send RSC octets in EAPOL-Key message 3 of 4-Way Handshake
or in EAPOL-Key message 1 of Group Key Handshake in the opposite byte
order (or by some other corrupted way). Thus, after a successful
EAPOL-Key exchange the TSC values of received multicast packets, such as
DHCP, don't match the RSC one and as a result these packets are dropped
on replay attack TSC verification. An example of such AP is Sapido
RB-1732.

Work around this by setting RSC octets to 0 on GTK installation if the
AP RSC value is identified as a potentially having the byte order issue.
This may open a short window during which older (but valid)
group-addressed frames could be replayed. However, the local receive
counter will be updated on the first received group-addressed frame and
the workaround is enabled only if the common invalid cases are detected,
so this workaround is acceptable as not decreasing security
significantly. The wpa_rsc_relaxation global configuration property
allows the GTK RSC workaround to be disabled if it's not needed.

Signed-off-by: Max Stepanov <Max.Stepanov@intel.com>
src/rsn_supp/wpa.c
src/rsn_supp/wpa.h
src/rsn_supp/wpa_i.h
wpa_supplicant/config.c
wpa_supplicant/config.h
wpa_supplicant/config_file.c
wpa_supplicant/wpas_glue.c