Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

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

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 包的缓解措施。

查看仓库
1天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

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(OS 命令中使用的特殊元素中和不当)
软件包@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 = 7.8 高危(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:

root@kitploit:~
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

只有 inputPath 和 outputPath 会接受检查,而 Zod 模式只验证类型(z.string()),从不验证内容——因此元字符可以畅通无阻地通过。

当 convert_video 调用的 options 被设置为 ; touch /tmp/marker ; 时,会产生:

root@kitploit:~
/bin/sh -c "ffmpeg -i /tmp/in.mp4 ; touch /tmp/marker ; /tmp/out.mp4"

复现

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

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

在受影响版本上预期会看到:

root@kitploit:~
==== 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 再次确认默认分支上仍存在该漏洞点。请仅对你有权测试的基础设施运行它。

检测

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

MITRE ATT&CK T1059.004 命令和脚本解释器:Unix Shell。

缓解措施

目前不存在已修复的发布版本,因此可选方案是隔离和移除:

  • 停止使用该包——如果它所服务的代理处理任何不可信内容的话。这是目前唯一完整的缓解措施。
  • 如果必须保留,请在容器或虚拟机中以其非特权用户身份运行,除媒体工作目录外文件系统为只读,环境中不包含任何凭证,且禁止网络出口。这样,代码执行最多只能让攻击者获得一个沙箱,而不是宿主机。
  • 不要通过网络传输暴露它。仅使用 stdio 的部署方式正是使该漏洞保持在 7.8 分而非 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。

时间线

参考资料

  • 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。

下载工具
extract_audioformat
create_video_from_imagescodec、pixelFormat、extraOptions
extraOptions
日期事件
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再次确认默认分支上仍存在该漏洞点;npm 最新版本仍为 0.2.1;本文发布