Issue summary: A TLS 1.3 connection using certificate compression can be forced to allocate a large buffer before decompression without…
openssl·CWE-789·Published 2026-01-27
Issue summary: A TLS 1.3 connection using certificate compression can be forced to allocate a large buffer before decompression without checking against the configured certificate size limit. Impact summary: An attacker can cause per-connection memory allocations of up to approximately 22 MiB and extra CPU work, potentially leading to service degradation or resource exhaustion (Denial of Service). In affected configurations, the peer-supplied uncompressed certificate length from a CompressedCertificate message is used to grow a heap buffer prior to decompression. This length is not bounded by the max_cert_list setting, which otherwise constrains certificate message sizes. An attacker can exploit this to cause large per-connection allocations followed by handshake failure. No memory corruption or information disclosure occurs. This issue only affects builds where TLS 1.3 certificate compression is compiled in (i.e., not OPENSSL_NO_COMP_ALG) and at least one compression algorithm (brotli, zlib, or zstd) is available, and where the compression extension is negotiated. Both clients receiving a server CompressedCertificate and servers in mutual TLS scenarios receiving a client CompressedCertificate are affected. Servers that do not request client certificates are not vulnerable to client-initiated attacks. Users can mitigate this issue by setting SSL_OP_NO_RX_CERTIFICATE_COMPRESSION to disable receiving compressed certificates. The FIPS modules in 3.6, 3.5, 3.4 and 3.3 are not affected by this issue, as the TLS implementation is outside the OpenSSL FIPS module boundary. OpenSSL 3.6, 3.5, 3.4 and 3.3 are vulnerable to this issue. OpenSSL 3.0, 1.1.1 and 1.0.2 are not affected by this issue.
Issue summary: A TLS 1.3 connection using certificate compression can be forced to allocate a large buffer before decompression without checking against the configured certificate size limit. Impact summary: An attacker can cause per-connection memory allocations of up to approximately 22 MiB and extra CPU work, potentially leading to service degradation or resource exhaustion (Denial of Service). In affected configurations, the peer-supplied uncompressed certificate length from a CompressedCertificate message is used to grow a heap buffer prior to decompression. This length is not bounded by the max_cert_list setting, which otherwise constrains certificate message sizes. An attacker can exploit this to cause large per-connection allocations followed by handshake failure. No memory corruption or information disclosure occurs. This issue only affects builds where TLS 1.3 certificate compression is compiled in (i.e., not OPENSSL_NO_COMP_ALG) and at least one compression algorithm (brotli, zlib, or zstd) is available, and where the compression extension is negotiated. Both clients receiving a server CompressedCertificate and servers in mutual TLS scenarios receiving a client CompressedCertificate are affected. Servers that do not request client certificates are not vulnerable to client-initiated attacks. Users can mitigate this issue by setting SSL_OP_NO_RX_CERTIFICATE_COMPRESSION to disable receiving compressed certificates. The FIPS modules in 3.6, 3.5, 3.4 and 3.3 are not affected by this issue, as the TLS implementation is outside the OpenSSL FIPS module boundary. OpenSSL 3.6, 3.5, 3.4 and 3.3 are vulnerable to this issue. OpenSSL 3.0, 1.1.1 and 1.0.2 are not affected by this issue.
Resumen del problema: Una conexión TLS 1.3 que utiliza compresión de certificados puede ser forzada a asignar un búfer grande antes de la descompresión sin verificar contra el límite de tamaño de certificado configurado. Resumen del impacto: Un atacante puede causar asignaciones de memoria por conexión de hasta aproximadamente 22 MiB y trabajo adicional de CPU, lo que podría llevar a degradación del servicio o agotamiento de recursos (denegación de servicio). En configuraciones afectadas, la longitud del certificado sin comprimir proporcionada por el par de un mensaje CompressedCertificate se utiliza para aumentar un búfer de pila antes de la descompresión. Esta longitud no está limitada por la configuración max_cert_list, que de otro modo restringe los tamaños de los mensajes de certificado. Un atacante puede explotar esto para causar grandes asignaciones por conexión seguidas de un fallo en el handshake. No ocurre corrupción de memoria ni revelación de información. Este problema solo afecta a las compilaciones donde la compresión de certificados TLS 1.3 está compilada (es decir, no OPENSSL_NO_COMP_ALG) y al menos un algoritmo de compresión (brotli, zlib o zstd) está disponible, y donde la extensión de compresión es negociada. Tanto los clientes que reciben un CompressedCertificate del servidor como los servidores en escenarios TLS mutuos que reciben un CompressedCertificate del cliente se ven afectados. Los servidores que no solicitan certificados de cliente no son vulnerables a ataques iniciados por el cliente. Los usuarios pueden mitigar este problema configurando SSL_OP_NO_RX_CERTIFICATE_COMPRESSION para deshabilitar la recepción de certificados comprimidos. Los módulos FIPS en 3.6, 3.5, 3.4 y 3.3 no se ven afectados por este problema, ya que la implementación de TLS está fuera del límite del módulo FIPS de OpenSSL. OpenSSL 3.6, 3.5, 3.4 y 3.3 son vulnerables a este problema. OpenSSL 3.0, 1.1.1 y 1.0.2 no se ven afectados por este problema.
| Version | Type | Source | Base | Exp | Impact | Vector |
|---|---|---|---|---|---|---|
| 3.1 | Primary | cve.org | 5.9 | — | — | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H |
| 3.1 | Primary | cve.org | 5.9 | — | — | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H |
| 3.1 | Secondary | NVD | 5.9 | 2.2 | 3.6 | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H |