CVE-2025-69262pnpm是一款流行的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环境中尤为常见,因为构建脚本通常会从外部源读取配置并设置为环境变量。