Cybersécurité

GlassWorm s’est caché un an dans des extensions VS Code avant son démantèlement

Susan Hill

Pendant plus d’un an, certains des développeurs qui fabriquent les applications de votre téléphone travaillaient, sans le savoir, pour quelqu’un d’autre. Un logiciel malveillant nommé GlassWorm vivait dans des extensions de Visual Studio Code, l’éditeur de code le plus utilisé au monde, et dans les paquets open source que ces développeurs intègrent chaque jour à leurs projets. Il récoltait leurs mots de passe, détournait leurs comptes et s’en servait pour s’installer dans encore plus de logiciels. CrowdStrike, Google et la Shadowserver Foundation viennent de lui couper les fils.

Cela concerne même ceux qui n’ont jamais ouvert un éditeur de code, car la chaîne d’approvisionnement logicielle est précisément cela, une chaîne. L’application de messagerie d’un téléphone, celle de la banque, le jeu d’une console reposent tous sur des milliers de petites briques open source écrites et entretenues par d’autres. Empoisonnez l’une de ces briques et le poison peut descendre jusqu’à des produits finis utilisés par des millions de personnes. GlassWorm a été conçu pour suivre ce courant sans se faire repérer.

Ce qui le distinguait, c’était sa façon de se cacher. Ses opérateurs écrivaient les instructions malveillantes avec des caractères Unicode invisibles, du code qui s’affiche comme un espace vide dans l’éditeur, si bien qu’un développeur relisant le fichier ne voyait rien d’anormal. Les chercheurs de Koi Security, qui ont identifié la campagne les premiers, l’ont qualifié de premier ver capable de se propager seul via des extensions d’éditeurs de code. Chaque machine infectée devenait le point de départ de la suivante.

La plupart des attaques de la chaîne d’approvisionnement sont des coups rapides : un paquet empoisonné est repéré, retiré et corrigé en quelques jours. GlassWorm était fait pour durer. Comme il volait les identifiants dont il avait besoin pour se propager, il pouvait se réinstaller longtemps après le retrait de n’importe quelle extension, et c’est ainsi qu’une seule opération a touché des centaines de projets et des dizaines de milliers de téléchargements en plus d’un an.

Les voies d’infection étaient la plomberie ordinaire du travail logiciel. Les opérateurs déposaient des extensions piégées sur Open VSX, la place de marché qui alimente VS Code et ses cousins Cursor, Windsurf, Positron et VSCodium, déguisées en outils inoffensifs comme des minuteurs ou des formateurs de code. Ils glissaient du code trafiqué dans des paquets npm et de l’index Python via des scripts d’installation qui se lancent seuls, et avec des identifiants pris à des victimes antérieures, ils forçaient des modifications malveillantes dans les branches principales de plus de 300 dépôts GitHub. Une fois dans une machine, GlassWorm cherchait des clés : jetons npm, accès GitHub, jetons de publication qui permettent de déposer des extensions, et portefeuilles de cryptomonnaies. Il transformait les ordinateurs infectés en serveurs relais pour d’autres trafics criminels et, dans certains cas, installait un logiciel d’accès à distance caché qui donnait aux opérateurs une vue en direct de l’écran.

Le démanteler supposait de s’attaquer à la manière dont les opérateurs restaient en contact avec leurs machines, et là GlassWorm avait été conçu pour survivre. Plutôt que de dépendre d’un seul serveur de commande débranchable, il utilisait quatre canaux à la fois. L’un encodait ses instructions dans des transactions de la blockchain Solana, un registre public pensé pour être permanent et hors d’atteinte. Un autre cachait sa configuration dans le réseau de partage de fichiers BitTorrent. Un troisième glissait des adresses codées dans les titres d’événements Google Calendar. Le quatrième était un simple serveur loué. L’équipe Counter Adversary Operations de CrowdStrike, avec Google et Shadowserver, a coupé l’ensemble en une seule opération coordonnée.

Couper les fils n’est pas la même chose que nettoyer la plaie. Couper les canaux empêche les opérateurs d’envoyer de nouveaux ordres et de nouvelles charges, mais ne retire en rien GlassWorm des machines qu’il contrôle déjà, et chaque mot de passe déjà volé reste volé. Ce n’est pas non plus la première fois que la campagne est perturbée. Après que Koi Security l’a révélée, GlassWorm est revenu, une fois avec deux douzaines de nouvelles extensions malveillantes et, des mois plus tard, avec des dizaines d’autres. Le canal blockchain que les chercheurs décrivaient comme impossible à démanteler vient d’être démantelé, mais ceux qui sont derrière ont montré, encore et encore, qu’ils reconstruisent.

Les enquêteurs estiment que les opérateurs se trouvent probablement en Russie. Le logiciel vérifie la langue et le fuseau horaire de l’ordinateur au démarrage et s’arrête sans bruit s’il atterrit sur un système russe ou d’un pays voisin de l’ancien bloc soviétique, une signature classique des groupes criminels qui opèrent depuis la région et épargnent les victimes locales. CrowdStrike a résumé le tournant sans détour : les attaquants ne visent plus seulement les produits, ils visent les développeurs qui les fabriquent. La Shadowserver Foundation a commencé à prévenir les organisations touchées pour qu’elles désinfectent leurs systèmes et renouvellent tous les identifiants susceptibles d’avoir fuité, et pour tous ceux situés plus bas dans la chaîne, le vrai travail commence maintenant, à mesure que les équipes vérifient quelles extensions et quels paquets elles ont installés depuis le début de 2025. L’infrastructure est éteinte. Le nettoyage commence à peine.

Discussion

Il y a 0 commentaire.