curl处理HTTP响应中%0c%0b序列不当导致CRLF混淆与头注入风险

本文披露了curl在处理HTTP响应时对%0c%0b序列的异常解析行为,可能导致CRLF混淆、头注入和Cookie注入安全风险。通过对比Burp Suite和Python requests库的响应差异,揭示了潜在的攻击向量。

curl处理%0c%0b序列不当导致CRLF混淆与头注入

漏洞概述

在针对私有资产的安全审计过程中,意外发现curl在处理HTTP响应中的%0c%0b序列时存在异常行为。与其他HTTP客户端(如Burp Suite和Python requests库)不同,curl会字面解析这些字符,导致CRLF(回车换行)混淆,可能引发头注入和Cookie注入攻击。

技术细节

测试用例

使用%0c序列的curl请求示例:

1
curl "https://private.asset:8100/sap/public/bc/icf/logoff?redirecturl=//google.com/%0cX-Injected-Header:%20test" -I

响应显示注入的头部被异常解析:

1
2
3
4
5
HTTP/1.1 302 Moved temporarily
content-type: text/html; charset=utf-8
content-length: 17
location: //google.com/
                       X-Injected-Header: test

使用%0c%0b组合序列的测试:

1
curl "https://private.asset:8100/sap/public/bc/icf/logoff?redirecturl=//google.com/%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%08%0cX-Header-Injection:%20test" -I

响应中成功注入了自定义头部:

1
2
3
4
5
HTTP/1.1 302 Moved temporarily
content-type: text/html; charset=utf-8
content-length: 17
location: //google.com/
X-Header-Injection: test

对比测试

  • 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日:报告公开披露
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计