curl处理%0c%0b序列不当导致CRLF混淆与头注入
漏洞概述
在针对私有资产的安全审计过程中,意外发现curl在处理HTTP响应中的%0c和%0b序列时存在异常行为。与其他HTTP客户端(如Burp Suite和Python requests库)不同,curl会字面解析这些字符,导致CRLF(回车换行)混淆,可能引发头注入和Cookie注入攻击。
技术细节
测试用例
使用%0c序列的curl请求示例:
|
|
响应显示注入的头部被异常解析:
|
|
使用%0c%0b组合序列的测试:
|
|
响应中成功注入了自定义头部:
|
|
对比测试
- Burp Suite:对相同序列响应不同
- Python requests库:处理方式与curl存在差异
- 公共HTTP响应查看服务:也表现出不同的解析行为
历史背景
curl曾在2012年通过CVE-2012-0036修复了主要的CRLF注入问题(涉及%0a%0d序列)。但本次发现的%0c%0b序列处理异常可能间接重新引入CRLF安全问题。
影响分析
- CRLF混淆
- 头注入攻击
- Cookie注入攻击
后续调查与结论
curl开发团队初步认为该问题仅是终端显示格式问题,而非实际安全漏洞。通过进一步测试(包括PHP和Flask环境),确认该行为确实仅为终端输出格式异常,不构成实际安全威胁。报告最终被标记为"不适用"并公开披露。
时间线
- 2024年11月23日:漏洞报告提交
- 2024年11月25日:确认为终端显示问题,关闭报告
- 2025年7月7日:报告公开披露