summaryrefslogtreecommitdiffstats
path: root/src/net
diff options
context:
space:
mode:
authorMichael Brown2025-10-12 23:37:49 +0200
committerMichael Brown2025-10-13 00:25:09 +0200
commite80818e4f6e3791ec8240bda0a72eef999e4bf26 (patch)
tree0d153c702116a073fb0587c6c28f6ac4cb544bc5 /src/net
parent[tls] Refuse to resume sessions with mismatched master secret methods (diff)
downloadipxe-e80818e4f6e3791ec8240bda0a72eef999e4bf26.tar.gz
ipxe-e80818e4f6e3791ec8240bda0a72eef999e4bf26.tar.xz
ipxe-e80818e4f6e3791ec8240bda0a72eef999e4bf26.zip
[tls] Disable renegotiation unless extended master secret is used
RFC 7627 states that renegotiation becomes no longer secure under various circumstances when the non-extended master secret is used. The description of the precise set of circumstances is spread across various points within the document and is not entirely clear. Avoid a superset of the circumstances in which renegotiation apparently becomes insecure by refusing renegotiation completely unless the extended master secret is used. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/net')
-rw-r--r--src/net/tls.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/net/tls.c b/src/net/tls.c
index efecf368c..1d5a6c6d8 100644
--- a/src/net/tls.c
+++ b/src/net/tls.c
@@ -2082,7 +2082,7 @@ static int tls_new_hello_request ( struct tls_connection *tls,
}
/* Fail unless server supports secure renegotiation */
- if ( ! tls->secure_renegotiation ) {
+ if ( ! ( tls->secure_renegotiation && tls->extended_master_secret ) ) {
DBGC ( tls, "TLS %p refusing to renegotiate insecurely\n",
tls );
return -EPERM_RENEG_INSECURE;