漏洞
HTTP 失同步攻击
别称: HTTP/1.1 失同步, 连接状态攻击
定义
现代形式的 HTTP 请求走私,使一条由代理和服务器组成的链路失去同步,从而将恶意流量注入其他用户的连接。
由 James Kettle 在 2019 年的研究 "HTTP Desync Attacks" 推广,失同步攻击故意让前端代理与后端在请求流解析上不同步。常用技术包括 CL.TE、TE.CL、TE.TE、HTTP/2 到 HTTP/1.1 的降级以及分块编码技巧。连接一旦失同步,攻击者的字节就会前置到下一个受害者的请求中,导致凭据窃取、内部端点访问、响应队列投毒以及绕过认证或 WAF。防御措施:端到端使用 HTTP/2、严格的头部校验、拒绝同时包含 Content-Length 与 Transfer-Encoding 的请求、在边缘丢弃歧义请求,并使用 HTTP Request Smuggler 等工具持续测试。
示例
- HTTP/2 降级到 HTTP/1.1 的失同步攻击,窃取其他用户的会话 Cookie。
- 前端 keep-alive 失同步劫持下一条请求至内部 admin URL。
相关术语
HTTP 请求走私
利用前端代理与后端服务器对 HTTP 请求边界判断不一致的攻击,使攻击者可以在合法请求中夹带一个隐藏的额外请求。
HTTP 响应拆分
用户输入中未受信任的 CR/LF 字符迫使服务器发出额外的、由攻击者控制的 HTTP 响应的注入漏洞。
缓存投毒
将恶意响应保存在共享缓存中,使后续用户收到由攻击者控制内容的攻击。
Web 缓存欺骗
通过恶意 URL 让中间缓存把受害者已认证的敏感响应,作为可公开缓存的资源保存下来的攻击。
Reverse Proxy
Reverse Proxy — definition coming soon.
会话劫持
通过窃取或伪造会话标识符,接管受害者已认证的会话,使攻击者无需密码即可冒充其身份的攻击。