svn commit: r337832 - stable/10/contrib/wpa/src/rsn_supp

Xin LI delphij at FreeBSD.org
Wed Aug 15 05:05:03 UTC 2018


Author: delphij
Date: Wed Aug 15 05:05:02 2018
New Revision: 337832
URL: https://svnweb.freebsd.org/changeset/base/337832

Log:
  Fix unauthenticated EAPOL-Key decryption vulnerability. [SA-18:11.hostapd]
  
  Approved by:	so

Modified:
  stable/10/contrib/wpa/src/rsn_supp/wpa.c

Modified: stable/10/contrib/wpa/src/rsn_supp/wpa.c
==============================================================================
--- stable/10/contrib/wpa/src/rsn_supp/wpa.c	Wed Aug 15 05:03:54 2018	(r337831)
+++ stable/10/contrib/wpa/src/rsn_supp/wpa.c	Wed Aug 15 05:05:02 2018	(r337832)
@@ -1829,6 +1829,17 @@ int wpa_sm_rx_eapol(struct wpa_sm *sm, const u8 *src_a
 
 	if (sm->proto == WPA_PROTO_RSN &&
 	    (key_info & WPA_KEY_INFO_ENCR_KEY_DATA)) {
+		/*
+		 * Only decrypt the Key Data field if the frame's authenticity
+		 * was verified. When using AES-SIV (FILS), the MIC flag is not
+		 * set, so this check should only be performed if mic_len != 0
+		 * which is the case in this code branch.
+		 */
+		if (!(key_info & WPA_KEY_INFO_MIC)) {
+			wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
+				"WPA: Ignore EAPOL-Key with encrypted but unauthenticated data");
+			goto out;
+		}
 		if (wpa_supplicant_decrypt_key_data(sm, key, ver))
 			goto out;
 		extra_len = WPA_GET_BE16(key->key_data_length);


More information about the svn-src-all mailing list