Le dépôt npm, où environ 11 millions de développeurs échangent plus d'un million de paquets entre eux, inquiète de plus en plus les utilisateurs. Le nombre de paquets qui ont été détournés pour être utilisés comme des logiciels malveillants a considérablement augmenté cette année. Les attaquants y insèrent généralement des mineurs de cryptomonnaies ou des chevaux de Troie. Cette fois, la plupart des 17 paquets malveillants semblent avoir été diffusés par différents acteurs de la menace qui ont utilisé divers techniques et efforts pour inciter les développeurs à télécharger des logiciels malveillants au lieu des logiciels bénins prévus.
Cette dernière découverte s'inscrit dans la continuité d'une tendance repérée il y a quelques années, selon laquelle des acteurs malveillants glissent en douce des voleurs d'informations, des enregistreurs de frappe ou d'autres types de logiciels malveillants dans des paquets disponibles dans npm, RubyGems, PyPi ou un autre référentiel. Dans de nombreux cas, le nom du paquet malveillant est différent d'une seule lettre de celui d'un paquet légitime. Souvent, le paquet malveillant comprend le même code et les mêmes fonctionnalités que le paquet dont il usurpe l'identité et ajoute du code caché qui exécute des actions néfastes supplémentaires.
« Nous assistons à un récent déferlement de logiciels malveillants hébergés et diffusés par le biais de dépôts de logiciels open source », ont expliqué dans un billet de blogue mercredi les chercheurs Andrey Polkovnychenko et Shachar Menashe de JFrog. « Les dépôts publics sont devenus un instrument pratique pour la distribution de logiciels malveillants : le serveur du dépôt est une ressource de confiance, et la communication avec lui n'éveille les soupçons d'aucun antivirus ou pare-feu. En outre, la facilité d'installation via des outils d'automatisation tels que le client npm, fournit un vecteur d'attaque mûr », ont-ils ajouté.
Ainsi, une grande partie des paquets signalés par l'équipe de recherche volaient des informations d'identification ou d'autres informations pour les serveurs Discord. Discord est devenu une plateforme populaire permettant aux gens de communiquer par texte, voix et vidéo. Il compte désormais maintenant plus de 350 millions d'utilisateurs enregistrés. Les serveurs compromis peuvent être utilisés comme canaux de commande et de contrôle pour les botnets ou comme proxy lors du téléchargement de données depuis un serveur piraté. Certains paquets ont volé des données de cartes de crédit associées à des comptes Discord piratés.
Deux paquets - discord-lofy et discord-selfbot-v14 - proviennent d'un auteur utilisant le nom de davisousa. Ils sont présentés comme des modifications de la bibliothèque légitime populaire discord.js, qui permet l'interaction avec l'API Discord. Selon les chercheurs, le logiciel malveillant intègre la bibliothèque originale discord.js comme base et injecte ensuite du code malveillant obfusqué dans l'un des fichiers du paquet. Ils ont ajouté que la version obfusquée du code est énorme : « plus de 4 000 lignes de code illisible et contenant toutes les méthodes d'obfuscation possibles ».
Ils citent, entre autres : noms de variables tronqués, chaînes chiffrées, aplatissement du code, etc. Grâce à une analyse manuelle et à l'utilisation de scripts, ils ont pu désobfusquer le paquet et, selon les chercheurs, sa charge utile finale est assez simple : la charge utile itère simplement sur les dossiers de stockage local des navigateurs connus (et les dossiers spécifiques à Discord), puis y recherche des chaînes ressemblant à un jeton Discord en utilisant une expression régulière. Par la suite, tout jeton trouvé est renvoyé via HTTP POST au serveur codé en dur "https://aba45cf.glitch.me/polarlindo".
« En raison de la popularité de cette charge utile d'attaque, de nombreux programmes d'acquisition de jetons Discord, accompagnés d'instructions de construction, ont été publiés sur GitHub. Un attaquant peut prendre l'un de ces modèles et développer un logiciel malveillant personnalisé sans avoir de grandes compétences en programmation - ce qui signifie que n'importe quel pirate novice peut le faire facilement en quelques minutes », expliquent les chercheurs. Un autre paquet nommé fix-error prétendait réparer des erreurs dans un "selfbot" de Discord.
Il contenait également un code malveillant qui avait été obfusqué, mais qui, dans ce cas, était beaucoup plus facile à désobfusquer pour les chercheurs. Les chercheurs ont rapidement déterminé que le code caché était une version volée de PirateStealer, une application qui vole les informations de carte de crédit, les identifiants de connexion et d'autres données privées stockées dans un client Discord. Elle fonctionne en injectant un code JavaScript malveillant dans le client Discord. Ce code "espionne" ensuite l'utilisateur et envoie les informations volées à une adresse codée en dur.
Un troisième exemple est prerequests-xcode, un paquet qui contient une fonctionnalité de cheval de Troie d'accès à distance. « En inspectant le code du paquet, nous avons identifié qu'il contient un port Node.JS de DiscordRAT (écrit à l'origine en Python) qui donne à l'attaquant un contrôle total sur la machine de la victime. Le logiciel malveillant est obfusqué par l'outil en ligne populaire obfuscator.io, mais dans ce cas, il suffit d'inspecter la liste des commandes disponibles pour comprendre la fonctionnalité du RAT (copié mot à mot) », ont expliqué les chercheurs.
Comme indiqué précédemment, npm n'est pas le seul dépôt de logiciels libres à être infiltré par des paquets malveillants. Le dépôt PyPi pour Python a vu sa part de paquets chargés de logiciels malveillants, tout comme RubyGems. Par ailleurs, les chercheurs mettent en garde que les personnes qui téléchargent des paquets open source doivent s'assurer que l'élément qu'elles téléchargent est légitime et qu'il ne s'agit pas d'un logiciel malveillant se faisant passer pour quelque chose de légitime. Les grandes organisations qui utilisent beaucoup de logiciels open source peuvent trouver utile d'acheter des services de gestion de paquets.
Source : JFrog
Et vous ?
Quel est votre avis sur le sujet ?
Que pensez-vous du détournement continu des paquets npm ?
Avez-vous déjà eu à faire l'un de ces paquets contenant des logiciels malveillants ? Si oui, partagez votre expérience.
Voir aussi
Des logiciels malveillants ont été découverts dans le très populaire paquet npm "ua-parser-js", notamment un mineur de cryptomonnaie et un cheval de Troie
Un package npm malveillant ouvre des portes dérobées sur les ordinateurs des programmeurs, le code JavaScript douteux se faisant passer pour une bibliothèque liée à la plateforme Twilio
La bibliothèque npm populaire "coa" est détournée pour voler les mots de passe des utilisateurs, le paquet npm "rc" serait également compromis
Quatre packages npm trouvés en train d'ouvrir des shells sur des systèmes Linux et Windows. Tout ordinateur avec l'un de ces packages installés « doit être considéré comme totalement compromis »