Illustration technique abstraite pour l’article. Diagramme de style vectoriel plat sur un fond bleu marine profond : à gauche, un petit groupe de baies de serveurs stylisées dessinées sous forme de simples icônes au trait ; à droite, un réseau de fines lignes cyan et bleues reliant de nombreux petits nœuds circulaires. Au-dessus des serveurs, une icône de livre ouvert avec deux barres estompées tenant lieu de vers est reliée au groupe par une seule ligne en pointillés, suggérant un chemin de recherche d’un document public vers une adresse machine. Aucun texte, aucun chiffre et aucun logo n’apparaît dans l’illustration ; le logo OrcaRouter est incrusté dans le coin inférieur droit.
AI Safety Incidents

Un botnet a caché son serveur de commande dans un poème GitHub — et transformé 3 400 serveurs d’IA exposés en proxys de minage.

Auteur

Rowan Sterling

Date de publication

Derniers modèles · 20Voir tous les modèles →
Benchmarks : Artificial Analysis · mis à jour quotidiennement
Retour à tous les articles

Le 7 octobre 2026, Black Lotus Labs, de Lumen Technologies, a publié des recherches sur une campagne de botnet à motivation financière qu'il suit sous le nom de Canto Incognito, dont il a baptisé le malware PoeLLM. Selon les chercheurs, la campagne a compromis plus de 3 400 serveurs exposés à Internet depuis au moins avril 2026, principalement concentrés aux États-Unis et en Europe de l'Ouest — et les victimes ne sont pas des machines aléatoires. Lumen affirme qu'il s'agit majoritairement de déploiements vulnérables de LiteLLM et Ollama, ainsi que de centaines de serveurs exécutant le convertisseur PDF Gotenberg et la boîte à outils de développement Gitea, les appliances Ivanti Sentry étant également concernées. Une fois infectés, ces serveurs ont été exploités pour miner de la cryptomonnaie et reconvertis en scanners et en serveurs d'exploitation — ce que Ryan English, de Black Lotus Labs, a qualifié, dans un entretien avec CyberScoop, de « une armée privée de proxys dopés à l'IA ». Le même rapport de l'éditeur a été transmis à The Hacker News, qui a publié son propre article le jour même.

Le détail qui rend ce document digne d’être lu n’est pas l’ampleur. C’est la conception du commandement et contrôle : il n’y a aucun domaine codé en dur ni adresse IP de repli dans le logiciel malveillant. L’adresse du serveur C2 actuel est calculée à l’exécution à partir de quatre mots tirés d’un poème hébergé dans un dépôt GitHub public. Modifiez le poème, et tout le botnet se déplace.

Qu'est-ce qui a réellement été compromis ?

Selon le rapport de Lumen, les victimes sont des services d'IA et de développement pour entreprises accessibles depuis Internet : des déploiements LiteLLM et Ollama, des centaines de serveurs de conversion PDF Gotenberg, et Gitea. Les chercheurs de Lumen ont estimé que la campagne avait également touché Ivanti Sentry. Les principaux objectifs de scan étaient les ports 3000 et 4000, les ports d'écoute par défaut de Gotenberg et de LiteLLM respectivement.

Deux vulnérabilités comptent pour la manière dont les machines ont été atteintes, et le rapport se montre prudent à propos des deux :

• Ivanti Sentry, CVE-2026-10520. Lumen affirme que ses chercheurs ont rencontré pour la première fois l’infrastructure PoeLLM en enquêtant sur cette faille dans la passerelle mobile sécurisée d’Ivanti. Début juin 2026, une victime compromise d’Ivanti Sentry a contacté un serveur dédié à l’adresse 5.78.73[.]122, puis a commencé peu après à scanner d’autres appareils vulnérables. À noter la nuance : la propre liste des points clés de Lumen indique que la campagne a « un ciblage possible d’Ivanti Sentry », tandis que le corps du même rapport décrit l’appareil comme une victime active. Cette divergence interne figure dans la source primaire.

• LiteLLM, CVE-2026-42271.Un échantillon PoeLLM examiné par Lumen ciblait le point de terminaison LiteLLM « /mcp-rest/test/connection », qui, selon Lumen, « était probablement la voie d’exploitation » d’une vulnérabilité d’injection de commandes LiteLLM identifiée comme CVE-2026-42271. Le rapport de CyberScoop décrit le même point d’entrée comme un défaut de criticité maximale dans Ivanti Sentry sans nommer de CVE, et ne couvre pas la faille LiteLLM ; The Hacker ne nomme aucune des deux CVE. La faille du point de terminaison MCP de LiteLLM est celle que cette archive a recensée plus tôt en 2026, avant que cette campagne ne soit documentée.

Ce que l'accès volé a rapporté à l'opérateur, c'était de la puissance de calcul et des données. « Les services d'IA/LLM exposés sont précieux non seulement à cause des vulnérabilités logicielles, mais aussi parce qu'ils peuvent contenir des données utiles et tourner sur du matériel puissant adapté au minage », a écrit Lumen. English a déclaré à CyberScoop que le logiciel malveillant comporte une fonctionnalité d'exécution de code à distance qui pourrait permettre à un opérateur d'abuser des modèles d'IA exécutés sur les serveurs victimes — présenté comme une capacité, et non comme un résultat observé.

Le poème qui est aussi une table de correspondance

Le compte GitHub en question est « ejejejdfbbebe », et le dépôt est un fork du code source du site nodejs.org qui n'a aucun lien apparent avec Node.js lui-même. À l'intérieur, dans un fichier nommé « dash.css » — un nom de fichier qui n'existe pas dans le dépôt d'origine — l'opérateur a placé un poème en deux strophes intitulé « On the Nature of Connection ». Lumen a compté 11 mises à jour depuis le premier commit du 13 avril 2026 ; CyberScoop rapporte que le libellé a été modifié « au moins une douzaine de fois ».

Tel que capturé par Lumen en septembre 2026, la première strophe se lisait ainsi : « Dans le bourdonnement silencieux du pilote, les machines commencent à parler, chaque impulsion de diode enfilant la lumière à travers des veines de cuivre. Nous avons appris à l’obscurité à porter un sens, octet par octet — un langage fait de foudre, froid et net. » La deuxième strophe comprend la ligne « Au-delà du mur du chiffrement, un signal trouve son chemin, le tic-tac de serveurs lointains répond en retour. »

A screenshot of a technical explainer card titled 'Four words from a poem, read as a number'. The left column is headed 'Extracted from the verse' and quotes two lines of the poem with four words highlighted: driver, diode, encryption and distant servers. A note below explains that the fourth word is recovered by searching for the string 'of distant servers', stepping back to the previous whitespace and requiring the four bytes before the word to spell 'the '. The right column is headed 'Matched in a hard-coded dictionary' and lists four mappings: driver equals 92, diode equals 119, decryption equals 165, string equals 74. A result box at the bottom reads 'C2 address 92.119.165[.]74'. A footer reads 'Extraction logic and conversion key per Lumen Black Lotus Labs; worked example from a sample recovered June 23, 2026. Card rendered by OrcaRouter.'

L'extraction est mécanique. Une fonction que Lumen appelle extract_poem_phrase_field extrait trois phrases à des positions fixes dans le poème — le texte entre "In the silent hum of " et la virgule qui suit, entre "each pulse of " et " threading,", et entre "Beyond the wall of " et la virgule suivante. Un quatrième mot est récupéré différemment : en recherchant la chaîne "of distant servers,", en remontant jusqu'à l'espace blanc précédent, en vérifiant que les quatre octets qui précèdent épellent "the ", puis en prenant le mot qui suit. Chacun des quatre mots est ensuite comparé à un dictionnaire codé en dur compilé dans le binaire, et les quatre nombres obtenus sont concaténés pour former une adresse IPv4. Dans un échantillon récupéré par Lumen le 23 juin 2026, "driver" correspondait à 92, "diode" à 119, "decryption" à 165 et "string" à 74 — ce qui donnait 92.119.165[.]74.

Comme les quatre mots-clés étaient les seuls à changer au fil des 11 révisions observées, et que le schéma de décodage ne changeait jamais, le déplacement du botnet n’a coûté à l’opérateur qu’une poignée de modifications à un fichier texte public. « Ce qu’il y a de plus intéressant dans l’approche du poème, c’est que l’adresse IP utilisée pour les communications C2 est invisible en dehors du netflow de la victime », a déclaré English à CyberScoop. « Pour quiconque tombe dessus, ce n’est qu’un simple poème sur GitHub. Il ne contient aucun lien, aucun fichier à télécharger, aucun texte chiffré qui pourrait facilement être signalé comme malveillant, même par des modèles avancés. Aucun chercheur en sécurité n’aurait de raison d’identifier ce poème comme malveillant — ni de connaître l’adresse IP qui y est cachée — à moins d’avoir accès au malware qui y fait référence. »

Lumen déclare estimer que le poème a probablement été écrit par une IA, et qualifie cela d’inférence, et non de constat. Le raisonnement, selon les propos d’English à The Hacker News : le poème aurait fonctionné dans n’importe quelle langue, mais la préférence de l’acteur lui-même semble se porter sur l’italien. Il s’agit d’un jugement sur le style d’écriture, non d’une attribution forensique du texte à un modèle.

Ce que fait le malware une fois qu'il s'installe

La charge utile analysée par Lumen est un fichier ELF distribué sous le nom « libgcrypt », avec le hachage SHA-256 6fab94577364beec314afae3b082dd680933f08a8349b9f35b92667e8231b501. Selon l'analyse de Lumen, il regroupe un shell distant, les mineurs de cryptomonnaies Iron et XMRig, une capacité d'analyse HTTP et HTTPS, et le déploiement d'exploits contre des cibles vulnérables.

Les hôtes infectés communiquent en retour avec l'un de plusieurs ports C2 — 3778, 5001, 5002 ou 9999 — et reçoivent l'instruction de télécharger d'autres fichiers depuis le port 81 du serveur C2 (les chemins observés incluaient /private/python3.6 et /private/bins.sh). Les paiements de minage sont acheminés vers le service de minage russe Kryptex : Lumen a observé des victimes contactant 5.180.174[.]162:8029 et 46.21.245[.]211:7029, qui héberge edge-ru-07[.]kryptex[.]network. Le trait commun le plus fréquent chez les 900 premières victimes, après le contact avec le C2 initial, était le contact avec ce point de terminaison Kryptex.

Le botnet se développe également de lui-même. Les serveurs compromis ont été transformés en scanners et en serveurs d'exploit : un serveur d'exploit envoie une requête HTTP POST conçue à un service exposé sur une cible nouvellement découverte, en lui demandant de télécharger le logiciel malveillant depuis le C2. Plus récemment, Lumen a observé des groupes de victimes ciblant des ports SSH et d'autres portails de connexion, ce qu'il interprète comme une possible expérimentation d'une infrastructure de force brute distribuée. Lumen qualifie explicitement cela d'immature et de non prouvé : bon nombre des cibles étaient des serveurs dédiés en Italie, et les chercheurs estiment que la capacité « pourrait avoir été aux premiers stades de développement ».

La chronologie, et les deux nombres qui ne correspondent pas

A screenshot of a timeline card titled 'How the campaign unfolded, April to October 2026', subtitled 'Active since at least April 2026; disclosed 7 October 2026 by Lumen Black Lotus Labs'. The entries read: 'APR 13, 2026 — First commit to the GitHub repository. First decoded C2 is 191.37.28.160, a router in Brazil.' 'APR 13, +1 HOUR — That C2 contacts 57.131.5.211:80 in Italy, hosting malwarescan[.]xyz (registered February 2026).' 'MAY 2026 — Broader scanning and exploitation begins, especially against LiteLLM and Gotenberg. New C2 at 120.224.114.212, geolocated to China.' 'EARLY JUNE 2026 — A compromised Ivanti Sentry victim contacts 5.78.73.122, then begins scanning for other vulnerable devices.' 'MID-JUNE 2026 — Peak of operations: almost 2,200 affected servers, with nearly 800 active per day.' 'JUNE – SEP 2026 — The poem is revised 11 times; each revision points the botnet at a new C2. 12 C2 addresses identified in total.' 'OCT 7, 2026 — Lumen publishes. The staging repository is no longer accessible and the C2s are null-routed; three C2s were still active at publication.' A footer reads 'Dates and figures per Lumen Black Lotus Labs, published Oct 7, 2026. Card rendered by OrcaRouter.'

Le premier C2 décodé de la campagne était 191.37.28[.]160, un routeur brésilien avec un serveur web Boa exposé sur le port 2222 qui était vulnérable aux CVE-2018-21027 et CVE-2018-21028 — bien que Lumen n'ait trouvé aucune preuve directe que ces failles aient été la voie d'entrée. Environ une heure après le premier commit GitHub, ce C2 a contacté un serveur en Italie à 57.131.5[.]211:80 hébergeant le domaine malwarescan[.]xyz, qui avait été enregistré en février 2026. Lumen indique n'avoir vu aucun autre trafic notable vers l'API de ce domaine et estime que le domaine pourrait appartenir à l'opérateur de PoeLLM. Une révision de mai a déplacé le C2 vers 120.224.114[.]212, géolocalisé en Chine et, comme l'autre hôte, exécutant un serveur web Boa avec une page de routeur. Au total, Lumen a identifié 12 adresses IP de C2 ; trois étaient encore actives au moment de la publication — 92.119.164.50 vu pour la première fois le 23 juillet 2026), 103.249.201.108 (vu pour la première fois le 13 août 2026) et 178.128.14.204 (vu pour la première fois le 16 juin 2026).

A screenshot of a comparison card titled 'Three figures and how they relate', subtitled 'Peak and cumulative counts are not the same measurement, and the report states both.' Three panels sit side by side. The first, headed 'Key takeaways, Lumen Black Lotus Labs, Oct 7, 2026', shows the figure 3,400+ with the caption 'victim servers impacted, and peak activity exceeding 800 active servers per day.' The second, headed 'Body paragraph, same report', shows the figure ~2,200 with the caption 'victim servers impacted since the malware emerged in April, at a peak of almost 800 active per day.' The third, headed 'Mid-June peak, same report', shows the figure ~2,200 with the caption 'affected servers at the peak of operations, with nearly 800 active each day.' A note below reads 'Which of the two impacted-server figures is the cumulative count is not made explicit in the report. The archive's confidence grade covers the documentation, not the reconciliation of these numbers. Card rendered by OrcaRouter.'

Lumen désigne également un serveur de gestion suspect : 185.119.19[.]171 en Italie, qui hébergeait auparavant des tableaux de bord de supervision Prometheus et Uptime Kuma et que plusieurs C2 ont contacté. Le rapport indique cette attribution avec un niveau de confiance modéré.

Concernant l’ampleur, la source principale contient deux chiffres qui ne concordent pas manifestement, et il vaut la peine de citer l’un et l’autre. Les principaux points à retenir de Lumen indiquent que PoeLLM « a touché plus de 3 400 serveurs victimes ». Un paragraphe du corps du même rapport indique que la campagne « a touché près de 2 200 serveurs victimes », et Lumen décrit séparément le pic des opérations à la mi-juin comme ayant impliqué près de 2 200 serveurs affectés, avec près de 800 actifs par jour. The Hacker News interprète les chiffres comme le total cumulé (plus de 3 400) auquel s’ajoute le pic de la mi-juin (près de 2 200, près de 800 par jour). Le rapport lui-même ne précise pas laquelle des deux valeurs de Lumen correspond au nombre cumulé de victimes.

Établi, évalué, et toujours inconnu

Il convient de distinguer trois types d’affirmation dans ce document, car le degré de confiance de l’archive porte sur la documentation, et non sur chaque inférence qu’elle contient.

• Établi à partir du malware lui-même : le mécanisme C2 fondé sur le poème, la fonction d'extraction et le dictionnaire, les capacités de la charge utile (shell distant, mineurs Iron et XMRig, balayage, déploiement d'exploits), la liste d'IP C2, les ports de balise et les points de terminaison Kryptex. Ces éléments proviennent de l'analyse des artefacts et du netflow, et ils constituent l'essentiel du rapport.

• Évalué à un niveau de confiance déclaré : l'attribution à un acteur de menace italophone, avec un niveau de confiance modéré, fondée sur des commentaires en langue italienne présents dans le malware et sur les pages GitHub de l'acteur, ainsi que sur des indicateurs netflow pointant vers l'Italie. Le serveur italien 185.119.19[.]171 comme interface d'administration du botnet, également avec un niveau de confiance modéré. Le point de terminaison LiteLLM comme vecteur d'exploitation « probable ». L'affirmation selon laquelle le poème a probablement été écrit par une IA — une déduction tirée des préférences linguistiques, et non une conclusion technique.

• Ouvert ou non confirmé : combien de personnes exploitent la campagne (inconnu), si elle est liée à un autre groupe ou à une autre campagne (aucun lien observé), si l'appareil Ivanti Sentry était un point d'entrée exploité ou accessoire (formulé avec prudence dans les principaux points à retenir, décrit comme une victime dans le corps du texte), et quel est le degré de maturité de la capacité de force brute distribuée. Lumen indique que les réalisations de l'opérateur au-delà du scan et du cryptominage restent en cours d'investigation.

Des corroborations indépendantes existent pour les reportages, mais pas pour la télémétrie qui les sous-tend. CyberScoop et The Hacker News ont tous deux publié leurs propres comptes rendus le 7 octobre 2026, avec des entretiens indépendants avec Black Lotus Labs, et leurs détails — le chiffre de plus de 3 400, le mécanisme du poème, l’attribution en langue italienne, le lien avec Kryptex — concordent avec le rapport du fournisseur. Tous deux, cependant, remontent à la même recherche primaire. En date du 10 octobre 2026, aucune autre organisation de recherche ni aucun régulateur n’a publié d’analyse indépendante de PoeLLM, donc rien ici ne doit être interprété comme reproduit par une partie autre que Lumen.

Qu’est-ce qui a changé après la divulgation ?

La réponse la plus lourde de conséquences n'est pas venue d'un correctif. Le dépôt GitHub qui hébergeait le poème « n'est plus accessible », un développement qui, selon Lumen, « perturbe complètement la campagne ». English a déclaré à The Hacker News : « Nous pensons que c'était son seul dépôt, et qu'il a été entièrement perturbé. » Lumen avait notifié GitHub et avait appliqué un null-routing aux serveurs C2 précédents et actifs de l'acteur, un changement qui, selon English, a pris effet tôt dans la soirée du mardi précédant la publication. La cause du retrait du dépôt n'est pas confirmée — English a déclaré à The Hacker News : « Il se peut qu'ils l'aient signalé pour abus, ou que l'acteur ait plié bagage et se soit tu sur cette plateforme. » Parce que le C2 était dérivé plutôt que codé en dur, la suppression de la table de correspondance retire au botnet sa capacité à trouver sa propre infrastructure.

Lumen affirme avoir bloqué tout le trafic à destination et en provenance des serveurs C2 PoeLLM pendant l’enquête et que les clients de Lumen Defender ont été protégés de ces serveurs dès la découverte. Ses recommandations publiées pour les défenseurs relèvent de l’hygiène de routine appliquée à un ensemble de cibles inhabituel : vérifier les journaux réseau par rapport aux indicateurs de compromission que Lumen a publiés sur son propre dépôt GitHub, auditer l’exposition externe après avoir installé des outils open source, restreindre les ports de service autant que possible, maintenir les routeurs, pare-feu et appareils IoT corrigés et redémarrés, et intégrer les services d’IA à la gestion de la surface d’attaque. Lumen signale également le guide d’installation de Gotenberg, qui avertit déjà les utilisateurs de ne pas exposer le service à Internet — un avertissement que les centaines de serveurs Gotenberg compromis précèdent manifestement.

Rien dans le dossier ne suggère de solution technique au schéma de trafic lui-même : le poème n’était pas une vulnérabilité dans GitHub, Node.js, LiteLLM ou Ollama. C’était un fichier texte public dont le seul sens résidait dans un binaire que très peu de gens possédaient.

Pourquoi il s'agit d'un enregistrement d'incident lié à l'IA

L'archive classe cela comme un incident avec implication de l'IA confirmée, étiqueté INFRA et WEAPON, gravité élevée, avec des préjudices réels consignés — et ces préjudices sont concrets plutôt que spéculatifs : des milliers de serveurs exposés à Internet dont la puissance de calcul a été volée et dont l'accès a été détourné, dans une campagne que Lumen décrit comme motivée financièrement plutôt que dirigée contre les modèles eux-mêmes. L'élément lié à l'IA réside dans la sélection des cibles. Les serveurs exécutant des passerelles LLM et des environnements d'exécution de modèles locaux sont auto-hébergés, fréquemment exposés à Internet, souvent installés sans cycle de correctifs, et reposent sur du matériel qui mine efficacement. Selon la formulation de Lumen, l'infrastructure d'IA devient une cible attrayante précisément en raison de cette combinaison — des services exposés présentant des vulnérabilités connues, des données utiles et du matériel rapide et énergivore.

L’angle de l’arme réside dans la conception du C2, et il se généralise au-delà de cette campagne. Un domaine ou une IP codé en dur peut être bloqué, redirigé vers un sinkhole ou utilisé pour établir l’empreinte d’un logiciel malveillant. Une adresse dérivée dont le seul artefact est un document public d’apparence inoffensive ne le peut pas, à moins qu’un analyste ne dispose du binaire. Le point qu’English soulève auprès de CyberScoop — que nombre des C2 de la campagne n’ont jamais figuré dans les outils de sécurité crowdsourcés — est la mesure de l’efficacité de cette approche.

Parce que la perturbation repose sur un seul dépôt plutôt que sur une faille corrigée, le statut de la campagne après le 7 octobre est véritablement incertain plutôt que clos : Lumen affirme que la perte du dépôt la « perturbe complètement », et déclare séparément que trois serveurs C2 étaient encore actifs au moment de la publication. Lumen publie ses propres indicateurs de compromission sur un dépôt GitHub qui lui est propre, et la gravité, le degré de confiance et les dommages consignés de la fiche sont ceux de l’archive, non ceux du fournisseur.

Il s'agit d'un seul enregistrement. Le reste — les autres divulgations, leurs niveaux de gravité et de confiance, et ce que les défenseurs ont réellement fait à leur sujet — l'archive des incidents liés à l'IAindexe chacun d'eux en regard de ses sources primaires, de sorte qu'une campagne comme celle-ci peut être lue aux côtés des incidents qui l'ont précédée, plutôt qu'isolément.