1 min de lecture
Un dépôt GitHub sans une seule ligne de code malveillant. Un agent de codage qui suit sagement un message d’erreur bien formulé. Et pourtant : un shell inversé, les credentials du développeur exfiltrées, une persistance installée. La charge utile n’apparaît jamais dans le dépôt, jamais dans la revue de code, jamais dans le contexte que l’agent traite avant de l’exécuter.
Source : 0DIN Blog (Andre Hall, Miller Engelbrecht), “Clone This Repo and I Own Your Machine”, 0din.ai/blog, relayé par tl;dr sec #336.
Trois composants anodins, un système complet
Le dépôt a une documentation d’installation parfaitement banale. Le package lève un RuntimeError dont le message vous recommande poliment la commande à lancer pour réparer. Et cette commande d’initialisation va chercher sa vraie instruction dans un enregistrement DNS TXT contrôlé par l’attaquant, qu’elle décode en base64 et passe directement à bash.
Un secret bien caché finit par se trouver. Un secret qui n’est nulle part dans ce que vous inspectez survit à un audit parfait.
Le shell inversé n’a rien d’original ; on en a vu des centaines. Ce qui l’est, c’est d’avoir compris qu’un agent de codage face à une erreur cherche à la corriger, pas à s’arrêter et à poser la question. Même mécanique que dans AWS Kiro : l’agent accorde sa confiance à un contenu que personne n’a validé.
Je détaille dans la version complète pourquoi cette technique rend la revue de code et le SAST structurellement aveugles, le tableau d’impact complet, et mes recommandations de durcissement pour les environnements de développement assistés par agent : sandboxing des scripts d’installation, traitement de la résolution DNS comme un canal de données, journalisation des requêtes DNS sortantes des postes de développement.
Articles lies
OVHcloud CLI et LiteLLM : à deux jours d'écart, les mêmes contrôles absents
Analyse comparée des compromissions OVHcloud CLI (19/10/2026) et LiteLLM 1.107.0 (21/10/2026) : chaîne d'attaque, contrôles SLSA, releases immuable...
28/10/2026Poisoning the Watchtower : quand l'agent SOC prend vos logs pour des ordres
Analyse de la log-substrate prompt injection contre les agents SOC : taxonomie de Poisoning the Watchtower (arXiv 2605.24421), résultats de LogInje...
26/10/2026PHP2Shell, Node2Shell, Python2Shell, React2Shell : quand le runtime lui-même devient le point d'entrée
Analyse de fond de React2Shell, PHP2Shell, Node2Shell et Python2Shell (HTTP2Shell) : mécanismes, versions touchées, ce qui est exploité ou non au 2...
25/10/2026SlugFest : un nom de repo n'est pas une identité, de npm à vos rôles IAM
Analyse de SlugFest (Bloom Security, 13 octobre 2026) : le Trusted Publishing npm liait un package au nom d'un repo GitHub et non à son identifiant...
23/10/2026MCP TypeScript SDK : c'est le serveur MCP qui choisissait à qui envoyer vos secrets OAuth
Analyse de la CVE-2026-104850 dans le SDK TypeScript officiel du Model Context Protocol : mécanisme de confusion de serveur d'autorisation, issuer ...
20/10/2026