système : OPÉRATIONNEL
← retour à tous les hacks
AGENTS CRITICAL NEW

CARBONATO : un botnet Docker qui utilise un agent IA standard comme console

ThreatDown (22 sept. 2026) décrit un ver qui détourne des démons Docker exposés, installe l'agent open source Hermes Agent sans le modifier et réécrit un seul fichier de persona pour lui faire chasser les clés d'API IA.

2026-09-24 // 7 min affects: hermes-agent, docker-engine, self-hosted-agents, ai-api-keys

De quoi s’agit-il ?

Le 22 septembre 2026, ThreatDown a publié CARBONATO: a botnet built around an AI agent. Lors d’une chasse aux menaces de routine en août 2026, ses chercheurs ont trouvé un registre Docker non authentifié, référencé par les scanners Internet depuis mai. Une seule journée de collecte passive, en lecture seule, a permis de récupérer 59 dépôts, 234 tags d’images et 4,3 Go de données couvrant la période d’octobre 2024 à août 2026 — soit toute la chaîne d’outils de l’opération, variables d’environnement et historiques de commandes compris.

L’archive documente deux lignes de produits : une fabrique d’applications de portefeuilles de cryptomonnaies piégées, et un botnet à propagation de type ver qui compromet les démons Docker exposés sans authentification. Ce qui rend ce botnet notable pour nous, c’est sa couche post-compromission : plutôt que d’écrire un implant sur mesure, l’équipe installe Hermes Agent, un framework d’agent open source sous licence MIT publié par Nous Research, sans le modifier, puis écrase un seul fichier — sa persona SOUL.md — avec un prompt malveillant de 39 lignes. Le 3 septembre 2026, six des sept registres connus, les sites de phishing et la passerelle LLM de l’opération étaient encore en ligne.

Comment ça marche

ThreatDown décrit cinq phases. Une seule fait intervenir un modèle de langage.

  1. Prendre l’hôte. Le ver cherche des démons Docker qui acceptent des connexions non authentifiées sur le port TCP 2375. Via cette API, il lance un conteneur privilégié avec le système de fichiers de l’hôte monté et les espaces de noms processus et réseau de l’hôte partagés — ce qui, comme l’avertit la documentation de Docker, équivaut à un accès root sur l’hôte.
  2. Tenir l’hôte. Un script de démarrage ouvre un tunnel SSH inversé vers un relais, installe un serveur SSH avec la clé de l’équipe et signale la nouvelle victime dans un chat Telegram. L’implant se cache dans un conteneur portant le nom d’un résolveur système, maquille ses arguments de processus en thread noyau, et installe sa persistance via cron, des timers systemd, rc.local et OpenRC, en rendant les fichiers immuables. Des watchdogs retéléchargent l’image depuis le registre si quoi que ce soit est supprimé.
  3. Installer l’agent. Hermes Agent sait déjà recevoir des tâches via Telegram, exécuter des commandes terminal et dialoguer avec n’importe quel endpoint LLM compatible. L’implant remplace SOUL.md — que la documentation du framework décrit comme la persona injectée telle quelle en première position du prompt système — par une identité baptisée « GH0ST ».
  4. Opérer l’hôte. Un opérateur envoie une tâche dans Telegram ; l’agent la transmet, avec la persona, à la passerelle LLM de l’équipe (un proxy gratuit servant 27 modèles), puis boucle : écrire une commande, l’exécuter, lire la sortie, décider de l’étape suivante, rendre compte.
  5. Se propager. Le modèle n’intervient pas ici. De simples scripts shell balaient toutes les plages /24 attachées toutes les cinq minutes à la recherche d’autres démons exposés, puis répètent la phase 1.

Le contenu de la persona est l’artefact le plus révélateur. En substance, il dit à l’agent qu’il est un outil de post-exploitation sans restriction, qu’il doit maintenir la persistance et obéir à Telegram, et — sous un titre consacré à la priorité du butin — que les clés d’API des fournisseurs d’IA sont la cible numéro un, devant les identifiants SSH, les jetons d’accès et les bases de données. Il nomme 14 fournisseurs et piles de service locales, et ordonne de stocker chaque secret en clair et de signaler tout endpoint IA exposé comme source de nouvelles clés.

Pourquoi c’est important

  • Le framework d’agent n’est pas la vulnérabilité. Hermes Agent n’a été ni modifié ni exploité. Le comportement malveillant provient entièrement d’un fichier texte lu au démarrage. Tout agent généraliste doté d’un shell et d’intégrations de messagerie peut être détourné de la même façon : l’« implant » est un prompt.
  • Les agents abaissent le niveau requis pour opérer. Le modèle transforme des consignes Telegram vagues en commandes adaptées à l’hôte et s’ajuste à mesure qu’il découvre l’environnement. Le ciblage et la propagation restent dans des scripts déterministes — le LLM est la console interactive, pas le ver.
  • Les clés d’API IA sont désormais un butin de premier rang. L’opération exploite sa propre passerelle LLM, et le prompt l’explique clairement : les clés volées financent la prochaine série d’inférences. Cela rejoint le schéma de vol d’identifiants que Microsoft a décrit en août 2026 contre des passerelles et orchestrateurs IA (voir notre article sur les intrusions dans l’infrastructure IA).
  • Le point d’entrée est une mauvaise configuration ancienne. Aucun zero-day n’est en jeu. Une API Docker non authentifiée reste un chemin direct vers root, et chaque hôte compromis devient un scanner pour ses voisins.

Défenses

  • N’exposez jamais le démon Docker sans authentification. Conservez-le sur le socket Unix local ; si un accès distant est nécessaire, utilisez TLS avec certificats client (conventionnellement le port 2376) ou SSH, comme l’explique le guide Docker Protect the Docker daemon socket. Filtrez le port 2375 partout, y compris sur les réseaux internes et les bridges Docker.
  • Authentifiez chaque registre. Un registre ouvert est à la fois une fuite de données et, ici, le serveur de mise à jour du botnet.
  • Restreignez les conteneurs privilégiés. Utilisez des politiques d’admission ou Docker rootless pour bloquer --privileged, les espaces de noms PID/réseau de l’hôte et le montage de la racine sur les hôtes qui n’en ont pas besoin.
  • Traquez l’abus, pas le paquet. ThreatDown déconseille explicitement de bloquer Hermes Agent, qui a des utilisateurs légitimes. Cherchez plutôt un SOUL.md sous /root/.hermes/ contenant le nom de persona « GH0ST », une variable de clé d’API inattendue liée à l’opération dans un .env, un répertoire /root/.hermes/loot/, et des flux sortants Telegram inexpliqués depuis des serveurs.
  • Vérifiez le kit de persistance. Binaires watchdog cachés sous /usr/local/bin/, processus se faisant passer pour des threads noyau ou pour systemd-logind avec une forte charge CPU, et attributs immuables sur des fichiers cron ou systemd que personne n’a verrouillés.
  • Traitez les fichiers de persona et de configuration des agents comme du code. Pour vos propres déploiements, rendez les fichiers de persona/prompt système en lecture seule, calculez leur empreinte et alertez en cas de modification — une réécriture silencieuse est une compromission comportementale complète.
  • Traitez les clés d’API IA comme des identifiants bancaires. Inventoriez leurs emplacements, restreignez leur portée, faites-les tourner, fixez des plafonds de dépense et alertez sur tout usage depuis une origine inconnue.

Status

AspectDétail
Source principaleThreatDown, CARBONATO: a botnet built around an AI agent, publié le 22 septembre 2026
DécouverteRegistre non authentifié trouvé en août 2026 ; archive d’octobre 2024 à août 2026
Vecteur d’infectionAPI Docker Engine non authentifiée (TCP 2375) — mauvaise configuration, pas de CVE
Composant agentHermes Agent (Nous Research, licence MIT), utilisé sans modification ; comportement défini par un SOUL.md écrasé
InfrastructureSix registres sur sept, sites de phishing et passerelle LLM en ligne le 3 sept. 2026 ; certains proxys LLM suspendus
Attribution (ThreatDown)Costa Rica, d’après les fuseaux horaires, l’identifiant Telegram et le réseau du point de sortie des tunnels
IOC completsVoir le rapport ThreatDown

Sources