]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
WPA: Extra defense against PTK reinstalls in 4-way handshake
authorMathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
Thu, 5 Oct 2017 21:53:01 +0000 (23:53 +0200)
committerJouni Malinen <j@w1.fi>
Sun, 15 Oct 2017 23:03:47 +0000 (02:03 +0300)
Currently, reinstallations of the PTK are prevented by (1) assuring the
same TPTK is only set once as the PTK, and (2) that one particular PTK
is only installed once. This patch makes it more explicit that point (1)
is required to prevent key reinstallations. At the same time, this patch
hardens wpa_supplicant such that future changes do not accidentally
break this property.

Signed-off-by: Mathy Vanhoef <Mathy.Vanhoef@cs.kuleuven.be>
src/rsn_supp/wpa.c

index 4840199b72cda06ed8444de26a6f966771a407c6..efa06c3e338f4f4a47fd376e284d35a2a6543751 100644 (file)
@@ -1729,6 +1729,14 @@ static int wpa_supplicant_verify_eapol_key_mic(struct wpa_sm *sm,
                        sm->ptk_set = 1;
                        os_memcpy(&sm->ptk, &sm->tptk, sizeof(sm->ptk));
                        os_memset(&sm->tptk, 0, sizeof(sm->tptk));
+                       /*
+                        * This assures the same TPTK in sm->tptk can never be
+                        * copied twice to sm->pkt as the new PTK. In
+                        * combination with the installed flag in the wpa_ptk
+                        * struct, this assures the same PTK is only installed
+                        * once.
+                        */
+                       sm->renew_snonce = 1;
                }
        }