Path Traversal in curl file:// Protocol Handler Allows Unauthorized File Access
时间线:报告者 7hackerstar 向 curl 项目提交了一份报告。 8天前
摘要
在我手动审查curl源代码中的文件路径处理逻辑时,我注意到其缺乏对目录遍历序列的适当验证,随后通过实际测试进行了验证。我发现,当使用目录遍历序列(../)时,curl允许通过 file:// 协议处理器未经授权访问任意文件。
受影响版本
- curl 8.13.0_8(官方Windows版本)
- 平台:Windows 10
- curl版本输出:
|
|
漏洞代码位置
该漏洞存在于 lib/file.c 的第229-262行,文件路径在打开前未得到适当验证:
|
|
这段代码在打开文件前未能检查目录遍历序列。当我审查这些代码行时,我注意到没有验证机制来防止包含 ../ 的路径访问预期目录结构之外的文件。
重现步骤
- 从以下网址下载官方curl Windows版本:https://curl.se/windows/dl-8.13.0_8/curl-8.13.0_8-win64-mingw.zip
- 解压归档文件并导航到
bin目录 - 在
C:\test\poc_test.txt创建一个测试文件,内容为:
|
|
- 在与 curl.exe 相同的目录下执行以下命令:
|
|
在我的测试过程中,我观察到文件内容被成功显示,这证明了存在对预期目录之外文件的未经授权访问。
支持材料/参考资料
- 显示成功文件访问的截图(Capture.PNG)- 我在Windows 10上实际测试时捕获
- 分步演示漏洞的概念验证脚本(final_poc.bat)
- 重现过程中使用的测试文件(poc_test.txt),包含我测试时使用的确切内容
- 类似漏洞参考:CVE-2021-22901(表明此模式以前曾出现过)
影响
此漏洞允许攻击者在处理恶意的 file:// URL时读取系统中的任意文件。影响包括:
- 敏感数据泄露:可以访问系统文件(hosts、密码数据库)、用户文档和私钥。在我的测试中,我能够读取完全来自不同目录的文件,这表明了问题的严重性。
- 信息披露:可以枚举系统配置、已安装软件详情和网络设置。这可能为攻击者提供有关目标系统的详细信息。
- 链式攻击:可以与其他漏洞结合以实现完整的系统入侵。例如,读取配置文件可能会泄露其他服务的凭据。
- 远程利用:处理用户提供URL并使用curl的应用程序(如网络爬虫、API客户端、下载管理器)可能被远程利用。许多开发者并未意识到
file://URL可能很危险。
严重性为 高,因为:
- 利用无需身份验证 - 任何攻击者都可以构造恶意URL
- 影响敏感系统数据的机密性 - 核心安全边界被突破
- 存在于最新的官方版本中 - 影响当前版本的所有Windows用户
- 易于利用,技术要求极低 - 我仅用几个简单的命令就能重现它
这不仅仅是一个理论问题。我在Windows 10上的实际操作测试中,成功访问了预期目录结构之外的文件,证明了其现实世界中的可利用性。此漏洞尤其令人担忧,因为curl在全球范围内被无数应用程序和系统所使用。
附件
3个附件:
- F5182166: final_poc.bat
- F5182167: poc_test.txt
- F5182169: Capture.PNG
7hackerstar 发表了评论。8天前
欢迎! 希望我的报告足够清晰,考虑到我的英语水平有限。
bagder (curl工作人员) 发表了评论。8天前
我不理解这个说法。漏洞是什么?
bagder (curl工作人员) 关闭了报告并将状态更改为“不适用”。更新于 8天前
- curl默认会移除dotdot序列
- curl已经可以通过
file://访问整个本地磁盘,这是设计使然
bagder (curl工作人员) 请求披露此报告。8天前
根据项目的透明度政策,我们希望所有报告都被披露并公开。
bagder (curl工作人员) 披露了此报告。7天前
报告日期:2026年1月3日,下午6:59(UTC) 报告者:7hackerstar 报告对象:curl 报告ID:#3485930 严重性:高 (7 ~ 8.9) 披露日期:2026年1月4日,上午10:34(UTC) 弱点:路径遍历 CVE ID:CVE-2021-22901 赏金:无 账户详情:无