Curl mk-ca-bundle脚本中的命令注入漏洞分析

本文详细分析了一个在curl项目mk-ca-bundle脚本中发现的安全漏洞。该漏洞源于Perl代码中对用户输入参数`$_[0]`的不当处理,允许攻击者注入并执行任意系统命令,可能导致信息泄露等风险。

报告 #3418760 - 命令注入 - 严重性

描述

curl 8.17.0.1版本中的 $openssl 代码存在可利用的安全问题。

复现步骤

  1. 在Windows系统上解压并安装curl。
  2. 查看 mk-ca-bundle 中的代码。

受影响范围

  • 软件/版本: curl:8.17.0.1
  • 操作系统: Windows 11/10/8

辅助分析工具

  • Deep Seek
  • perl

问题代码

1
$result = "$openssl" dgst -r -sha256 "$_[0]";

问题: 参数 $_[0] 被直接插值(拼接)到shell命令中。 风险: 攻击者可能借此执行任意命令。

漏洞利用示例

1
2
sha256("file.txt; rm -rf /")
sha256("file.txt; cat /etc/passwd")

此致, @tomar-re

影响

可能导致敏感信息泄露。

时间线与讨论

dfandrich (curl 团队成员) 发表了评论。 2天前

虽然这个脚本的代码可以收紧,但我认为这在现实中不太可能被利用。首先,这个脚本不太可能被任何人用来运行任意的命令行参数;如果它是自动化运行的,则更可能使用固定的值,从而不受此问题影响。参数本身来自 -d 命令行选项,该选项绝不应设置为可由攻击者控制,因为它可以包含任意URL(攻击者从一开始就可以将其指向内部资源以进行数据渗出)。因此,我认为这个脚本永远不会以可能导致此问题的方式配置。你能想出一个这可能成为问题的合理场景吗?

bagder (curl 团队成员) 关闭了报告并将状态更改为“不适用”。 一天前

认为这不是一个安全问题。

bagder (curl 团队成员) 请求公开此报告。 一天前

根据项目的透明度政策,我们希望所有报告都能被公开。

bagder (curl 团队成员) 公开了此报告。 一天前

jimfuller2024 (curl 团队成员) 发表了评论。 一天前

对输入进行清理是一种良好的开发实践——不过需要更多信息来说明这在实践中如何被利用——如果你能在某个环境中运行这个脚本,你大概也能做许多其他(更坏的)事情。

报告详情

  • 报告日期: 2025年11月10日 UTC时间下午5:36
  • 报告者: tomar-re
  • 报告对象: curl
  • 报告ID: #3418760
  • 严重性: 未评级 (—)
  • 公开日期: 2025年11月11日 UTC时间上午6:41
  • 弱点类型: 命令注入 - 通用
  • CVE ID: 无
  • 赏金: 无
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计