L’équipe de sécurité de npm a supprimé la semaine dernière quatre packages hébergés sur son dépôt, découverts en train d’ouvrir des shells afin d’établir une connexion à des serveurs distants pour exfiltrer les données des utilisateurs à partir des systèmes Linux et Windows infectés. Selon l’équipe de sécurité, chaque bibliothèque a été téléchargée des centaines de fois depuis son chargement sur le portail npm.
Les noms des quatre packages npm sont : plutov-slack-client, nodetest199, nodetest1010 et npmpubman. Les packages ont été mis en ligne sur le portail npm en mai 2018 (en ce qui concerne le premier) et en septembre de la même année (pour le reste). Jeudi dernier, le personnel du npm a retiré les quatre paquets JavaScript du portail npm parce qu'ils contenaient du code malveillant.
npm est le plus grand dépôt de packages pour tous les langages de programmation. L'équipe de sécurité de npm scanne régulièrement sa collection de bibliothèques JavaScript, considérée comme le plus important dépôt. Bien que les pacquages malveillants soient régulièrement supprimés, la suppression de la semaine dernière est la troisième grande mesure de répression de ces trois derniers mois.
Selon les avis publiés par l'équipe de sécurité de npm, les quatre bibliothèques JavaScript ont ouvert des shells sur les ordinateurs des développeurs qui ont importé ces packages dans leurs projets. Les shells permettaient aux acteurs de la menace de se connecter à distance à l'ordinateur infecté et d'exécuter des opérations malveillantes. L'équipe de sécurité de npm a déclaré que les shells pouvaient fonctionner à la fois sur les systèmes d'exploitation Windows et *nix, tels que Linux, FreeBSD, OpenBSD, et d'autres.
Procédure d’infection et de collecte de données sur l’ordinateur cible
Une fois importés dans des projets des développeurs, ces packages constituent un danger pour les ordinateurs cibles. Le chercheur en sécurité, AX Sharma, qui a analysé les packages, a révélé que plutov-slack-client, nodetest1010 et nodetest199 partagent un code identique simpliste, mais capable de fonctionner sur tous les systèmes cités plus haut.
Une fois les packages installés, le code établit un shell inversé vers le serveur de l'attaquant, permettant à ce dernier d'obtenir un accès à distance à la machine compromise, d’après Sharma. Une des principales conclusions, selon le chercheur en sécurité, est que, malgré le fait que les trois packages partagent un code identique, le fichier manifeste (package.json) contenu dans chacun d'entre eux possède des métadonnées radicalement différentes sur la localisation de l'auteur et ses profils GitHub.
Quant à la dernière bibliothèque de la liste, npmpubman, elle a une structure de code et un objectif très différents, selon le chercheur. Ce package collecte les données utilisateur à partir des variables d'environnement et les télécharge sur un hôte distant. Selon le chercheur, dans un scénario réel, npmpubman pourrait être utilisé dans le cadre des efforts de reconnaissance d'un attaquant pour collecter des informations sur un système, alors que les autres paquets établissent une connexion directe entre les ordinateurs de l'attaquant et celui de la victime.
Il est possible que les quatre paquets aient été créés par le(s) même(s) attaquant(s) malgré les données contradictoires fournies dans le manifeste du paquet .json, d’après Sharma. Les packages JavaScript ont été retirés du portail npm et les différents comptes d'auteurs npm associés à ces 4 paquets ont été fermés par l’équipe de sécurité de npm.
« Toutes les versions de plutov-slack-client contiennent du code malveillant. Lors de l'installation, le paquet ouvre un shell vers un serveur distant. Le paquet affecte à la fois les systèmes Windows et *nix », lit-on dans l’avis de l’équipe de npm, en ce qui concerne le premier package plutov-slack-client. L’équipe a également mis en garde les développeurs qui utilisent ses bibliothèques.
« Tout ordinateur sur lequel ce paquet est installé ou en fonctionnement doit être considéré comme totalement compromis. Tous les secrets et clés stockés sur cet ordinateur doivent être immédiatement changés à partir d'un autre ordinateur ».
« Le package doit être retiré, mais comme le contrôle total de l'ordinateur peut avoir été donné à une entité extérieure, il n'est pas garanti que le retrait du paquet supprimera tous les logiciels malveillants résultant de son installation ».
Les cas de logiciels malveillants s'infiltrant dans l'écosystème open source sont de plus en plus nombreux. En août, l'équipe de sécurité de npm a supprimé la bibliothèque JavaScript nommée "fallguys" du portail npm parce qu'elle contenait un code malveillant utilisé pour voler des fichiers sensibles du navigateur d'un utilisateur infecté et de l'application Discord. Le package malveillant prétendait fournir une interface à l'API du jeu "Fall Guys: Ultimate Knockout". Cependant, une fois que les développeurs ont téléchargé la bibliothèque et l'ont intégrée dans leurs projets, lorsqu’un développeur infecté exécutait son code, le package malveillant s'exécutait également.
En septembre, le personnel de npm a supprimé quatre bibliothèques JavaScript contenant du code malveillant destiné à collecter des informations sur les utilisateurs et à télécharger les données volées sur une page GitHub publique. Une fois qu'un développeur a inclus et installé par erreur l'un des quatre packages malveillants, le code malveillant trouvé à l'intérieur collectait l'adresse IP du développeur, le pays, la ville, le nom d'utilisateur de l'ordinateur, le chemin du répertoire personnel et les informations sur le modèle de processeur, et publiait ces informations sous forme de nouveau commentaire dans la section "Problèmes" d'un dépôt GitHub.
Sources : npm(1, 2, 3 & 4)
Et vous ?
Qu’en pensez-vous ?
Avez-vous des projets nmp ? Avez-vous déjà supprimé les packages malveillants ?
Voir aussi :
Un projet Node.js sur deux audité par les outils de npm aurait au moins une vulnérabilité, une sur dix d'entre elles est critique
Des hackers ont glissé une porte dérobée dans une bibliothèque open source largement utilisée, pour voler des bitcoins
Le service npm Enterprise JavaScript est disponible, il s'accompagne de plus de fonctionnalités que la base de code du registre public npm
npm 6.0.0, le gestionnaire de paquets officiel de Node.js. passe en @latest, et se concentre désormais sur la sécurité
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 »
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 »
Le , par Stan Adkens
Une erreur dans cette actualité ? Signalez-nous-la !