Report #3250117 - Uncontrolled File Write/Arbitrary File Creation
漏洞描述
提供的代码片段中的dumpeasysrc函数允许攻击者通过global->libcurl变量指定任意文件路径来输出生成的libcurl源代码。如果global->libcurl值未经过适当清理或限制,恶意用户可以提供敏感系统文件(例如/etc/passwd、/etc/cron.d/malicious_job、用户的.bashrc等)或设备文件(例如/dev/null、/dev/random)的路径。
核心问题在于直接调用fopen(o, FOPEN_WRITETEXT),其中o = global->libcurl,且未对提供的路径进行任何检查。
漏洞代码
|
|
概念验证(PoC)步骤
我将演示在标准临时目录中覆盖用户创建的非关键文件。这易于复现,并清晰显示了完整性影响,而无需尝试直接破坏关键系统文件(普通用户可能因操作系统权限而被阻止)。
- 在临时位置创建一个独特的虚拟文件:
|
|
- 执行易受攻击的curl命令覆盖文件:
假设您的curl可执行文件(使用易受攻击代码构建的版本)可在PATH中访问,或者您正在使用
./curl运行它。
Curl版本信息:
|
|
执行覆盖命令:
|
|
使用http://example.com比google.com更好,因为它避免了潜在的重定向,并使curl输出更简单,专注于--libcurl方面。
- 验证curl执行后文件的内容:
|
|
/tmp/curl_test_overwrite.txt的内容将被生成的libcurl C代码替换。
影响
数据损坏/丢失: 任意文件可以被生成的libcurl C源代码覆盖。
时间线
-
tryhackplanet 向curl提交报告
- 2025年7月13日 下午4:50 UTC
-
bagder curl staff 发表评论
- 2025年7月13日 下午5:04 UTC
- “不,这是curl按设计工作。用户提供文件名让curl创建源代码。这不是攻击。”
-
bagder curl staff 关闭报告并将状态更改为"不适用"
- 2025年7月13日 下午5:06 UTC
-
bagder curl staff 请求披露此报告
- 2025年7月13日 下午5:06 UTC
- “根据项目的透明政策,我们希望所有报告都被披露并公开。”
-
jimfuller2024 curl staff 发表评论
- 2025年7月13日 下午5:07 UTC
- “也许我漏掉了什么 - 我也没看到这里有任何安全问题。”
-
bagder curl staff 发表评论
- 2025年7月13日 下午5:12 UTC
- “curl可以在操作系统允许的文件系统中的任何位置创建文件,使用许多不同的命令行选项。这是设计使然。”
-
bagder curl staff 披露此报告
- 2025年7月13日 下午5:12 UTC
报告详情
- 报告时间: 2025年7月13日 下午4:50 UTC
- 报告者: tryhackplanet
- 报告对象: curl
- 报告ID: #3250117
- 严重性: 高 (7 ~ 8.9)
- 披露时间: 2025年7月13日 下午5:12 UTC
- 弱点: 代码注入
- CVE ID: 无
- 赏金: 无