thumbler 版本 1.1.2 及之前版本在 lib/thumbler.js 的 thumbnail() 函数中存在操作系统命令注入漏洞。该包将 input、output、time 和 size 值拼接成一个 ffmpeg 命令字符串,并使用 child_process.exec() 执行该字符串。攻击者如果能够控制这些值中的任意一个,就可以注入 shell 语法并执行任意命令。
| 产品 | 受影响版本 | 修复版本 |
|---|---|---|
| thumbler | 所有 1.1.2 及之前版本 | 截至 2026-03-24 无可用修复 |
CVE-2026-26833CWE-78 - 操作系统命令注入9.8 (严重)CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:Hlib/thumbler.js, thumbnail()漏洞代码路径构造了以下 shell 字符串:
exec(
'ffmpeg -ss ' + time + ' -i "' + input + '" -vframes 1 -s ' +
size + ' "' + output + '"',
...
);
由于命令是通过字符串拼接而成,每个由攻击者控制的字段都是一个潜在的注入点。
任何使用用户可控媒体生成缩略图的服务,在调用 thumbnail() 时都可能在主机上执行命令。
require("thumbler").thumbnail(
'test.mp4"; id > /tmp/pwned; echo "',
"/tmp/out.jpg",
{},
() => {}
);
撰写本文时,尚无修复的 npm 版本可用。
如果你仍然依赖此包:
thumbnail()。