diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/libssl/ssl_tlsext.c | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/src/lib/libssl/ssl_tlsext.c b/src/lib/libssl/ssl_tlsext.c index 90734457e5..6d8f51833b 100644 --- a/src/lib/libssl/ssl_tlsext.c +++ b/src/lib/libssl/ssl_tlsext.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssl_tlsext.c,v 1.147 2024/04/02 22:50:54 sthen Exp $ */ | 1 | /* $OpenBSD: ssl_tlsext.c,v 1.148 2024/04/04 08:02:21 tb Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2016, 2017, 2019 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2016, 2017, 2019 Joel Sing <jsing@openbsd.org> |
4 | * Copyright (c) 2017 Doug Hogan <doug@openbsd.org> | 4 | * Copyright (c) 2017 Doug Hogan <doug@openbsd.org> |
@@ -325,14 +325,17 @@ tlsext_supportedgroups_client_process(SSL *s, uint16_t msg_type, CBS *cbs, | |||
325 | int *alert) | 325 | int *alert) |
326 | { | 326 | { |
327 | /* | 327 | /* |
328 | * Servers should not send this extension per the RFC. | 328 | * This extension is only allowed in TLSv1.3 encrypted extensions. |
329 | * | 329 | * It is not permitted in a ServerHello in any version of TLS. |
330 | * However, certain F5 BIG-IP systems incorrectly send it. This bug is | 330 | */ |
331 | * from at least 2014 but as of 2017, there are still large sites with | 331 | if (msg_type != SSL_TLSEXT_MSG_EE) |
332 | * this unpatched in production. As a result, we need to currently skip | 332 | return 0; |
333 | * over the extension and ignore its content: | 333 | |
334 | * | 334 | /* |
335 | * https://support.f5.com/csp/article/K37345003 | 335 | * RFC 8446, section 4.2.7: TLSv1.3 servers can send this extension but |
336 | * clients must not act on it during the handshake. This allows servers | ||
337 | * to advertise their preferences for subsequent handshakes. We ignore | ||
338 | * this complication. | ||
336 | */ | 339 | */ |
337 | if (!CBS_skip(cbs, CBS_len(cbs))) { | 340 | if (!CBS_skip(cbs, CBS_len(cbs))) { |
338 | *alert = SSL_AD_INTERNAL_ERROR; | 341 | *alert = SSL_AD_INTERNAL_ERROR; |