61 rue Henri Barbusse 92110 Clichy Levallois
info@issmi.fr

Des packages npm compromis pour diffuser des malwares

ISSMI, trouver un job chez des grands comptes

Des packages npm compromis pour diffuser des malwares

Des attaques par hameçonnage ont été menées sur des comptes de gestionnaire de paquets (npm) Javascript pour servir à déployer des malwares mais également installer des portes dérobées.

Dans une dernière attaque supply chain découverte par des chercheurs en sécurité de Bluesky, des attaquants ont ciblé la semaine dernière une variété de gestionnaires de paquets (npm) Javascript. Certains ont été compromis pour distribuer des malwares : toute personne téléchargeant ces packages pourraient avoir été exposés à une attaque supply chain à moins de disposer des dernières mises à jour. Dans un exemple daté du 19 juillet, des attaquants ont réussi à camoufler dans le npm Javascript is un malware passé inaperçu pendant six heures. C’est Jordan Harband, ingénieur logiciel chez Bluesky, qui a alerté sur l’attaque : “Sachez que la v3.3.1 de npmjs.com/is comporte un malware à cause d’un autre compte de gestionnaire de package qui a été piraté”. La version infectée a été retirée par les administrateurs npm et la dernière version v3.3.0 a été ajoutée. Depuis, une version 3.3.2 a été publiée à la place alors qu’une autre version compromise, 5.0.0, a aussi été enlevée. “L’ancien propriétaire du paquet supprimé m’a contacté par courriel pour demander sa réintégration. Tout semblait normal, j’ai accepté – agacé par le fait que le npm supprime un propriétaire sans prévenir les autres – et le lendemain matin la version infectée était publiée”, explique M. Harband. 

L’utilitaire is propose un runtime de validation de données externes et de vérification d’erreurs. On ne sait pas combien de packages auraient été mis à jour avec la version infectée par malware, ni pendant combien de temps il était en ligne. Mais le fait qu’il ait été téléchargé près de 2,8 millions de fois chaque semaine jusqu’à aujourd’hui donne un indice de l’intérêt que les pirates lui portent. Malheureusement, cette campagne baptisée Scavenger a également ciblé plusieurs autres bibliothèques de test JavaScript populaires avec la même tactique de phishing. Selon le fournisseur en solutions de sécurisation de la supply chain Socket, les packages affectés incluent aussi eslint-config-prettier, eslint-plugin-prettier, synckit@0.11.9, @pkgr/core@0.2.8, napi-postinstall@0.3.1, et got-fetch.

Npm, un terrain de chasse pour les cybercriminels 

Cette compromission fait partie d’une campagne supply chain plus large. Assembler les pièces d’un tel puzzle prend beaucoup de temps, et les attaquants en tiennent bien compte. Un problème évident réside dans la possibilité de recourir à l’ingénierie sociale et de pirater les comptes de gestionnaires de paquets avec des techniques classiques d’hameçonnage. Etant donné leur importance, cela constitue une menace potentielle pour tous ceux utilisant des packages npm. Pour compliquer encore plus la situation, le malware est passé entre les mailles de la détection de nombre de clients anti-malware sur VirusTotal. Il est clair que les personnes derrière ces campagnes malveillantes sont déterminées à infiltrer les supply chains et perçoivent le npm comme un bon terrain de chasse. Les escrocs démontrent que quand ils attaquent des paquets compromis, le malware qu’ils implantent peut être puissant. “L’attaque par package npm is n’était pas juste un sujet de DLL spécifiquement Windows. Elle utilise un chargeur de malware Javascript multi-plateformes. Celui-ci tourne entièrement dans Javascript sur les versions 12 et postérieures de Node.js pour macOS, Linux et Windows, et conserve un canal ouvert direct de commande et de contrôle”, fait savoir Tom Hyslip, expert en cybersécurité et cybercriminalité à l’université de Floride Sud. 

Mais pourquoi des packages npm ? Selon Max Gannon, analyste chez Cofense éditeur de solutions anti-phishing, ces gestionnaires de paquets sont simplement des exemples de comptes avec des privilèges élevés à large portée. “Plutôt que de s’efforcer de compromettre une seule entreprise sans être sûrs du résultat, les cybercriminels peuvent compromettre un seul développeur et finir par diffuser leur logiciel malveillant dans des centaines, voire des milliers d’autres entreprises”, poursuit M. Gannon. “Même s’il faut dix fois plus de temps pour compromettre un développeur, le gain peut être bien supérieur à ce qui aurait pu être obtenu en compromettant dix autres entreprises au cours de la même période.” 

Des mesures à prendre 

Selon M. Hyslip, au lieu de rechercher à adapter l’authentification multifacteurs pour les comptes des gestionnaires de paquets, les développeurs devraient s’attarder sur leurs dépendances en utilisant package-lock.json pour stopper les mises à jour malveillantes appliquées sur l’arbre des dépendances que les développeurs ne voient pas. Une autre bonne idée est de recourir à des outils pour tracer les versions installées tout en faisant le rapprochement avec celles dont les vulnérabilités sont connues. 

Des outils peuvent être utilisés pour analyser les packages avant installation, attester des versions différentes entre plusieurs répertoires… Les développeurs ne devraient jamais installer de nouvelles versions des packages sans vérifier au préalable si elles sont dans la liste des plateformes de distribution les plus visées. En mai par exemple, Socket a identifié 60 packages npm malveillants, tandis qu’en juin deux packages corrompus de plus ont été découverts en train d’installer des portes dérobées. Prendre le temps de vérifier les mises à jour de paquets doit constituer un réflexe selon M. Ganon : “Dans les logiciels on dit souvent de patcher tôt et souvent. Malheureusement dans le cas des packages cela les rend plus vulnérables aux attaques SCM”.