一、漏洞简介¶
1.1 漏洞背景¶
HTTP 请求走私(Request Smuggling)是一种利用前后端服务器对 HTTP 请求解析差异的攻击技术。当 Tomcat 作为后端服务器部署在反向代理之后时,可能受到此类攻击。
1.2 漏洞概述(包含 CVE 编号、危害等级、漏洞类型、披露时间等)¶
| 项目 | 内容 |
|---|---|
| 漏洞编号 | CVE-2022-42252 |
| 危害等级 | HIGH / 7.5 |
| 漏洞类型 | HTTP 请求走私漏洞 |
| 披露时间 | 2022-11-01 |
| 影响组件 | Apache Tomcat 历史 |
- CVE 编号:CVE-2022-42252
- 危害等级:Low(低)
- 披露时间:2022年10月
- 漏洞类型:HTTP 请求走私
补充核验信息:公开时间:2022-11-01;NVD 评分:7.5(HIGH);CWE:CWE-444。
二、影响范围¶
2.1 受影响的版本¶
| 版本系列 | 受影响范围 |
|---|---|
| Tomcat 9.x | 9.0.0.M1 ~ 9.0.67 |
| Tomcat 10.x | 10.0.0-M1 ~ 10.1.0 / 10.0.0-M1 ~ 10.0.26 |
| Tomcat 8.x | 8.5.0 ~ 8.5.82 |
2.2 不受影响的版本¶
| 版本系列 | 修复版本 |
|---|---|
| Tomcat 9.x | ≥ 9.0.68 |
| Tomcat 10.x | ≥ 10.1.1 / ≥ 10.0.27 |
| Tomcat 8.x | ≥ 8.5.83 |
2.3 触发条件(如特定模块、特定配置、特定运行环境等)¶
- Tomcat 配置为忽略无效 HTTP 头(
rejectIllegalHeader=false,非默认值) - Tomcat 部署在反向代理之后
- 反向代理也未正确处理无效的 Content-Length 头
三、漏洞详情与原理解析¶
3.1 漏洞触发机制¶
当 rejectIllegalHeader 设置为 false 时,Tomcat 不会拒绝包含无效 Content-Length 头的请求。攻击者可以构造包含多个 Content-Length 头或格式错误的 Content-Length 头的请求:
POST / HTTP/1.1
Host: target.com
Content-Length: 0
Content-Length: 50
GET /admin HTTP/1.1
Host: target.com
反向代理可能使用第一个 Content-Length 值(0),认为请求体为空,将后续数据视为新请求。而 Tomcat 可能使用第二个值(50),将 GET /admin 作为当前请求的一部分处理。
3.2 源码层面的根因分析(结合源码与补丁对比)¶
问题代码位置:org.apache.coyote.http11.Http11InputBuffer
// 当 rejectIllegalHeader=false 时
// 不会拒绝重复或无效的 Content-Length
if (!rejectIllegalHeader) {
// 继续处理,可能导致解析差异
}
四、漏洞复现(可选)¶
4.1 环境搭建¶
# 需要配置 server.xml
# 在 Connector 中设置 rejectIllegalHeader="false"
<Connector port="8080" protocol="HTTP/1.1"
rejectIllegalHeader="false" />
4.2 PoC 演示与测试过程¶
# 使用 telnet 或 nc 发送畸形请求
echo -e "POST / HTTP/1.1\r
Host: target.com\r
Content-Length: 0\r
Content-Length: 5\r
\r
hello" | nc target 8080
五、修复建议与缓解措施¶
5.1 官方版本升级建议¶
升级至修复版本。
5.2 临时缓解方案(如修改配置文件、关闭相关模块、增加 WAF 规则等)¶
- 保持默认配置(
rejectIllegalHeader=true):
<Connector port="8080" protocol="HTTP/1.1"
rejectIllegalHeader="true" />
- 在反向代理层面验证请求:
# Nginx 配置
server {
if ($http_content_length ~ "[^0-9]") {
return 400;
}
}
六、参考信息 / 参考链接¶
6.1 官方安全通告¶
- https://lists.apache.org/thread/zzcxzvqfdqn515zfs3dxb7n8gty589sq
- https://tomcat.apache.org/security-9.html
6.2 其他技术参考资料¶
- NVD:https://nvd.nist.gov/vuln/detail/CVE-2022-42252
- CVE:https://www.cve.org/CVERecord?id=CVE-2022-42252
- https://lists.apache.org/thread/zzcxzvqfdqn515zfs3dxb7n8gty589sq
- https://security.gentoo.org/glsa/202305-37
- https://tomcat.apache.org/security-9.html
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-42252