Contexte de l'intrusion
Mandiant a identifié qu’un attaquant a pris le contrôle d’une session active d’un assistant de codage alimenté par IA chez un fournisseur SaaS non nommé. L’intrus a exploité la confiance du développeur en recommandant un paquet PyPI contaminé, lequel a été accepté et installé dans le projet.
Mode opératoire technique
Le paquet PyPI empoisonné contenait un infostealer capable d’extraire les tokens OAuth GitHub et d’autres secrets stockés. Une fois les jetons récupérés, l’attaquant a déployé le ver auto‑propagateur Shai‑Hulud qui a infecté environ 100 dépôts internes. Le ver a volé le code source et les secrets des produits de l’entreprise, puis a propagé une version contaminée d’un package officiel dans l’espace de noms de la société. Un second développeur, en tirant la version compromise, a déclenché une infection supplémentaire.
Ce comportement s’inscrit dans une série d’attaques de la famille Shai‑Hulud : en août, un ver lié à Keyv a empoisonné des centaines de paquets npm et implanté des hooks pour Claude Code et Visual Studio Code ; une variante ultérieure a scanné 469 emplacements (systèmes de développement, pipelines CI/CD, configurations cloud, fichiers d’outils IA) à la recherche de credentials.
Analyse des risques et limites
L’incident montre que les assistants IA peuvent devenir un vecteur d’injection de dépendances malveillantes, surtout lorsqu’ils sont intégrés directement dans les environnements de développement. La capacité du ver à se propager automatiquement entre dépôts indique une confiance excessive accordée aux flux internes de code et aux mécanismes de mise à jour de paquets. Le manque de visibilité sur le moment exact de la compromission et sur les méthodes précises de prise de contrôle de la session IA limite l’évaluation complète de l’impact.
Recommandations de mitigation
Mandiant propose trois contrôles essentiels :
1. Vérifier les dépendances recommandées par l’IA : comparer les sommes de contrôle cryptographiques avec une liste blanche approuvée avant toute installation.
2. Isoler les secrets : stocker les clés API et les tokens OAuth à l’écart des extensions et des environnements d’exécution des assistants IA.
3. Canaliser le trafic de dépendances : forcer le téléchargement des paquets via des dépôts internes contrôlés, afin de bloquer les sources publiques non validées.