CVE-2026-23941CVE-2026-23941是Erlang OTP的inets httpd模块中存在的高危HTTP请求走私漏洞。该漏洞源于服务器对重复Content-Length头的不当处理:服务器使用请求中最先出现的Content-Length值来解析请求体,而常见的反向代理(如nginx、Apache httpd、Envoy)则使用最后出现的Content-Length值。这种行为差异违反了RFC 9112 Section 6.3标准,导致攻击者可以构造特殊的HTTP请求实现前端与后端服务器的请求解析不一致。攻击成功后,攻击者注入的恶意数据会被队列化为下一个请求的开头部分,可能导致会话劫持、缓存污染、跨站脚本攻击等严重后果。由于该漏洞无需认证即可利用,且CVSS评分高达9.4,属于极其严重的安全威胁。
HTTP请求走私漏洞的核心在于前端和后端对HTTP请求边界解析的不一致性。在正常情况下,当HTTP请求包含多个Content-Length头时,服务器应该拒绝请求或对其进行规范化处理。然而,Erlang OTP的inets httpd模块直接使用第一个Content-Length值来确定请求体长度,而反向代理通常使用最后一个值。攻击者可以通过构造如下请求来实现攻击:发送包含两个Content-Length头的请求,第一个值较小,第二个值较大。例如:Content-Length: 10\r\nContent-Length: 100\r\n\r\nABCDEFGHIJ。服务器会根据第一个Content-Length(10)解析请求体,将ABCDEFGHIJ后的内容视为下一个请求的开始。而反向代理根据第二个Content-Length(100)等待100字节的请求体,导致剩余的90字节数据被当作下一个请求的一部分,从而实现请求走私攻击。这种攻击可用于绕过安全控制、劫持用户会话或污染Web缓存。