zebbernCVE/CVE-2026-26830
GitHub: zebbernCVE/CVE-2026-26830
记录了 npm 包 pdf-image 中存在的 OS 命令注入漏洞详情、PoC 及缓解建议。
Stars: 0 | Forks: 0
# CVE-2026-26830:pdf-image 中的 OS 命令注入
## 概述
`pdf-image` 截止 `2.0.0` 版本允许通过 `pdfFilePath` 参数进行 OS 命令注入。该 package 使用 `util.format()` 构建 shell 命令字符串,并使用 `child_process.exec()` 执行它们。如果应用程序将攻击者可控的文件路径传递给 `PDFImage`,该路径中的 shell 元字符可能导致任意命令执行。
## 受影响产品
| 产品 | 受影响版本 | 修复版本 |
| --- | --- | --- |
| pdf-image | 截止 2.0.0 的所有版本 | 截至 2026-03-24 尚无修复 |
## 漏洞详情
- CVE ID:`CVE-2026-26830`
- CWE:`CWE-78` - OS Command Injection
- CVSS 3.1:`9.8`(`Critical`)
- Vector:`CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H`
- 受影响组件:`index.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 版本可用。
如果您仍然依赖此 package:
1. 停止将不受信任的文件路径传递给 `PDFImage`。
2. 将 shell 字符串构建替换为参数安全的进程执行方式,例如使用带有数组的 `execFile()` 或 `spawn()`。
3. 优先使用维护中的替代方案或包含修复的私有 fork。
## 参考资料
- https://www.npmjs.com/package/pdf-image
- https://github.com/mooz/node-pdf-image
- https://github.com/mooz/node-pdf-image/blob/master/index.js
标签:API密钥检测, child_process, CMS安全, CVE-2026-26830, CVSS 9.8, CWE-78, GNU通用公共许可证, JavaScript, MITM代理, Node.js, npm包, OS命令注入, pdf-image, PDF处理, RCE, Shell注入, 任意代码执行, 安全漏洞, 数据可视化, 文档安全, 暗色界面, 软件开发工具包, 输入验证, 高危漏洞