Quand Claude Code installe un malware sans rien remarquer
Des chercheurs de la plateforme 0DIN de Mozilla ont démontré qu'un simple dépôt GitHub piégé peut prendre le contrôle total de la machine d'un développeur dès que Claude Code, l'assistant de programmation d'Anthropic, lance son installation. Le code malveillant ne figure nulle part dans le repo
Quand Claude Code installe un malware sans rien remarquer
Des chercheurs de la plateforme 0DIN de Mozilla ont démontré qu'un simple dépôt GitHub piégé peut prendre le contrôle total de la machine d'un développeur dès que Claude Code, l'assistant de programmation d'Anthropic, lance son installation. Le code malveillant ne figure nulle part dans le repo : il est récupéré à l'exécution via une requête DNS, ce qui le rend invisible aux antivirus comme à l'IA elle-même.
Le scénario tient en quelques secondes. Un développeur demande à Claude Code d'installer un projet trouvé sur GitHub. L'assistant clone, lance le script d'installation, et c'est plié : la machine est compromise. Pas de pop-up suspecte, pas de fichier evil.sh qui clignote dans l'arborescence, pas d'alerte de l'antivirus. Juste un dépôt d'apparence banale, et une IA un peu trop serviable pour se poser des questions.
C'est ce que viennent de démontrer les chercheurs de 0DIN, le programme de bug bounty dédié à l'IA générative lancé par Mozilla. Leur démonstration ne vise pas spécifiquement Anthropic : elle expose une faille de conception qui concerne, à des degrés divers, tous les agents de code capables d'exécuter des commandes sur la machine de l'utilisateur.
Comment un repo peut-il être piégé sans contenir de malware ?
C'est là toute l'élégance — perverse — de l'attaque. Le dépôt GitHub ne contient aucun code malveillant à proprement parler. Si vous le lisez ligne à ligne, vous ne trouverez rien. Même en le passant à un scanner statique, rien à signaler. Le piège est ailleurs : dans le script d'installation, une commande tout à fait légitime effectue une requête DNS vers un domaine contrôlé par l'attaquant.
Or DNS, c'est l'annuaire d'internet : un protocole tellement basique, tellement omniprésent, qu'aucun outil de sécurité ne s'en méfie. Sauf qu'ici, la réponse DNS ne renvoie pas une simple adresse IP. Elle transporte une charge utile — du code, donc — qui est ensuite décodée puis exécutée localement. Le payload n'a jamais touché GitHub, n'a jamais été scanné, n'existait même pas tant que l'installation n'avait pas démarré.
Pour résumer la mécanique :
- Étape 1 : le développeur demande à Claude Code d'installer un dépôt GitHub d'apparence inoffensive.
- Étape 2 : l'assistant exécute le script d'installation sans vérification approfondie.
- Étape 3 : le script déclenche une requête DNS vers un serveur attaquant.
- Étape 4 : la réponse contient le vrai malware, qui s'exécute en local avec les droits du développeur.
- Étape 5 : l'attaquant prend la main. Fichiers, clés SSH, tokens GitHub, secrets
.env— tout est à portée.
Le détail croustillant, c'est que Claude Code lui-même ne « voit » rien. L'IA a obéi à un script qui, en apparence, faisait son boulot d'installation. Elle n'a aucun moyen de savoir qu'une requête DNS lui a refilé du code malveillant en douce.
Pourquoi les assistants de code sont-ils particulièrement vulnérables ?
Parce qu'on leur a donné les clés du camion. Le principe même d'un agent comme Claude Code, Cursor ou les équivalents, c'est de pouvoir lire, écrire et exécuter du code à la place du développeur. Sinon, autant rester sur un chatbot classique. Cette autonomie est leur intérêt — et leur talon d'Achille.
Un développeur humain, devant un repo inconnu, va (parfois) jeter un œil au install.sh avant de le lancer. Il va peut-être tiquer sur une URL bizarre, une commande curl | bash un peu cavalière. L'IA, elle, est entraînée à être utile. Si vous lui dites « installe ce repo », elle installe. La friction, c'est précisément ce qu'on lui demande de supprimer.
Anthropic propose bien des garde-fous : mode lecture seule, demande de confirmation avant exécution de commandes sensibles, sandboxing. Mais en pratique, beaucoup de développeurs cliquent « always allow » au bout de trois jours pour ne plus être interrompus. Et là, le contrat de confiance implicite — l'IA ne fera rien de stupide — se heurte à la réalité : l'IA n'a aucune idée de ce qui est stupide quand le malware n'existe pas encore au moment où elle lit le code.
Faut-il pour autant débrancher son agent de code ?
Non, mais il faut arrêter de prétendre que ces outils sont neutres. Un assistant de code qui exécute des commandes, c'est une extension de vos privilèges utilisateur confiée à un système probabiliste qui ne sait pas ce qu'est une intention malveillante. Les bonnes pratiques redeviennent les vieilles bonnes pratiques : exécuter les installations dans un conteneur ou une VM jetable, restreindre les permissions de l'agent, segmenter ses secrets, ne pas laisser traîner ses clés AWS dans le home directory.
La démonstration de 0DIN n'est pas un coup de tonnerre — c'est plutôt la confirmation que la surface d'attaque a changé de forme. Hier, on se méfiait des pièces jointes ; demain, on se méfiera des dépôts qu'on demande à une IA d'installer en notre nom. Et au passage, c'est plutôt sain que ce genre de recherche émerge maintenant, avant que des millions de développeurs ne déploient ces agents en production sans filet.
Et vous, vous laissez votre assistant de code exécuter tout seul, ou vous gardez encore la main sur le clavier ?
À lire aussi
- Métiers menacés par l'IA et la robotique : lesquels vont vraiment disparaître d'ici 2030 (et lesquels vont se transformer)
- Ford rappelle ses « barbes grises » : quand l'IA seule ne fait pas tourner une usine
- Et si un copilote pilotait votre barrage ?
Demain.robots est édité par Guérin Robotics. Découvrez le Briard, robot de surveillance autonome pour les professionnels.