From 465d6e9669a24ff7fe1a018fafe0e9f44aa4a48b Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Sat, 11 Apr 2026 17:10:14 +0200 Subject: [PATCH] Fix ssl_tls13_prepare_new_session_ticket returning 1 on an RNG failure Signed-off-by: Gilles Peskine --- .../ssl_tls13_prepare_new_session_ticket-psa_get_random.txt | 5 +++++ library/ssl_tls13_server.c | 5 +++-- 2 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 ChangeLog.d/ssl_tls13_prepare_new_session_ticket-psa_get_random.txt diff --git a/ChangeLog.d/ssl_tls13_prepare_new_session_ticket-psa_get_random.txt b/ChangeLog.d/ssl_tls13_prepare_new_session_ticket-psa_get_random.txt new file mode 100644 index 0000000000..0fc8b0aa85 --- /dev/null +++ b/ChangeLog.d/ssl_tls13_prepare_new_session_ticket-psa_get_random.txt @@ -0,0 +1,5 @@ +Security + * Fix a bug where mbedtls_ssl_read() and mbedtls_ssl_write() could return + 1 instead of an error code if the random generator fails if a server + calls these functions before the end of a TLS 1.3 handshake. + Reported by Mohammad Seet (mhdsait101). CVE-2026-40294 diff --git a/library/ssl_tls13_server.c b/library/ssl_tls13_server.c index dc7c776830..37fdf79ee3 100644 --- a/library/ssl_tls13_server.c +++ b/library/ssl_tls13_server.c @@ -3183,8 +3183,9 @@ static int ssl_tls13_prepare_new_session_ticket(mbedtls_ssl_context *ssl, #endif /* Generate ticket_age_add */ - if ((ret = psa_generate_random((unsigned char *) &session->ticket_age_add, - sizeof(session->ticket_age_add)) != 0)) { + ret = psa_generate_random((unsigned char *) &session->ticket_age_add, + sizeof(session->ticket_age_add)); + if (ret != 0) { MBEDTLS_SSL_DEBUG_RET(1, "generate_ticket_age_add", ret); return ret; }