CVE-2026-23527CVE-2026-23527是H3框架中的一个高危安全漏洞,CVSS评分达到8.9分。H3是一个为高性能和可移植性而构建的最小化HTTP框架。该漏洞存在于H3框架的readRawBody函数中,其对HTTP请求的Transfer-Encoding头部进行严格的大小写敏感检查。具体而言,代码只查找小写形式的"chunked"字符串,但根据HTTP RFC规范(RFC 7230),Transfer-Encoding头部的值应该是大小写不敏感的。攻击者可以通过发送带有大写或混合大小写Transfer-Encoding头部的恶意HTTP请求来绕过安全检查,从而实施HTTP请求走私攻击。这种攻击可以导致多种严重后果,包括但不限于:缓存污染、跨站脚本攻击、敏感信息泄露以及在某些情况下可能的远程代码执行。由于该漏洞无需认证即可利用,且攻击复杂度相对较低,因此对使用受影响版本H3框架的应用构成严重威胁。建议用户尽快升级到修复版本1.15.5以消除安全风险。
HTTP请求走私漏洞的核心在于前端代理和后端服务器对HTTP请求边界的解析不一致。在H3框架中,readRawBody函数负责解析HTTP请求体。当收到包含Transfer-Encoding头部的请求时,该函数使用严格的大小写匹配来检测chunked编码。代码实现类似于:检查header值是否等于"chunked"(小写)。根据RFC 7230第3.3.1节的规定,Transfer-Encoding头部的值应该是大小写不敏感的。攻击者可以利用这一漏洞,发送如下请求:Transfer-Encoding: Chunked(首字母大写)或TRANSFER-ENCODING: chunked(全部大写)。由于前端代理(如反向代理或负载均衡器)可能使用不同的解析逻辑,它们可能将请求转发给后端H3服务器,而H3服务器由于大小写敏感检查失败,会将请求视为非chunked编码。这种解析差异允许攻击者注入额外的请求或修改请求边界。在实际攻击场景中,攻击者可以构造特殊的请求序列,使后端服务器将多个请求合并处理,或将恶意内容注入到合法用户的请求响应中。修复方案是将大小写敏感的比较改为不敏感比较,例如使用lowercase()或case-insensitive比较方法。