curl处理%0c%0b序列不当导致CRLF混淆与头部/ Cookie注入
报告摘要
该报告由安全研究人员在私有资产的安全审计过程中意外发现。问题源于curl在处理HTTP响应中的%0c和0b序列时,与Burp代理、Python的requests库及其他HTTP响应查看服务的行为存在差异。具体表现为,curl将这些序列字面处理,而其他工具则将其视为无效字符。
漏洞细节
问题描述
curl在处理包含%0c和%0b序列的HTTP响应时,未正确解析这些字符,导致CRLF(回车换行)混淆。这可能在接收HTTP响应时引发不安全处理,从而允许头部和Cookie注入。
示例代码
使用%0c序列的curl命令示例:
|
|
响应显示注入的头部被错误解析:
|
|
使用%0c%0b序列的curl命令示例:
|
|
响应显示注入的头部被成功解析:
|
|
对比分析
- Burp代理:响应不同,未将序列解析为CRLF。
- Python requests库:响应不同,未将序列解析为CRLF。
- 公共HTTP响应查看服务:响应不同,未将序列解析为CRLF。
影响
- CRLF混淆
- 头部注入
- Cookie注入
后续讨论与结论
curl开发团队初步认为该问题仅是终端显示的艺术效果,而非实际安全漏洞。通过进一步测试,研究人员在PHP和Flask环境中验证后确认,该问题确实仅为终端输出格式问题,不存在安全风险。报告最终被关闭,状态设为“不适用”。
时间线
- 2024年11月23日:报告提交。
- 2024年11月25日:报告关闭,确认为终端显示问题。
- 2025年7月7日:报告公开披露,以符合项目透明度政策。
相关CVE
- CVE-2012-0036:curl早期CRLF注入漏洞(已修复)。
参与者
- 报告者:mdakh404
- 合作者:mchklt
- curl团队:bagder, dfandrich
状态
- 严重性:无评级
- 奖金:无
- 披露时间:2025年7月7日
该报告强调了在安全测试中工具行为差异的重要性,并最终确认curl的该行为不构成安全威胁。