CVE-2026-34441cpp-httplib是一个C++11单文件跨平台HTTP/HTTPS库。在0.40.0版本之前,该库存在HTTP请求走私漏洞。漏洞产生原因是服务器的静态文件处理程序在处理GET请求时,未消耗请求体。在HTTP/1.1长连接环境下,未读取的请求体字节数据保留在TCP流中,并被服务器解释为下一个新HTTP请求的开始。攻击者可以在GET请求体中嵌入任意HTTP请求,服务器会将其作为单独的请求进行处理。该问题已在0.40.0版本中修复。
该漏洞属于HTTP请求走私(HTTP Request Smuggling)的一种变体,其核心在于HTTP协议解析过程中对请求边界的处理不一致。在受影响的cpp-httplib版本中,当服务器接收到包含Content-Length头部的GET请求且目标为静态文件时,服务器逻辑直接响应文件内容,而忽略了读取并丢弃请求体中的数据。由于HTTP/1.1支持持久连接,TCP连接不会立即关闭。攻击者可以构造一个特殊的GET请求,设置Content-Length为一个特定值,并在请求体中写入精心构造的恶意HTTP请求。服务器处理完第一个GET请求后,由于未读取请求体,剩余的数据(即恶意请求)仍然停留在TCP缓冲区中。当服务器等待下一个请求时,它会读取缓冲区中残留的数据,误以为这是客户端发送的新请求,从而执行攻击者预期的操作,可能导致缓存投毒或绕过安全检查。