Blame SOURCES/freeradius-EAP-PWD-information-leak-10-iterations.patch

934b47
From 3ea2a5a026e73d81cd9a3e9bbd4300c433004bfa Mon Sep 17 00:00:00 2001
934b47
From: Mathy Vanhoef <mathy.vanhoef@nyu.edu>
934b47
Date: Wed, 5 Jun 2019 19:21:06 +0000
934b47
Subject: [PATCH] EAP-pwd: fix side-channel leak where 1 in 2018 handshakes
934b47
 fail
934b47
934b47
Previously the Hunting and Pecking algorithm of EAP-pwd aborted when
934b47
more than 10 iterations are needed. Every iteration has a 50% chance
934b47
of finding the password element. This means one in every 2048 handshakes
934b47
will fail, in which case an error frame is sent to the client. This
934b47
event leaks information that can be abused in an offline password
934b47
brute-force attack. More precisely, the adversary learns that all 10
934b47
iterations failed for the given random EAP-pwd token. Using the same
934b47
techniques as in the Dragonblood attack, this can be used to brute-force
934b47
the password.
934b47
934b47
This patch fixes the above issue by executing enough iterations such that
934b47
the password element is always found eventually.
934b47
934b47
Note that timing and cache leaks remain a risk against the current
934b47
implementation of EAP-pwd.
934b47
---
934b47
 src/modules/rlm_eap/types/rlm_eap_pwd/eap_pwd.c | 2 +-
934b47
 1 file changed, 1 insertion(+), 1 deletion(-)
934b47
934b47
diff --git a/src/modules/rlm_eap/types/rlm_eap_pwd/eap_pwd.c b/src/modules/rlm_eap/types/rlm_eap_pwd/eap_pwd.c
934b47
index c54f08c030..d94851c3aa 100644
934b47
--- a/src/modules/rlm_eap/types/rlm_eap_pwd/eap_pwd.c
934b47
+++ b/src/modules/rlm_eap/types/rlm_eap_pwd/eap_pwd.c
934b47
@@ -192,7 +192,7 @@ int compute_password_element (pwd_session_t *session, uint16_t grp_num,
934b47
 	}
934b47
 	ctr = 0;
934b47
 	while (1) {
934b47
-		if (ctr > 10) {
934b47
+		if (ctr > 100) {
934b47
 			DEBUG("unable to find random point on curve for group %d, something's fishy", grp_num);
934b47
 			goto fail;
934b47
 		}