Les chercheurs de Socket, à l’origine de la découverte de la campagne Contagious Interview, ont livré plus de détails sur cette opération sophistiquée sur la chaîne logistique logicielle des développeurs utilisant les paquets npm. Qualifiant cette attaque d'opération « full stack », ils expliquent que l'hébergement de code, la distribution de paquets, les serveurs de staging et l'infrastructure de commande et de contrôle (C2), sont orchestrés de manière très similaire à un pipeline légitime de développement et de livraison de logiciels. Lors de cette dernière vague, les cybecriminels ont téléchargé près de 200 paquets npm malveillants, avec plus de 31 000 téléchargements enregistrés. La campagne attire les victimes avec de faux entretiens d'embauche et des missions de codage liées à des projets web3 et blockchain, leur demandant de tirer des dépendances pour un « projet test ». Sauf que les paquets NPM qu'ils installent sont des chevaux de Troie. Les derniers paquets identifiés par Socket délivrent finalement une charge utile avec des capacités améliorées de vol d'identifiants, de surveillance du système et d'accès à distance, ce qui leur permet de prendre le contrôle des comptes et des machines des développeurs.
Sur la base de sa dernière analyse, Socket a conseillé aux développeurs de se concentrer sur les points faibles exploités par cette campagne, de traiter chaque paquet « npm install » comme une exécution potentielle de code à distance, de restreindre l'accès aux runners d'intégration continue, d'appliquer des contrôles de sortie du réseau et d'examiner le code de tout nouveau modèle ou utilitaire provenant de GitHub. « Les équipes doivent également examiner minutieusement les paquets d'aide inconnus, épingler les versions réputées fiables et utiliser des fichiers de verrouillage au lieu de mettre à jour automatiquement les dépendances », a conseillé Socket. L'analyse automatisée des paquets peut réduire davantage les risques, grâce à des analyses en temps réel qui détectent les menaces, notamment les chargeurs au moment de l'importation, les sondages réseau et l'exfiltration massive de données, avant qu'elles n'atteignent les machines des développeurs ou les systèmes d'intégration continue. « Grâce à ces contrôles, l'intégration des dépendances et la révision du code deviennent des filtres efficaces pour bloquer rapidement les attaques de type Contagious Interview », a expliqué Socket.
Des malwares diffusés via des tâches de codage
Ces mesures défensives sont efficaces car le vecteur d'entrée de Contagious Interview repose largement sur l'ingénierie sociale, utilisant de fausses tâches d’interview pour inciter les développeurs à installer des dépendances compromises. La campagne exploite npm, un registre de paquets très répandu pour JavaScript et Node.js, en publiant des paquets qui semblent inoffensifs mais qui contiennent des charges utiles cachées. Les paquets malveillants, dont un nommé « tailwind-magic » imitent des bibliothèques légitimes (dans ce cas, une version typosquattée de l'utilitaire authentique tailwind-merge) pour passer inaperçus. Lorsqu'un développeur peu méfiant installe un tel paquet, un script post-installation se déclenche et contacte un point de terminaison hébergé sur Vercel. Ce point de terminaison fournit à son tour une charge utile en direct récupérée à partir d'un compte GitHub contrôlé par un acteur malveillant nommé « stardev0914 ». À partir de là, la charge utile, une variante d'OtterCookie qui intègre également les capacités de BeaverTail, l'autre charge utile caractéristique de la campagne, s'exécute et établit une connexion à distance avec le serveur de contrôle des attaquants. Le malware récolte alors silencieusement les identifiants, les données des portefeuilles cryptographiques, les profils de navigateur et bien plus encore. « Le traçage du paquet npm malveillant ‘tailwind-magic’ nous a conduits à un point de terminaison hébergé par Vercel, tetrismic[.]vercel[.]app, et de là au compte GitHub contrôlé par l'acteur malveillant qui contenait 18 référentiels », a déclaré Kirill Boychenko, analyste senior en renseignements sur les menaces chez Socket, dans un article de blog, où il rend aussi hommage aux recherches connexes de Kieran Miyamoto qui ont permis de confirmer l'existence du compte GitHub malveillant « stardev0914 ».
Une campagne malveillante full stack
Ce qui distingue cette campagne, c'est l'infrastructure multicouche qui la sous-tend. L'analyse de Socket a permis de retracer non seulement les paquets npm, mais aussi la manière dont les attaquants ont mis en place un pipeline de livraison complet : des référentiels de logiciels malveillants sur GitHub, des serveurs de staging sur Vercel et des serveurs C2 distincts pour l'exfiltration et l'exécution de commandes à distance. Selon M. Boychenko, grâce à cette configuration, les pirates peuvent faire tourner les charges utiles, mettre à jour les logiciels malveillants de manière discrète et adapter les déploiements en fonction de la cible, tout en s'intégrant profondément dans l'écosystème légitime des développeurs. Une fois installé, OtterCookie ne se contente pas de s'exécuter et de disparaître : il reste persistant, capable d'enregistrer les frappes au clavier, de détourner le presse-papiers, d'analyser le système de fichiers, de réaliser des captures d'écran et de récupérer les identifiants de connexion au navigateur et au portefeuille sous Windows, macOS et Linux. L'intensification des activités npm des auteurs de la campagne survient à un moment préoccupant pour l'écosystème JavaScript et open source. Ces derniers mois, la communauté a été confrontée à une vague d'attaques basées sur NPM, notamment des campagnes de type worm qui ont transformé des paquets populaires en chevaux de Troie, le vol automatisé d'identifiants et la compromission généralisée de la chaîne d'approvisionnement dans les environnements de développement et d'intégration continue (CI/CD).

Commentaire