Curl netrc CRLF注入漏洞分析

本文详细分析了Curl netrc文件中CRLF注入漏洞的原理、复现步骤及影响范围,涉及FTP和POP3协议的命令注入风险,并提供了修复建议。

报告 #2831558 - netrc crlf 注入 | HackerOne

时间线
nyymi 向 curl 提交报告
2024年11月9日 23:23 UTC

摘要
Curl 允许在 netrc 文件的登录和密码字段中对 CR 和 LF 字符进行编码。攻击者如果能够影响 netrc 条目的内容,可以通过在登录名或密码中注入 CRLF 来注入 FTP 命令。POP3 可能同样受影响,但尚未测试。

仅当有人可以自由选择其用户名或密码,并将其注入到 netrc 文件中时,此情况才可能被视为漏洞。例如,某些应用程序根据用户提供的输入构建 netrc 文件时可能发生这种情况。

这很可能属于“本地攻击者已存在”类别的问题。然而,我将决定权交给项目方。如果不被视为安全问题,我将关闭该工单,并可以在安全流程之外作为普通错误进行修复。

复现步骤

  1. 创建包含以下内容的 netrc 文件:
1
2
3
machine localhost
  login alice
  password "alicespassword\r\nDELE pocfile.txt"
  1. 运行命令:
1
2
echo -ne "220 \r\n331 \r\n" | nc -v -l -p 9999
curl -v --netrc-file netrc ftp://localhost:9999

修复建议
在为使用这些字符作为分隔符的协议(如 FTP、POP3 等)构建命令时,不允许在用户名或密码中使用 CR 或 LF。

影响
FTP/POP3 命令注入。

后续动态

  • bagder (curl 工作人员) 于 2024年11月10日 8:12 UTC 发表评论,表示感谢报告,并承诺尽快调查。
  • bagder 于 2024年11月10日 21:47 UTC 发表评论,认为此问题属于“本地攻击者已存在”类别,并非由 curl 引起的安全问题。
  • nyymi 于 2024年11月10日 22:56 UTC 关闭报告,状态改为“不适用”。
  • bagder 于 10 天前请求披露此报告,以遵循项目透明度政策。
  • bagder 于 9 天前披露此报告。

报告详情

  • 报告时间:2024年11月9日 23:23 UTC
  • 报告者:nyymi
  • 报告对象:curl
  • 报告 ID:#2831558
  • 严重性:无评级 (—)
  • 披露时间:2025年7月7日 10:17 UTC
  • 弱点:CRLF 注入
  • CVE ID:无
  • 奖金:无
  • 账户详情:无
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计