CVE-2026-22776cpp-httplib是一个C++11单文件头文件跨平台HTTP/HTTPS库。在0.30.1之前的版本中,存在一个拒绝服务(DoS)漏洞。该漏洞源于不安全地处理压缩的HTTP请求体(Content-Encoding: gzip、br等)。攻击者可以通过发送恶意构造的压缩数据来触发此漏洞。库对从网络接收的压缩数据大小验证了payload_max_length参数,但未能限制解压后数据在内存中的大小。当攻击者发送一个压缩比极高的恶意数据时(如压缩后仅几KB但解压后可达数GB),可以导致服务器内存耗尽,从而造成服务拒绝。此漏洞无需认证即可利用,攻击复杂度低,具有较高的可用性影响。
该漏洞的根本原因在于cpp-httplib库在处理HTTP请求体解压时缺乏对解压后数据大小的限制。具体来说:1) 库在接收压缩数据时检查了payload_max_length,但这只限制了压缩数据本身的大小;2) 对于支持gzip、brotli等压缩格式的请求,库会实时解压数据;3) 攻击者可以利用极高的压缩比(如1:1000或更高),发送一个看似小于限制但解压后巨大的文件;4) 当解压数据存储在内存中时,会持续消耗系统资源直到内存耗尽;5) 攻击者可以通过发送多个并发请求来加速内存耗尽过程。该漏洞影响所有使用cpp-httplib处理压缩请求体的应用程序,攻击者无需任何认证即可远程利用。