Dans ce second volet de notre série, j’analyse le cycle de vie du ver Shai-Hulud, de l’infiltration initiale à la possible destruction des données de la victime.
📢 Dans cette série : “L’anatomie du ver Shai-Hulud”
- Introduction et enjeux
- Scénario d’attaque : du phishing à la destruction
- Modélisation des menaces : STRIDE & PASTA
- Best Practices et remédiation
Phase 0 : Compromission Initiale (Phishing MFA)
L’attaque débute par une campagne de phishing ciblant les développeurs npm. Les victimes reçoivent des emails frauduleux les invitant à “mettre à jour” leurs options d’authentification multi-facteurs (MFA) sur npm. Une fois les credentials volés, l’attaquant déploie le payload initial.
Note : Unit 42 estime avec une confiance modérée que le script bash malveillant a été généré à l’aide d’un LLM.
Shai-Hulud 1.0 vs 2.0 : L’escalade technique
La version 2.0 introduit des changements majeurs qui en font une menace bien plus dangereuse.
Différences Critiques
| 🛠️ Aspect | 🛡️ Shai-Hulud 1.0 | 🦖 Shai-Hulud 2.0 |
|---|---|---|
| Vecteur d’exécution | postinstall (après installation) |
preinstall (avant installation) |
| Zone d’impact | Nécessite l’installation complète | 💀 Exécution garantie sur tous serveurs CI/CD |
| Contournement | Détectable par scan statique | 👻 Bypass complet des outils de scan |
| Payloads | Scripts génériques | setup_bun.js + bun_environment.js (>10 MB) |
| Exfiltration | Dépôt “Shai-Hulud” | 🔱 Dépôt “Sha1-Hulud: The Second Coming” |
| Persistance | Aucune | 🔄 GitHub Actions workflow (discussion.yaml) |
| Mode Sabotage | Aucun | 🔥 Destruction du répertoire home (fallback) |
Le Mécanisme Destructif (Nouveau)
Si le malware échoue à voler des credentials ou à s’authentifier sur GitHub, il passe en mode sabotage : écrasement sécurisé et suppression de tous les fichiers accessibles dans le répertoire home de l’utilisateur. Cette tactique transforme une attaque d’espionnage en déni de service massif.
Persistance via GitHub Actions
Le malware crée un workflow .github/workflows/discussion.yaml qui enregistre la machine infectée comme self-hosted runner GitHub, permettant à l’attaquant d’exécuter des commandes arbitraires via les discussions GitHub.
Dans le prochain article, nous appliquerons les modèles STRIDE et PASTA pour quantifier ces risques.