curl -H参数空格前缀导致代理模式下头部注入漏洞分析

curl -H参数空格前缀导致代理模式下头部注入漏洞分析

摘要

安全研究人员发现curl工具在使用-H "[space]header:value"格式添加HTTP头部时,若配合--proxy参数使用,会导致该头部被注入到前一个HTTP头部中的异常行为。该问题在macOS Sequoia 15.1系统上的curl 8.11.0版本中复现成功。

复现步骤

curl -X GET "https://example.com" -H "Secure-Header: XYZ" -H " new-header-that-will-inject-to-previous-header: value" --proxy 127.0.0.1:8080

技术细节

  1. 该行为仅在同时使用--proxy参数时出现
  2. 当第一个头部本身包含空格前缀时,该头部会被附加到前一个头部
  3. 不使用代理参数时行为正常(每个头部单独发送)
  4. 同样适用于-H @file.txt形式,当文件内容以空格开头时

影响分析

虽然目前没有明确的攻击场景,但由于curl被广泛使用,当@file.txt或单个头部名称可能被攻击者控制时,可能导致:

  • 构造畸形请求发送到服务器
  • 头部直接附加到Host头部导致错误日志记录
  • 根据具体程序可能引入其他问题

解决方案建议

由于HTTP头部字段名本身不允许包含空格,建议curl在处理时去除空格并始终将头部添加到新行。

技术讨论

curl维护者指出这是文档记录的行为(HTTP/1允许"折叠"头部),但研究人员通过多个代理测试发现:

  1. 仅当格式为"[space]something:something"时才会传递
  2. 格式为"[space]abc"的头部会被curl直接移除
  3. 测试使用多种代理(包括自定义Python代理)均显示此行为

该报告最终被标记为"Not Applicable",但揭示了curl在HTTP头部处理上的特殊行为值得开发者注意。

原始漏洞报告截图1
原始漏洞报告截图2
原始漏洞报告截图3
原始漏洞报告截图4
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码

posted @ 2025-08-03 12:02  qife  阅读(2)  评论(0)    收藏  举报