]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
fix: add parsing check in TLS compress_certificate extension handler
authoryexiaochuan <tap91624@gmail.com>
Sat, 31 May 2025 09:47:58 +0000 (17:47 +0800)
committerTomas Mraz <tomas@openssl.org>
Tue, 10 Jun 2025 17:40:03 +0000 (19:40 +0200)
The tls_parse_compress_certificate function was missing validation
for trailing bytes after parsing the algorithm list, violating
RFC8446 section 4.2 which requires sending a decode_error alert
for unparseable messages.

This commit adds a check for remaining bytes in the packet after
the while loop and sends SSL_AD_DECODE_ERROR if any trailing
bytes are found.

Fixes #27717

CLA: trivial

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/27733)

(cherry picked from commit 8e787b102848e462a6d231883e2c42d91978c049)

ssl/statem/extensions.c

index 2d263196d943318dd65043a3f841b6dbea4209e0..ac31d8f6cfd84cd2d62a7beaa0f783821d26ba02 100644 (file)
@@ -1906,6 +1906,10 @@ int tls_parse_compress_certificate(SSL_CONNECTION *sc, PACKET *pkt, unsigned int
             already_set[comp] = 1;
         }
     }
+    if (PACKET_remaining(&supported_comp_algs) != 0) {
+        SSLfatal(sc, SSL_AD_DECODE_ERROR, SSL_R_BAD_EXTENSION);
+        return 0;
+    }
 #endif
     return 1;
 }