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

CVE-2026-26832 node-tesseract-ocr OS命令注入漏洞

披露日期: 2026-03-25

漏洞信息

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

相关标签

OS命令注入RCEnode-tesseract-ocrNode.jsCVE-2026-26832NPM

漏洞概述

node-tesseract-ocr是一个用于Node.js的Tesseract OCR封装库。在2.2.1及之前的所有版本中,该组件存在严重的操作系统命令注入漏洞。漏洞产生于src/index.js文件的recognize()函数,由于未对用户输入的文件路径参数进行适当的清理和验证,直接将其拼接到shell命令字符串并传递给child_process.exec()执行,攻击者可利用此漏洞远程执行任意系统代码。

技术细节

该漏洞属于典型的OS命令注入。在Node.js环境中,child_process.exec函数会启动一个新的shell进程(如/bin/sh)来执行命令。如果开发者将用户可控的输入(如文件路径)直接拼接到命令字符串中,且未经过滤,攻击者可以通过注入特殊字符(如;, &, |, $()等)来终止原始命令并追加执行恶意命令。在本例中,node-tesseract-ocr的recognize()函数接受图像路径作为参数。由于CVSS向量为AV:N/AC:L/PR:N/UI:N,表明攻击者无需认证且无需用户交互即可通过网络发起攻击。攻击者只需构造一个包含恶意Shell指令的文件路径字符串发送给目标应用,即可在服务器上下文中以应用运行权限执行任意系统命令。由于CVSS评分高达9.8,该漏洞极易被利用,可能导致服务器被完全攻陷,数据泄露或勒索软件植入。

攻击链分析

STEP 1
1. 侦察
攻击者识别目标应用程序使用了存在漏洞的node-tesseract-ocr包(版本<=2.2.1)。
STEP 2
2. 武器化
攻击者构造包含Shell元字符(如分号、反引号)的恶意文件路径字符串,该字符串旨在拼接并执行额外的系统命令。
STEP 3
3. 投递
攻击者通过网络向目标应用程序的API接口发送请求,将恶意构造的文件路径作为参数传递给recognize()函数。
STEP 4
4. 利用
后端服务器处理请求,vulnerable函数将文件路径拼接到命令中并调用child_process.exec,导致恶意Shell命令在服务器上执行。
STEP 5
5. 影响
攻击者成功获得服务器远程代码执行权限,可窃取数据、安装后门或破坏系统完整性。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
const ocr = require('node-tesseract-ocr'); // Malicious payload demonstrating OS Command Injection // The semicolon (;) is used to separate the tesseract command from the injected command const maliciousImagePath = "/tmp/image.png; touch /tmp/pwned; cat /etc/passwd"; (async () => { try { // The vulnerable recognize() function concatenates the input into a shell command // This results in execution: 'tesseract /tmp/image.png; touch /tmp/pwned; cat /etc/passwd stdout' const text = await ocr.recognize(maliciousImagePath, { lang: 'eng', oem: 1, psm: 3 }); console.log(text); } catch (error) { console.error(error); } })();

影响范围

node-tesseract-ocr <= 2.2.1

防御指南

临时缓解措施
建议立即升级该依赖包至最新版本。如果无法立即升级,请严格限制对调用该函数接口的访问权限,并对用户输入的文件路径进行严格的正则校验,严禁包含shell元字符(如 ;, &, |, $, >, < 等)。同时,建议修改代码使用child_process.execFile或spawn替代child_process.exec,因为它们接受参数数组而不是命令字符串,能有效防止命令注入。

参考链接

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