node-tesseract-ocr 至版本 2.2.1 允许在 src/index.js 的 recognize() 中进行操作系统命令注入。该包构建一个 shell 命令字符串并使用 child_process.exec() 执行它。由于输入路径仅用双引号包裹,攻击者可以通过精心构造的文件路径注入 shell 语法。
| 产品 | 受影响版本 | 修复版本 |
|---|---|---|
| node-tesseract-ocr | 所有 2.2.1 及之前版本 | 截至 2026-03-24 无可用修复 |
CVE-2026-26832CWE-78 - 操作系统命令注入9.8(严重)CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:Hsrc/index.js,recognize()存在漏洞的模式是:
const command = [binary, inputOption, "stdout", ...options].join(" ");
exec(command, ...);
该命令字符串继承了 shell 解析特性。恶意文件路径可以突破引号参数的限制。
如果应用程序将不受信任的路径传递给 recognize(),则运行用户提供图像的 OCR 的应用程序可能使主机系统暴露于命令执行风险中。
test.jpg"; touch /tmp/pwned; echo "x
截至撰写本文时,尚无修复的 npm 版本可用。
如果您仍依赖此包:
join(" ") 构建 shell 命令字符串。execFile() 或 spawn()。