zebbernCVE/CVE-2026-26832
GitHub: zebbernCVE/CVE-2026-26832
记录 node-tesseract-ocr npm 包中高危操作系统命令注入漏洞(CVE-2026-26832)的安全公告,包含漏洞原理、影响范围及缓解建议。
Stars: 0 | Forks: 0
# CVE-2026-26832: node-tesseract-ocr 中的操作系统命令注入
## 概述
`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 ID: `CVE-2026-26832`
- CWE: `CWE-78` - 操作系统命令注入
- 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`
- 受影响组件: `src/index.js`, `recognize()`
漏洞模式如下:
```
const command = [binary, inputOption, "stdout", ...options].join(" ");
exec(command, ...);
```
该命令字符串继承了 Shell 解析规则。恶意的文件路径可以突破引号包裹的参数。
## 技术影响
如果应用程序将不可信的路径传递给 `recognize()`,那么对用户提供的图像运行 OCR 可能会使主机系统暴露于命令执行风险中。
## 概念验证
```
test.jpg"; touch /tmp/pwned; echo "x
```
## 缓解措施
在撰写本文时,尚无可用的 npm 修复版本。
如果您仍依赖此包:
1. 将输入路径视为不可信数据。
2. 停止使用 `join(" ")` 构建 Shell 命令字符串。
3. 使用带有显式参数的 `execFile()` 或 `spawn()`。
4. 迁移到维护良好的封装库,或者在您自己的代码中安全地调用 Tesseract。
## 参考资料
- https://www.npmjs.com/package/node-tesseract-ocr
- https://github.com/zapolnoch/node-tesseract-ocr
- https://github.com/zapolnoch/node-tesseract-ocr/blob/master/src/index.js
标签:API密钥检测, child_process, CMS安全, Cutter, CVE-2026-26832, CWE-78, GNU通用公共许可证, JavaScript, MITM代理, Node.js, node-tesseract-ocr, npm包, OS命令注入, RCE, RuleLab, Tesseract-OCR, 任意代码执行, 光学字符识别, 图像处理, 安全漏洞, 攻击向量, 数据可视化, 暗色界面, 编程工具, 输入验证, 远程代码执行, 高危漏洞