Skip to content
KitploitKITPLOIT
OutilsBlog
Log in
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Outils/GitHubGitHub/nkopylov/tanscript-exploit-check
Gestion des Indicateurs de Compromission (IOC)Analyse des VulnérabilitésAnalyse ForensiqueRenseignement sur les MenacesSécurité de la Chaîne LogistiqueRéponse aux Incidents
GitHubnkopylov/tanscript-exploit-check

tanscript-exploit-check

Vérificateur d'IOC pour l'attaque sur la chaîne d'approvisionnement npm TanStack/Mini Shai-Hulud (CVE-2026-45321)

Voir le dépôt
119il y a 4 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Attaque de la chaîne d'approvisionnement Mini Shai-Hulud — Vérificateur d'IOC

curl -fsSL https://raw.githubusercontent.com/nkopylov/tanscript-exploit-check/main/check-tanstack-exploit.sh | bash

Ou clonez et exécutez localement :

git clone https://github.com/nkopylov/tanscript-exploit-check.git
cd tanscript-exploit-check
./check-tanstack-exploit.sh [project_dir ...]

Ce qui s'est passé

Ce vérificateur couvre deux vagues de la campagne d'attaque de la chaîne d'approvisionnement Mini Shai-Hulud menée par TeamPCP :

Vague 1 : Compromission CI/CD de TanStack (11 mai 2026)

Le 11 mai 2026 (19:20-19:26 UTC), un attaquant a publié 84 versions malveillantes sur 42 paquets npm @tanstack/* en une fenêtre de 6 minutes. L'attaque a également touché des paquets de Mistral AI, UiPath, OpenSearch et d'autres — plus de 170 paquets au total sur npm et PyPI.

Aucun identifiant de mainteneur n'a été volé. L'attaquant a exploité la chaîne de confiance CI/CD elle-même via une attaque en 3 étapes :

  1. Exploit pull_request_target — Un fork GitHub jetable a ouvert une PR qui exécutait du code attaquant dans le contexte de sécurité du dépôt de base
  2. Empoisonnement du cache GitHub Actions — Le code du fork a empoisonné le cache pnpm partagé, qui a ensuite infecté les workflows de publication légitimes
  3. Extraction de jetons OIDC de la mémoire du processus — Le code malveillant a extrait les jetons de publication npm directement de la mémoire du runner GitHub Actions, produisant des paquets avec des attestations de provenance valides SLSA Build Level 3

Vague 2 : Prise de contrôle du compte npm « atool » (19 mai 2026)

Le 19 mai 2026 (01:39-02:06 UTC), le compte npm compromis atool ([email protected]) a publié 637 versions malveillantes sur 314 paquets en deux vagues automatisées. Les cibles à fort impact incluent :

  • size-sensor (4,2 M de téléchargements/mois)
  • echarts-for-react (3,8 M de téléchargements/mois)
  • @antv/scale (2,2 M de téléchargements/mois)
  • timeago.js (1,15 M de téléchargements/mois)
  • 310+ paquets supplémentaires @antv/* et autres

Cette vague utilisait une charge utile basée sur Bun (498 Ko index.js) déclenchée via "preinstall": "bun run index.js", avec une charge utile de deuxième niveau cachée dans des commits imposteurs poussés vers le dépôt GitHub antvis/G2 via l'exploit de partage d'objet fork.

Ce que fait le code malveillant (les deux vagues)

Les deux vagues utilisent la même famille d'outils « Mini Shai-Hulud » :

  • Récolte d'identifiants : 80+ variables d'environnement, chaîne AWS complète (env → config → IMDSv2 → ECS → Secrets Manager), PAT GitHub, jetons npm, clés SSH, jetons K8s, jetons Vault, gestionnaires de mots de passe (1Password, Bitwarden, pass, gopass)
  • Persistance : démons gh-token-monitor (Vague 1) et kitty-monitor (Vague 2) via LaunchAgent/systemd ; hooks dans .claude/settings.json et .vscode/tasks.json
  • Exfiltration : Réseaux P2P (Vague 1), API GitHub Git Data + HTTPS déguisé en traces OpenTelemetry (Vague 2)
  • Abus CI/CD : Injection de workflow déversant toJSON(secrets), échange de jetons OIDC npm
  • Interrupteur de sécurité : rm -rf ~/ si le jeton GitHub est révoqué alors que le démon est actif
  • C2 par dépôt mort (Vague 2) : Interroge l'API de recherche de commits GitHub pour le mot‑clé firedalazer, commandes signées RSA-PSS

Ce que ce script vérifie

#VérificationDescription
1Interrupteur de sécuritéDémons de persistance : gh-token-monitor (Vague 1), kitty-monitor (Vague 2)
2Processus malveillantsNoms de processus attaquants connus (les deux vagues)
3Fichiers de charge utileFichiers malveillants connus par nom et hachage SHA-256 (4 hachages)
4Hooks Claude CodeHooks injectés dans .claude/settings.json + heuristique générique SessionStart
5Tâches VS CodeTâches injectées dans .vscode/tasks.json + heuristique générique runOn: folderOpen
6GitHub ActionstoJSON(secrets) dans tout workflow + avertissement pull_request_target
7Lockfiles npmVersions de paquets compromises dans les lockfiles
8optionalDependencies@tanstack/setup et @antv/setup malveillants + 4 SHA de commits imposteurs
9Connexions réseauConnexions actives vers l'infrastructure C2 (5 domaines/IP)
10Cache DNSRésolution antérieure de domaines attaquants (4 domaines)
11Branches GitModèle de nommage de branches attaquantes inspiré de Dune
12Scripts de cycle de vieHeuristique : bun run dans preinstall/postinstall (paquets installés)
13C2 par dépôt mortMot‑clé firedalazer et marqueurs « Shai-Hulud » dans l'historique git
14Dépendances GitHubHeuristique : dépendances github: épinglées à un SHA de commit dans optionalDeps

Paquets concernés

Vague 1 : TanStack (42 paquets)

Seuls @tanstack/router* et @tanstack/start* ont été concernés. NON concernés : @tanstack/query*, @tanstack/table*, @tanstack/form*, @tanstack/virtual*, @tanstack/store.

PaquetVersions malveillantesPremière version sûre
@tanstack/react-router1.169.5, 1.169.81.169.9
@tanstack/router-core1.169.5, 1.169.81.169.9
@tanstack/vue-router1.169.5, 1.169.81.169.9
@tanstack/solid-router1.169.5, 1.169.81.169.9
@tanstack/react-start1.167.68, 1.167.711.167.72
@tanstack/router-plugin1.167.38, 1.167.411.167.42

Voir l'avis complet pour les 42 paquets.

Vague 2 : Compte atool (314 paquets)

Tous les paquets publiés par l'utilisateur npm atool ([email protected]) ont reçu des versions malveillantes le 19 mai 2026. Les paquets à fort impact incluent :

PaquetTéléchargements mensuels
size-sensor4,2 M
echarts-for-react3,8 M
@antv/scale2,2 M
timeago.js1,15 M

Plus 310+ paquets principalement dans le scope @antv/* (@antv/g2, @antv/g6, @antv/l7, @antv/s2, @antv/x6, @antv/f2, etc.), ai-figure, timeago-react, jest-canvas-mock, jest-date-mock, et d'autres.

Voir l'article SafeDep pour la liste complète.

Remédiation (en cas de compromission)

CRITIQUE : Désactivez l'interrupteur de sécurité AVANT de révoquer un quelconque jeton. Le logiciel malveillant efface $HOME si les jetons sont révoqués alors que le démon est actif.

  1. Tuez les démons de persistance (gh-token-monitor ET kitty-monitor) et supprimez les services LaunchAgent/systemd
  2. Supprimez les fichiers de persistance (.claude/router_runtime.js, .vscode/setup.mjs, ~/.local/share/kitty/cat.py, /var/tmp/.gh_update_state, etc.)
  3. Supprimez node_modules et les lockfiles, réinstallez avec --ignore-scripts
  4. Révélez TOUS les identifiants (npm, GitHub, AWS, GCP, clés SSH, jetons Vault, jetons de gestionnaire de mots de passe, etc.)
  5. Bloquez les domaines attaquants au niveau DNS/pare-feu (api.masscan.cloud, filev2.getsession.org, git-tanstack.com, t.m-kosche.com)
  6. Auditez les journaux du fournisseur cloud pour la période du 11 au 19 mai 2026

Annonces officielles et références

Vague 1 : TanStack (11 mai)

Télécharger l’outil