CVE-2026-21428CVE-2026-21428是cpp-httplib库中的一个高危安全漏洞,该库是一个C++11单文件头文件跨平台HTTP/HTTPS库。漏洞存在于write_headers函数中,该函数在处理用户提供的HTTP头部值时,未对CR(回车)和LF(换行)字符进行过滤和验证。这一缺陷允许攻击者通过在头部值中注入CRLF字符来突破HTTP头部的边界限制,从而添加额外的HTTP头部、修改请求体内容或触发服务器端请求伪造(SSRF)攻击。当目标服务器支持HTTP/1.1管道化(pipelining)功能时(如Spring Boot、Python Twisted等),攻击者可以利用此漏洞实现更复杂的SSRF攻击链,访问内部网络资源或执行未授权操作。该漏洞影响0.30.0之前的所有版本,官方已在v0.30.0版本中修复此问题。
该漏洞的根本原因在于cpp-httplib的write_headers函数缺乏对HTTP头部值中特殊字符的验证。HTTP协议规范要求头部字段值不能包含CR(\r)和LF(\n)字符,因为这些字符用于分隔不同的头部行。攻击者可以通过在头部值中注入\r\n序列来构造恶意请求,当服务器解析这些请求时,攻击者注入的额外头部会被当作合法的HTTP头部进行处理。具体来说,攻击者可以在Location头部注入302重定向到恶意URL,或在Host头部注入来操控请求路由。此外,通过CRLF注入修改请求体长度或内容,可以导致请求走私(Request Smuggling)问题。在支持HTTP/1.1管道化的服务器环境中,攻击者可以构造特殊的请求序列,利用管道化处理的时序特性来执行SSRF攻击,绕过防火墙访问内部服务。攻击成功的关键在于服务器对用户输入的头部值缺乏有效的过滤机制。