zebbernCVE/CVE-2026-26831

GitHub: zebbernCVE/CVE-2026-26831

记录了 textract 库 2.5.0 及之前版本中存在的 OS 命令注入漏洞详情与利用方法。

Stars: 0 | Forks: 0

# CVE-2026-26831:textract 中的 OS 命令注入 ## 摘要 `textract` 截至 `2.5.0` 版本允许通过 提供给多个提取器的文件路径进行 OS 命令注入。多个代码路径 将该文件路径传入 `child_process.exec()`,且缺乏充分的清理。 能够影响文件名或路径的攻击者可以脱离命令行并在主机上运行任意命令。 ## 受影响产品 | 产品 | 受影响版本 | 修复版本 | | --- | --- | --- | | textract | 截至 2.5.0 的所有版本 | 截至 2026-03-24 尚无可用修复 | ## 漏洞详情 - CVE ID: `CVE-2026-26831` - CWE: `CWE-78` - OS 命令注入 - 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` - 受影响组件: - `lib/extractors/doc.js` - `lib/extractors/rtf.js` - `lib/extractors/dxf.js` - `lib/extractors/images.js` - `lib/util.js` 其中一个例子是 `doc.js` 提取器: ``` exec('antiword -m UTF-8.txt "' + filePath + '"', ...) ``` 另一个是 `rtf.js` 路径处理,它在执行 shell 命令前仅转义了空格。 这无法阻止诸如 `;`、反引号或 `$()` 等元字符。 ## 技术影响 应用程序通常在用户上传的文档上使用 `textract`。在该 设置下,恶意文件名可在文本提取期间触发命令执行。 ## 概念验证 如下输入文件名: ``` test";whoami;".doc ``` 可在易受攻击的提取器运行时脱离引号包裹的命令字符串。 ## 缓解措施 在撰写本文时,尚无固定的 npm 版本发布。 如果您仍依赖此包: 1. 请勿将受攻击者控制的文件路径传递给 `textract`。 2. 从提取器代码中移除 shell 字符串拼接。 3. 将 `exec()` 替换为参数安全的进程执行方式。 4. 迁移至维护良好的文本提取流水线。 ## 参考资料 - https://www.npmjs.com/package/textract - https://github.com/dbashford/textract - https://github.com/dbashford/textract/blob/master/lib/extractors/doc.js - https://github.com/dbashford/textract/blob/master/lib/extractors/rtf.js - https://github.com/dbashford/textract/blob/master/lib/util.js
标签:child_process, CVE-2026-26831, CWE-78, GNU通用公共许可证, MITM代理, Node.js, npm包, OS命令注入, RCE, textract, 任意代码执行, 安全公告, 安全漏洞, 文件处理, 文本提取, 暗色界面, 编程工具, 软件开发工具包, 输入验证缺失, 远程代码执行, 高危漏洞