漏洞
HTTP 请求走私
别称: HRS, 请求走私
定义
利用前端代理与后端服务器对 HTTP 请求边界判断不一致的攻击,使攻击者可以在合法请求中夹带一个隐藏的额外请求。
HTTP 请求走私利用负载均衡器、CDN、反向代理与源站之间对 Content-Length 与 Transfer-Encoding 头部的解析差异(CL.TE、TE.CL、TE.TE)。攻击者构造歧义请求,使前后端对消息结束位置判断不一致,从而把额外请求走私到另一用户的连接上下文中处理。后果包括缓存投毒、凭据窃取、WAF 绕过和账户接管。防御措施包括对模糊请求进行归一化或拒绝、采用端到端 HTTP/2、保持前后端实现一致,并及时应用厂商补丁。
示例
- 在 CDN 使用 Content-Length、源站使用 Transfer-Encoding 的组合上发起 CL.TE 走私。
- 走私的 POST 请求在共享 keep-alive 连接上窃取下一个用户的 Authorization 头。