CVE-2026-24056pnpm是一款流行的JavaScript包管理工具。在10.28.2之前的版本中存在一个符号链接(symlink)路径遍历漏洞。当pnpm安装file:(本地目录)或git:依赖时,会跟随符号链接并读取其指向的目标内容,但未将这些内容限制在包根目录范围内。攻击者可构造包含指向绝对路径符号链接的恶意包(如链接到/etc/passwd、~/.ssh/id_rsa等敏感文件),诱使pnpm将目标文件内容复制到node_modules目录中,从而导致本地敏感数据泄露。此漏洞仅影响file:和git:依赖,npm registry包因在发布时已剥离符号链接而不受影响。该漏洞主要影响使用本地依赖的开发者以及使用git依赖的CI/CD流水线环境,攻击者可能通过符号链接窃取~/.aws/credentials、~/.npmrc、~/.ssh/id_rsa等凭证文件。
该漏洞的根本原因在于pnpm在处理file:和git:依赖时,对符号链接的处理缺乏安全边界检查。当解析依赖时,pnpm会读取符号链接指向的实际文件内容并将其包含在安装包中,而没有验证目标路径是否位于项目根目录的合理范围内。攻击者可以利用符号链接创建指向系统敏感文件的引用,例如创建名为normal-file的符号链接指向/etc/passwd,当pnpm安装该依赖时会将passwd文件内容复制到node_modules目录。由于符号链接解析发生在安装阶段而非依赖解析阶段,现有的安全沙箱机制无法有效阻止这种攻击。攻击者需要诱导目标用户或CI/CD系统安装其恶意依赖包才能触发漏洞利用。