CVE-2025-66199CVE-2025-66199是OpenSSL中的一个中等严重性拒绝服务漏洞。该漏洞存在于OpenSSL的TLS 1.3证书压缩功能中,攻击者可以利用CompressedCertificate消息构造特制数据包,强制系统在解压前分配高达约22 MiB的堆内存缓冲区。由于解压前未对证书大小进行有效验证,攻击者可通过发送多个恶意连接请求导致服务器内存快速耗尽或CPU资源被大量占用,从而实现服务降级或完全拒绝服务。此漏洞影响启用了TLS 1.3证书压缩功能的OpenSSL构建版本(需编译时启用brotli、zlib或zstd压缩算法之一)。客户端和服务器端均受影响,但仅在证书压缩扩展被协商时触发。攻击无需认证或用户交互,可通过网络远程利用。
漏洞根源在于TLS 1.3握手过程中对CompressedCertificate消息处理不当。当收到压缩证书时,OpenSSL直接使用对等方提供的未压缩证书长度来预先分配堆缓冲区,但该长度值未与SSL_CTX_set_max_cert_list配置的max_cert_list限制进行校验。攻击流程如下:1) 攻击者向目标服务器发起TLS 1.3连接请求;2) 握手期间发送CompressedCertificate扩展,其中uncompressed_length字段设置为接近22 MiB的大值;3) OpenSSL据此分配大块堆内存;4) 实际解压后的证书数据远小于声明长度,导致内存浪费;5) 握手最终失败,但内存已被消耗。攻击者可建立大量并发连接快速耗尽服务器内存。修复方案需在分配缓冲区前添加uncompressed_length与max_cert_list的边界检查,超过限制时直接拒绝连接。