pdf-image 直到版本 2.0.0 均存在通过 pdfFilePath 参数导致的 OS 命令注入漏洞。该包使用 util.format() 构建 shell 命令字符串,并通过 child_process.exec() 执行。如果应用程序将攻击者控制的文件路径传入 PDFImage,该路径中的 shell 元字符可能导致任意命令执行。
| 产品 | 受影响版本 | 修复版本 |
|---|---|---|
| pdf-image | 直到 2.0.0 的所有版本 | 截至 2026-03-24 无可用修复 |
CVE-2026-26830CWE-78 - OS 命令注入9.8(严重)CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:Hindex.js易受攻击的代码路径会进入 constructGetInfoCommand() 和 constructConvertCommandForPage(),两者在调用 child_process.exec() 之前都会将 PDF 路径插入到 shell 命令中。
任何接受用户可控 PDF 路径并将其传给 pdf-image 的应用程序,最终都可能在主机系统上执行攻击者提供的 shell 命令。
const { PDFImage } = require("pdf-image");
const pdfImage = new PDFImage('test.pdf"; touch /tmp/pwned; echo "');
pdfImage.getInfo();
如果注入的命令被执行,进程会创建 /tmp/pwned。
截至撰写本文时,尚无修复版 npm 发布可用。
如果您仍依赖此包:
PDFImage。execFile() 或使用数组参数的 spawn())替代 shell 字符串拼接。