CVE-2025-69264pnpm是一款流行的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时获得代码执行机会。整个攻击过程发生在依赖安装的正常流程中,难以被常规安全检测发现。