CVE-2026-26831textract是一个广泛使用的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常被用于处理用户上传的文件,攻击者无需任何特殊权限即可触发该漏洞,从而获得服务器的完全控制权。