mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-04 04:54:18 +00:00
e4625c37c4
This patch backports fixes for a security vulnerability impacting the
hostapd implementation of SAE H2E.
As upgrading hostapd would require more testing, the second mitigation
step which involves backporting several patches was adopted as outlined
in the official advisory[1].
An explanation of the impact of the vulnerability is provided from the
advisory[1]:
This vulnerability allows the attacker to downgrade the negotiated group
to another enabled group if both the AP and STA have enabled SAE H2E and
multiple groups. It should be noted that the H2E option is not enabled
by default and the attack is not applicable to the default option, i.e.,
hunting-and-pecking, since it does not have any downgrade protection for
group negotiation. In addition, the default configuration for enabled
SAE groups in hostapd is to enable only a single group, so the
vulnerability is not applicable unless hostapd has been explicitly
configured to enable more groups for SAE.
[1]: https://w1.fi/security/2024-2/sae-h2h-and-incomplete-downgrade-protection-for-group-negotiation.txt
Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/16043
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit db7f70fe61
)
31 lines
1.0 KiB
Diff
31 lines
1.0 KiB
Diff
From 9716bf1160beb677e965d9e6475d6c9e162e8374 Mon Sep 17 00:00:00 2001
|
|
From: Jouni Malinen <j@w1.fi>
|
|
Date: Tue, 9 Jul 2024 23:34:34 +0300
|
|
Subject: [PATCH] SAE: Reject invalid Rejected Groups element in the parser
|
|
|
|
There is no need to depend on all uses (i.e., both hostapd and
|
|
wpa_supplicant) to verify that the length of the Rejected Groups field
|
|
in the Rejected Groups element is valid (i.e., a multiple of two octets)
|
|
since the common parser can reject the message when detecting this.
|
|
|
|
Signed-off-by: Jouni Malinen <j@w1.fi>
|
|
---
|
|
src/common/sae.c | 6 ++++++
|
|
1 file changed, 6 insertions(+)
|
|
|
|
--- a/src/common/sae.c
|
|
+++ b/src/common/sae.c
|
|
@@ -2120,6 +2120,12 @@ static int sae_parse_rejected_groups(str
|
|
return WLAN_STATUS_UNSPECIFIED_FAILURE;
|
|
epos++; /* skip ext ID */
|
|
len--;
|
|
+ if (len & 1) {
|
|
+ wpa_printf(MSG_DEBUG,
|
|
+ "SAE: Invalid length of the Rejected Groups element payload: %u",
|
|
+ len);
|
|
+ return WLAN_STATUS_UNSPECIFIED_FAILURE;
|
|
+ }
|
|
|
|
wpabuf_free(sae->tmp->peer_rejected_groups);
|
|
sae->tmp->peer_rejected_groups = wpabuf_alloc(len);
|