curl mishandles %0c%0b
sequences in HTTP responses leading to CRLF confusions, Headers and Cookies Injection
报告摘要
该报告由安全研究人员在私有资产的安全审计过程中意外发现。研究发现curl在处理HTTP响应中的%0c
和%0b
序列时存在异常行为,与Burp代理、Python requests库等其他HTTP客户端的处理方式不同。
技术细节
问题描述
curl将%0c
和%0b
序列按字面意义处理,而不考虑Web服务器对这些字符的响应方式。虽然目标资产对CRLF注入有良好防护,无法使用常见的%0a%0b
序列注入头部/ Cookie,但curl对%0c
序列的异常响应导致了潜在的安全问题。
示例代码
|
|
对比测试
- Burp代理:响应不同
- Python requests库:响应不同
- 公共HTTP响应查看服务:响应不同
安全影响
- CRLF混淆
- 头部注入
- Cookie注入
历史背景
curl在2012年通过CVE-2012-0036修复了主要的CRLF问题(使用%0a%0d
序列),但此报告描述的漏洞可能间接使CRLF攻击再次成为可能。
后续讨论
curl开发团队最初认为这只是终端显示问题,而非实际安全漏洞。通过进一步测试发现,%08
(退格字符)和%0c
(换页字符)在终端中的显示效果造成了视觉混淆,但并未实际注入数据。
最终结论
经过在PHP和Flask环境中的测试,确认该问题仅为终端输出显示问题,不存在实际安全威胁。报告状态被标记为"不适用"。
报告ID: #2861797
报告时间: 2024年11月23日
研究人员: mdakh404, mchklt
相关CVE: CVE-2012-0036
状态: 已披露(2025年7月7日)