报告 #3180396 - cURL在跨域变更时未能剥离Proxy-Authorization头
摘要
cURL在跨域重定向时未能正确剥离Proxy-Authorization头,可能导致代理授权信息泄露。报告者grahamcampbell在维护PHP Guzzle HTTP包时发现此问题,并参考了Golang近期修复的类似漏洞CVE-2025–4673。
受影响版本
8.14.1
复现步骤
cURL会剥离Authorization和Cookie头,但不会剥离Proxy-Authorization头。向服务器发送包含这三个头的请求,服务器响应重定向到另一主机时,只有前两个头在后续请求中被剥离。
示例命令
|
|
请求和响应流程
- 初始请求:
|
|
- 服务器响应:
|
|
- 后续请求:
|
|
注意:Authorization头被剥离,但Proxy-Authorization头未被剥离。
影响
代理授权头信息可能暴露给恶意攻击者。
官方回应
cURL团队认为这不是一个安全问题,而是预期行为。用户可以通过使用cURL的代理凭证选项来正确处理此问题。Proxy-Authorization头是"逐跳"头,通常在同一代理下保持不变,即使重定向到其他主机。
讨论与参考
- Golang团队近期修复了类似问题,并提供了补丁参考。
- 其他项目如Python Requests也存在相关安全公告,但问题不同。
- cURL团队强调,不同API有不同的设计和文档约定,不应假定所有实现行为一致。
报告状态
- 提交时间:2025年6月6日 1:26 UTC
- 关闭时间:2025年6月7日 8:43 UTC
- 状态:不适用(Not Applicable)
- 披露时间:2025年6月27日 9:48 UTC
- 严重性:中等(4 ~ 6.9)
- 弱点:信息泄露
- CVE ID:无
- 赏金:无
结论
cURL团队认为此行为符合文档约定,不属于安全漏洞。建议用户通过代码层面 mitigation 来处理敏感头信息。