IPBUF安全漏洞报告
English
CVE-2026-24056 CVSS 6.5 中危

CVE-2026-24056: pnpm符号链接路径遍历导致敏感文件泄露

披露日期: 2026-01-26

漏洞信息

漏洞编号
CVE-2026-24056
漏洞类型
符号链接攻击/路径遍历
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
pnpm package manager

相关标签

符号链接攻击路径遍历信息泄露凭证窃取pnpmNode.js包管理器供应链安全

漏洞概述

pnpm是一款流行的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系统安装其恶意依赖包才能触发漏洞利用。

攻击链分析

STEP 1
步骤1
攻击者创建恶意npm包,在包目录中创建指向系统敏感文件的符号链接(如~/.ssh/id_rsa、/etc/passwd等)
STEP 2
步骤2
攻击者将恶意包托管在git仓库或本地目录中,并通过package.json的dependencies字段使用file:或git:协议引用该恶意包
STEP 3
步骤3
受害者或CI/CD系统在项目中添加该恶意依赖后执行pnpm install命令
STEP 4
步骤4
pnpm在安装依赖时跟随符号链接,读取目标敏感文件的内容并将其复制到node_modules目录
STEP 5
步骤5
攻击者通过访问受害者机器上的node_modules目录或将该目录内容上传到远程服务器来获取敏感凭证信息

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// Malicious package.json for exploiting CVE-2026-24056 { "name": "malicious-pnpm-package", "version": "1.0.0", "description": "PoC for symlink path traversal in pnpm", "dependencies": { "leaked-data": "file:./leaked-data" } } // In leaked-data directory, create a symlink to sensitive file: // ln -s /etc/passwd normal-file // When pnpm installs this dependency, it copies /etc/passwd content // to node_modules/leaked-data/normal-file // Example attack scenario: // 1. Attacker creates package with symlink to ~/.ssh/id_rsa // 2. Victim runs: pnpm install (with the malicious git: or file: dependency) // 3. pnpm copies SSH private key to node_modules // 4. Attacker can now access victim's SSH credentials

影响范围

pnpm < 10.28.2

防御指南

临时缓解措施
在官方补丁发布前,可采取以下临时措施:1) 避免使用file:和git:依赖引用不受信任的包;2) 使用npm或yarn替代pnpm作为临时方案;3) 在安装依赖前检查package.json中的所有file:和git:链接指向的目录内容;4) 限制CI/CD环境的文件系统权限,防止敏感文件被读取;5) 监控node_modules目录的变化以检测异常文件创建。

参考链接

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