Des packages NPM malveillants ont été trouvés pour créer une porte dérobée dans le code légitime

Lucas Morel

Les chercheurs ont trouvé des packages malveillants sur le registre NPM qui, lorsqu’ils sont installés, injectent du code malveillant dans des packages NPM légitimes qui résident déjà sur les machines des développeurs.

Les attaquants qui ciblent les développeurs à travers des forfaits malveillants hébergés sur le référentiel NPM utilisent une nouvelle technique de persistance qui implique des forfaits légitimes en arrière déjà installés dans les environnements locaux des victimes.

Cette tactique complique la réponse aux incidents et les efforts de nettoyage des infections car il permet aux attaquants de maintenir l’accès aux environnements de développement compromis même après la découverte et la suppression du package NPM malveillant.

« Bien qu’il y ait eu une baisse des cas de logiciels malveillants découverts sur les référentiels open source comme le NPM et le PYPI en 2024, les acteurs de la menace n’ont pas perdu tout intérêt à promouvoir des forfaits malveillants auprès des développeurs open source », a déclaré des chercheurs de la société de cybersécurité RenversingLabs dans un rapport. «Cette dernière campagne est la preuve que le risque de télécharger des logiciels malveillants et de compromettre les environnements et les réseaux de développement reste élevé, tandis que de nouvelles façons de servir des charges utiles malveillantes émergent.»

Patchage du package local de deuxième étape

Les chercheurs de réversion deslabs ont identifié deux packages voyous hébergés sur le registre NPM qui présentent le nouveau comportement d’infection. L’un s’appelle Ethers-provider2, Et l’autre Ethers-providerz. À en juger par leurs noms, ils sont destinés à présenter des bibliothèques de logiciels liées à la chaîne de crypto-monnaie Ethereum. Cependant, leur code est copié à partir de packages populaires non apparentés.

Par exemple, Ethers-Provider2 est une copie presque textuelle du ssh2 Package, qui fournit un client et un module de serveur SSH2 écrit en JavaScript. Le package SSH2 compte plus de 350 millions de téléchargements et 1 600 applications dépendantes.

« Le package Ethers-Provider2 contient le code source SSH2, en ajoutant des éléments malveillants », a déclaré le chercheur. « Donc, l’ensemble du package fonctionne exactement comment le package SSH2 le ferait – avec quelque chose de plus. »

Le fichier modifié est installer.jsqui est exécuté lors de l’installation et auxquels les attaquants ont ajouté des instructions pour télécharger une charge utile de logiciels malveillants de deuxième étape à partir d’un serveur distant. Cette charge utile est enregistrée dans un fichier temporaire qui est supprimé après l’exécution.

Ce malware de deuxième étape vérifie une boucle si les éthers légitimes du package NPM sont installés localement. Ethers est décrit comme une «bibliothèque Ethereum compacte, pour les applications, les portefeuilles et tout autre outil» et a plus de 185 millions de téléchargements.

Si ce package est installé localement, le malware modifie ou corrige son fichier fournisseur-jsonrpc.js pour inclure du code malveillant qui, lors de l’exécution, télécharge et exécute une charge utile de logiciels malveillants en tiers.

« Le logiciel malveillant de deuxième étape crée également un fichier, Loader.js, qui écrit du code avec les mêmes fonctionnalités que le code malveillant utilisé pour` `patcher  » le fichier éthers ‘, puis l’exécute », ont déclaré les chercheurs.

La raison de cette duplication apparente des fonctionnalités est que le correctif du package des Ethers n’est qu’un mécanisme de persistance de sauvegarde qui sera déclenché à l’avenir chaque fois que le package Ethers est exécuté par les victimes dans le cadre d’un projet. Mais jusque-là, les attaquants veulent que la chaîne d’infection se termine et ils ont besoin que la charge utile de troisième étape soit déployée.

Les attaquants ouvrent une coquille inversée

Cette charge utile est un shell inversé qui utilise la fonctionnalité du client SSH2 à partir du Ethers-Provider2 d’origine pour établir une connexion SSH à un serveur contrôlé par attaquant. Le code client SSH Ethers-Provider2 est modifié pour écouter certains messages du serveur et se transformer en shell inversé, ce qui signifie que le serveur peut envoyer des commandes au client afin qu’ils soient exécutés localement sur la machine victime qui agit comme un shell distant pour les attaquants.

Le package Ethers-Providerz est très similaire à Ethers-Provider2, mais les versions antérieures révèlent que les attaquants ont expérimenté différentes approches jusqu’à l’atterrissage sur la mise en œuvre actuelle. Par exemple, dans cette version, les attaquants ont essayé de patcher des fichiers à partir d’un package appelé @ Ethersproject / Providers.

En outre, le fichier supplémentaire Loder.js qui contient le code de téléchargement de la charge utile de troisième étape est créé dans le dossier Node_Modules, où résident généralement tous les packages NPM. La partie intéressante est qu’il existe un package NPM légitime appelé chargeur.js qui a plus de 24 millions de téléchargements et 5 200 applications dépendantes. Si ce package est déjà présent localement, le malware le réparera. Si ce n’est pas le cas, il l’identifiera.

« Bien qu’ils ne soient pas aussi courants que les infostateurs sur la plate-forme NPM, les téléchargeurs sont loin d’être rares et sont fréquemment rencontrés », ont déclaré les chercheurs de réversion. « Cependant, ce téléchargeur est remarquable en raison des stratégies exceptionnelles utilisées par les attaquants pour masquer la charge utile malveillante qu’il a livrée. Ces techniques d’évasive étaient plus approfondies et efficaces que nous n’avons observées dans les téléchargeurs basés sur le NPM auparavant. »

Détection et atténuation

Le problème est que si les packages Ethers-Providerz et Ethers-Provider2 sont supprimés, les fonctionnalités malveillantes qu’ils ont injectées dans le package légitime des Ethers resteraient toujours. Pour cette raison, les chercheurs de réversion desBabs ont créé une règle de balayage YARA qui peut aider les équipes de sécurité et les développeurs à vérifier si l’instance installée localement du package Ethers a un code malveillant injecté.

De plus, après avoir terminé leurs recherches initiales, des packages supplémentaires ont été trouvés qui étaient probablement liés à la même campagne malveillante: reproduction-hardhat et @ théorique123 / fournisseurs. Bien que tous ces packages aient été supprimés du NPM, ils doivent également être supprimés des installations locales si elles ont été déployées.

L’équipe REVERSINGLABS a publié une liste d’indicateurs de compromis, tels que des hachages de fichiers pour les différentes versions de ces packages malveillants, ce qui peut aider les équipes de sécurité à créer des règles de numérisation.