
Une vaste campagne malveillante ciblant l’écosystème Go a été mise au jour par les chercheurs de Socket. Au cœur de cette opération figure un faux module baptisé dnsub-scanning-tool, publié sur GitHub par un compte nommé kaleidora. Présenté comme un simple outil de reconnaissance réseau, ce projet dissimule en réalité une chaîne d’infection sophistiquée capable de déployer plusieurs familles de malwares.
Dans l'écosystème Go, un module constitue une bibliothèque logicielle destinée à être réutilisée par d'autres développeurs. Mis en ligne le 24 janvier, dnsub-scanning-tool se présente comme un utilitaire réseau classique. Pourtant, les analyses de Socket montrent qu'il s'agit d'un leurre destiné à compromettre les utilisateurs qui l'intègrent à leurs projets.L'un des éléments les plus remarquables de cette campagne est le nombre impressionnant de versions publiées. Le dépôt totalise plus de 1 200 versions, dont près de 700 sont identifiées comme malveillantes. Cette inflation artificielle est générée automatiquement grâce à GitHub Actions, qui crée en permanence de nouveaux commits. Chaque modification est ensuite interprétée par le système de gestion des modules Go comme une nouvelle version, donnant l'illusion d'un projet activement maintenu.Derrière cette apparence anodine, le fichier main.go exécute discrètement une commande PowerShell masquée. Celle-ci télécharge un contenu chiffré, le décode avant de l'exécuter sur la machine de la victime. En retraçant cette infrastructure, Socket a identifié un réseau de 222 dépôts répartis sur 190 comptes GitHub, tous reposant sur le même mécanisme automatisé.
L'infection débute avec un fichier nommé API.db, téléchargé depuis le domaine muckcoding.com. Malgré son extension, il ne contient aucune base de données. Il est utilisé comme support pour un script PowerShell encodé que Certutil, un utilitaire Windows normalement réservé à la gestion des certificats numériques, décode. Le script obtenu, L.ps1, est protégé par plusieurs couches successives de chiffrement combinant Base64 et XOR. L'une de ces couches contient même un commentaire en turc indiquant que le code peut être exécuté immédiatement, sans autre étape. Le script final ne transporte pas directement le malware. Il agit comme un chargeur qui recherche une chaîne spécifique, "LastW", publiée sur différentes plateformes publiques comme Pastebin, Telegram, YouTube, Instagram ou encore Google Docs. Les données qui suivent cette signature sont déchiffrées afin de récupérer l'adresse réelle de la charge utile. Cette URL mène vers une archive protégée par mot de passe, hébergée dans un autre dépôt GitHub. Après extraction dans un dossier nommé Windows.Microsoft. Photos, celle-ci installe un exécutable baptisé Microsoft.exe, lancé sans afficher de fenêtre. Bien que le fichier possède une signature numérique liée à Exodus Movement, éditeur du portefeuille de cryptomonnaies Exodus, les chercheurs estiment qu'il s'agit d'un composant légitime réutilisé à des fins malveillantes plutôt que d'un programme développé spécifiquement pour cette campagne. Les analyses des empreintes numériques (hashes) relient cette infrastructure à plusieurs familles de logiciels malveillants bien connues, notamment AsyncRAT, Quasar RAT, Remcos, le voleur d'informations Vidar, ainsi que le mineur de cryptomonnaies XMRig. Un même exécutable, Loader.exe, a d'ailleurs été retrouvé à l'identique dans plusieurs dépôts du réseau.
Les 222 dépôts GitHub découverts partagent exactement le même workflow GitHub Actions. Tous utilisent une adresse électronique commune (ischhfd83@rambler.ru) tout en affichant le nom du propriétaire du compte comme auteur des commit. Le processus automatisé modifie régulièrement un simple fichier journal, force la création d'un nouveau commit puis attribue cette modification au propriétaire apparent du dépôt. Résultat : chaque projet semble entretenu en permanence, renforçant artificiellement sa crédibilité. Cette méthode rappelle fortement une précédente campagne baptisée TroyDen's Lure Factory, qui utilisait déjà de faux dépôts GitHub afin de diffuser des logiciels malveillants. Les thèmes choisis visent principalement des utilisateurs susceptibles d'exécuter des programmes téléchargés sans vérification préalable. Les faux projets imitent notamment des outils destinés aux portefeuilles de cryptomonnaies MetaMask et Trust Wallet, des bots Discord et Telegram, ou encore des triches pour des jeux populaires comme PUBG et Valorant. Parmi les exemples observés figure le dépôt Pubg-DESYNC-Menu, présenté comme une triche externe pour PUBG. Derrière cette façade se cachait pourtant un exécutable associé au malware Vidar. Socket attribue cette campagne, avec un niveau de confiance élevé, au même acteur déjà documenté en 2025 par les chercheurs de Sophos, Matt Wixey et Andrew O'Donnell. À l'époque, leur enquête avait identifié 141 dépôts GitHub liés à la même adresse électronique, dont 133 contenaient une porte dérobée. Les domaines muckcoding.com et muckdeveloper.com, déjà présents dans cette ancienne campagne, réapparaissent dans cette nouvelle opération.
Cette affaire s'inscrit dans une série d'attaques visant la chaîne d'approvisionnement logicielle de Go. En février 2025, Socket avait déjà révélé un faux module nommé boltdb-go/bolt, conçu pour usurper l'identité de la célèbre base de données BoltDB. Grâce au fonctionnement du Go Module Proxy, ce package malveillant était resté accessible pendant plus de trois ans après sa publication. Si cette précédente campagne exploitait la persistance du cache du proxy Go, Operation Muck and Load adopte une approche différente en générant continuellement de nouvelles versions afin de donner l'impression d'un développement actif. Dans les deux cas, les attaquants exploitent la confiance accordée aux dépôts officiels et aux gestionnaires de paquets. Les modules Go ne sont d'ailleurs plus les seuls visés. La campagne nord-coréenne PolinRider a récemment ciblé simultanément les écosystèmes npm, Composer et Go, démontrant que les attaques de supply chain concernent désormais plusieurs langages de programmation. Face à cette menace croissante, les plateformes renforcent progressivement leurs mécanismes de détection. GitLab est par exemple parvenu à supprimer en seulement 19 heures un faux module nommé qiniiu/qmgo, copie presque parfaite du pilote MongoDB légitime qiniu/qmgo. Dans le cas d'Operation Muck and Load, la campagne est toutefois restée active plusieurs mois avant d'être identifiée. À la suite du signalement effectué par Socket, la Go Security Team a finalement retiré dnsub-scanning-tool du Go Module Proxy, limitant ainsi sa diffusion.