
Scanner pour le ver de chaîne d'approvisionnement npm/PyPI Mini Shai-Hulud (NHS CC-4781 · CVE-2026-45321). Détecte la persistance gh-token-monitor, les artefacts de payload et les commits d'attaquants. Python, Bash, PowerShell.
Un scanner gratuit et hors ligne pour le ver de la chaîne d'approvisionnement npm/PyPI qui ravage actuellement les principaux packages. Développé par l'équipe Intrudify. Pas d'inscription, pas de télémétrie, fonctionne entièrement hors ligne.
NHS CC-4781 · CVE-2026-45321 (CVSS 9.6) · GHSA-g7cv-rxg3-hmpx
Si vous avez exécuté npm install ou pip install ces dernières semaines, ceci est pour vous.
Surtout si vous avez touché à @tanstack/*, @uipath/*, @mistralai/*, @cap-js/*, ou aux packages PyPI litellm, mistralai, guardrails-ai, lightning, ou telnyx. Ce sont les espaces de noms confirmés comme empoisonnés. 149 packages au total, plus de 400 versions malveillantes suivies à ce jour.
Mini Shai-Hulud est le ver qui cause les dégâts. Il vole vos identifiants npm et GitHub, installe une persistance sur macOS, Linux et Windows, et (la partie que la plupart des gens manquent) laisse derrière lui un token piégé. Si vous le révoquez depuis la machine infectée, cela déclenche rm -rf ~/. Votre répertoire personnel, disparu. L'ordre du nettoyage compte.
Ce scanner vérifie les 19 indicateurs de compromission connus dans les packages, les lockfiles, les mécanismes de persistance, les empreintes de payloads, le trafic C2, l'historique git et les environnements CI. Il ne fait que lire. Il n'écrit jamais, ne supprime rien et ne téléphone pas à la maison.
Trois scripts, un seul objectif : Python, Bash, PowerShell. Choisissez celui qui correspond à votre stack.
Intrudify est le premier pentesteur IA entièrement autonome d'Europe pour les applications web. L'idée est simple : le même résultat qu'une équipe de pentest humain à 30 000 $, livré en heures au lieu de semaines, avec un rapport prêt pour l'audit et des conseils de correction pas à pas pour NIS2, SOC2 et ISO27001. Si vous livrez du code et que vous n'avez pas d'équipe de sécurité, c'est le fossé que nous comblons.
Ce scanner en fait partie. Il est gratuit parce que les vers de chaîne d'approvisionnement avancent plus vite que les cycles d'achat. Un développeur qui regarde un flux CVE à 23h n'a pas besoin d'un appel commercial. Il a besoin d'un outil qui s'exécute en 30 secondes et lui dit s'il est cuit.
Pour les compromissions actives (détournements de pipeline CI/CD, abus de token OIDC GitHub Actions, réponse à incident sur la chaîne d'approvisionnement npm/PyPI), contactez-nous directement : [email protected]
Si vous avez installé un package npm ou PyPI ces dernières semaines, surtout quelque chose provenant de @tanstack/*, @uipath/*, @mistralai/*, @cap-js/*, ou des packages PyPI litellm, mistralai, guardrails-ai, lightning, ou telnyx, votre machine peut être compromise.
Le ver Mini Shai-Hulud vole des identifiants, installe une persistance sur macOS, Linux et Windows, et peut effacer votre répertoire personnel si vous gérez le nettoyage dans le mauvais ordre.
Ce scanner vérifie les 19 indicateurs connus. Il ne fait que lire. Il n'écrit jamais, ne supprime rien et n'envoie rien depuis votre machine.
Le ver place un token npm piégé. Le révoquer depuis la machine infectée déclenche rm -rf ~/. L'ordre compte.
Si le scanner trouve des résultats CRITIQUES, faites ceci dans l'ordre :
| Vous êtes sur... | Utilisez ceci |
|---|---|
| macOS ou Linux | scan_cc4781.sh (ou scan_cc4781.py si vous préférez Python) |
| Windows | scan_cc4781.ps1 (ou scan_cc4781.py avec Python natif) |
| CI / Docker | scan_cc4781.py ou scan_cc4781.sh |
# macOS / Linux
chmod +x scan_cc4781.sh
./scan_cc4781.sh --deep
# Windows PowerShell
.\scan_cc4781.ps1 -Deep
# Python (tout OS)
python3 scan_cc4781.py --deep
Le flag --deep / -Deep parcourt récursivement tous les node_modules sous le répertoire courant. Recommandé si vous avez un monorepo ou plusieurs projets.
Si PowerShell bloque le script :
powershell -ExecutionPolicy Bypass -File .\scan_cc4781.ps1 -Deep
RESULT : 0 CRITICAL / 0 HIGH → vous êtes propre
RESULT : X CRITICAL / Y HIGH → arrêtez-vous et suivez les étapes ci-dessus avant de faire quoi que ce soit d'autre
CRITICAL = indicateur de compromission confirmé. Agissez immédiatement.
HIGH = suspect. Enquêtez. Certains résultats HIGH sont des faux positifs attendus (voir ci-dessous).
CC-4781 / Scanner d'attaque de chaîne d'approvisionnement Mini Shai-Hulud
Hôte : votre-nom-d-hôte OS : votre-os
Vérification de 149 packages npm (plus de 400 versions malveillantes), 5 packages PyPI
[OK] processus gh-token-monitor non détecté
[HIGH] artefact-payload : sysmon.py -> .../coverage/sysmon.py <- faux positif : package Python coverage
[HIGH] artefact-payload : execution.js -> .../n8n/.../execution.js <- faux positif : n8n
[OK] git-tanstack.com ne résout pas
[OK] Aucune référence github: malicious dans optionalDependencies trouvée
[OK] Aucun commit d'exfiltration de l'attaquant dans le log git
RESULT : 0 CRITICAL / 4 HIGH
Les résultats HIGH pour sysmon.py et execution.js sont des faux positifs : les noms de fichiers correspondent aux noms des payloads du ver, mais les empreintes SHA-256 ne correspondent pas. CRITICAL ne se déclenche que lorsque l'empreinte correspond à un payload confirmé malveillant.
| Flag | Bash / Python | PowerShell | Ce qu'il fait |
|---|---|---|---|
| Analyse approfondie | --deep | -Deep | Parcourt tous les node_modules sous le répertoire courant |
| Répertoire cible | --npm-dir /chemin | -NpmDir C:\chemin | Analyse un dossier node_modules spécifique |
| Sortie JSON | --json | -Json | Sortie lisible par machine pour SIEM / SOAR |
Format de sortie JSON : { "host": "...", "findings": [{ "severity": "CRITICAL|HIGH", "category": "...", "detail": "...", "path": "..." }] }