CVE-2026-23890pnpm是一款流行的JavaScript包管理器。在10.28.1之前的版本中,存在一个严重的路径遍历漏洞,存在于pnpm的bin链接功能中。该漏洞允许恶意的npm包在安装时创建可执行的shims或符号链接,将文件写入node_modules/.bin目录之外的位置。具体来说,以@符号开头的bin名称可以绕过验证机制,并且在作用域规范化处理后,路径遍历序列(如../../)仍然保持完整。这影响了所有使用pnpm安装npm包的用户以及使用pnpm的CI/CD流水线。攻击者可以利用此漏洞覆盖配置文件、脚本或其他敏感系统文件,可能导致远程代码执行或权限提升。
该漏洞的根本原因在于pnpm在处理bin链接时对以@开头的特殊作用域名称验证不充分。当npm包的package.json中定义了类似@malicious/../../../../etc/cron.d/malicious的bin名称时,pnpm在作用域规范化过程中保留了路径遍历序列。攻击者可以构造一个恶意的npm包,在其bin字段中指定带有路径遍历载荷的可执行文件路径。当用户安装该包时,pnpm会创建指向攻击者控制文件的符号链接或shims脚本。由于pnpm在链接创建时未正确验证最终路径是否位于node_modules/.bin目录内,攻击者可以将任意可执行文件写入系统的任意位置,如/etc/cron.d、~/.ssh/authorized_keys或其他敏感目录,从而实现持久化访问或远程代码执行。