Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-52617 — 针对 MCP ffmpeg 辅助工具中 OS 命令注入漏洞的安全公告与概念验证(PoC),包含根本原因分析、检测器指南,以及针对未修复 npm 包的缓解措施。 | Kitploit
工具/GitHubGitHub/s1ko/cve-2026-52617
漏洞分析代码分析漏洞利用供应链安全
GitHubs1ko/cve-2026-52617

CVE-2026-52617

针对 MCP ffmpeg 辅助工具中 OS 命令注入漏洞的安全公告与概念验证(PoC),包含根本原因分析、检测器指南,以及针对未修复 npm 包的缓解措施。

查看仓库
402个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-52617 — @sworddut/mcp-ffmpeg-helper:通过 ffmpeg 工具选项进行操作系统命令注入

runFFmpegCommand 将根据 MCP 工具参数构建的字符串传递给 spawn(…, { shell: true }),因此 options、format、 codec、pixelFormat 或 extraOptions 中的 shell 元字符会在运行该服务器的主机上执行。

⚠ 不存在修复版本

截至 2026-08-22,最新的 npm 发布版本是 0.2.1,即受影响的 版本,并且该危险调用点在仓库的默认分支上仍然存在。 没有可升级到的版本。有关用户在此期间可以采取的措施,请参阅缓解措施。

CVECVE-2026-52617
CWECWE-78(操作系统命令中使用的特殊元素的不当中和)
软件包@sworddut/mcp-ffmpeg-helper(npm)
受影响版本0.2.1 及更早版本 — 所有已发布版本
修复版本无
CVSS v3.1AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 8.4 高危(stdio 传输)。如果服务器被包装在网络传输中,AV:N → 9.8 严重。
报告者s1ko(github.com/s1ko,[email protected])
CVE 分配日期2026-07-13,MITRE CNA-LR

威胁模型

MCP 工具参数受攻击者影响。它们由 LLM 根据智能体处理的内容生成 ——文档、网页、工具输出——因此间接提示注入使攻击者能够控制工具 处理程序接收到的值。如果处理程序将其中任何值传入 shell,就会将 这种影响转化为在运行 MCP 服务器的主机上的代码执行。这与先例 aws-mcp-server / CVE-2026-5058 的模型相同。

媒体转换服务器对此类攻击而言是特别自然的目标:它被要求处理的 文件正是智能体从其他地方获取的不可信内容。

执行

src/utils/ffmpeg.ts —— 命令被组装为字符串,并且 shell 被显式启用:

function runProcess(command: string, args: string[], useShell = false) {
  const child = spawn(command, args, { shell: useShell, windowsHide: true });
  …
}

export async function runFFmpegCommand(command: string): Promise<string> {
  const { stdout, stderr, code } = await runProcess(`ffmpeg ${command}`, [], true);
  …
}

spawn("ffmpeg " + command, [], { shell: true }) 会将整个字符串通过 /bin/sh -c 执行。调用方贡献给 command 的所有内容都是 shell 语法。

src/tools/handlers.ts 从三个工具中到达该辅助函数,插入了从未针对内容进行验证的参数:

工具可注入参数
convert_videooptions
extract_audioformat
create_video_from_imagescodec、pixelFormat、extraOptions

只有 inputPath 和 outputPath 会被检查,而且 Zod schema 只验证类型(z.string()),从不验证内容——因此元字符会直接通过。

一次 convert_video 调用,将 options 设置为 ; touch /tmp/marker ; 会产生:

/bin/sh -c "ffmpeg -i /tmp/in.mp4 ; touch /tmp/marker ; /tmp/out.mp4"

复现

poc/driver.mjs 通过 stdio 与 MCP 通信:它初始化服务器,针对 convert_video 发起一次 tools/call,并注入一个 options 值,然后检查标记文件是否存在。该载荷是一个无害的 touch。

npm pack @sworddut/[email protected]
tar xf sworddut-mcp-ffmpeg-helper-0.2.1.tgz && cd package && npm install
node ../poc/driver.mjs

在受影响的版本上预期会出现:

==== POC RESULT (@sworddut/mcp-ffmpeg-helper) ====
marker /tmp/PWNED_ffmpeg created: true
verdict: CONFIRMED — command injection executed

ffmpeg 无需安装——无论开头的二进制文件是否能解析,注入的命令都会在同一个 /bin/sh -c 字符串中执行。已于 2026-06-01 在隔离容器中验证,2026-06-13 再次验证,并于 2026-08-22 在默认分支上再次确认该 sink 仍然存在。请仅针对你获授权测试的基础设施运行它。

检测

  • 包含 ;、&&、||、|、反引号或 $( 的 ffmpeg 命令行。来自此服务器的合法 ffmpeg 调用不会包含这些字符。
  • 命令行以 ffmpeg 开头、并在分隔符后包含第二条命令的 sh -c 进程——这是一种进程树信号(auditd、eBPF、Falco、EDR),不依赖应用程序日志。
  • MCP 服务器进程的意外子进程。ffmpeg 和 ffprobe 是预期内的;shell、解释器或网络客户端则不是。
  • 服务器会将每次调用以 Running FFmpeg command: ffmpeg <command> 的形式记录到 stderr,如果日志被收集,这是发现注入值最省事的地方。
  • MCP 工具调用日志中,options、format、codec、pixelFormat 或 extraOptions 包含 shell 元字符。

MITRE ATT&CK T1059.004 Command and Scripting Interpreter: Unix Shell。

缓解措施

目前没有已修复的版本,因此可选方案是遏制与移除:

  • 停止使用该包,如果它所服务的 agent 会处理任何不受信任的内容。这是目前唯一可用的完整缓解措施。
  • 如果必须保留,请以非特权用户在容器或虚拟机中运行它,除媒体工作目录外使用只读文件系统,环境中不包含凭据,并且禁止网络出口。这样代码执行给攻击者带来的只是一个沙箱,而不是宿主机。
  • 不要通过网络传输方式暴露它。仅使用 stdio 的部署方式正是使其严重性保持在 8.4 而非 9.8 的原因。
  • 包装或 fork 该服务器,在五个上述参数到达 runFFmpegCommand 之前拒绝其中的 shell 元字符。

上游修复方案是去掉 shell: true,改为向 ffmpeg 传递参数向量——spawn("ffmpeg", ["-i", inputPath, …])——并根据允许列表中的 format、codec 和 pixelFormat 值构建该数组,而不是使用自由格式的字符串。内容验证,而不仅仅是 Zod 类型验证,才是根本要求。

NIST SP 800-53r5 SI-10;OWASP ASVS v4 §5.3.8;CWE-78 缓解措施 M1 和 M2。

时间线

日期事件
2026-05-29通过对已发布 tarball 的源代码审查发现漏洞
2026-06-01在隔离容器中通过 MCP stdio 进行动态验证
2026-06-13在第二台主机上再次验证;该仓库未启用 Private Vulnerability Reporting,且 package.json 的 repository/bugs/homepage 字段仍保留 github.com/yourusername 模板,未留下任何有记录的安全联系方式
2026-07-13MITRE CNA-LR 分配 CVE-2026-52617,s1ko 被记为发现者
2026-08-22在默认分支上再次确认 sink;npm 最新版本仍为 0.2.1;本文发布

参考资料

  • npm 包 — https://www.npmjs.com/package/@sworddut/mcp-ffmpeg-helper
  • 仓库 — https://github.com/sworddut/mcp-ffmpeg-helper
  • MCP 威胁模型的先例 — CVE-2026-5058(aws-mcp-server)

同一轮研究中的配套公告: CVE-2026-52616、 CVE-2026-52618。

许可证

MIT — 参见 LICENSE。

下载工具