npm est désormais incontournable pour les développeurs JavaScript . Apparu avec node.js en 2009 son usage dépasse aujourd’hui l’environnement serveur. Il est de plus en plus utilisé pour des applications front et son usage comme outil de développement devient quasi systématique. De plus, il reste simple et permet d’accéder au plus gros dépôt de paquets tous langages confondus.
npm est le gestionnaire de paquets par défaut pour l'environnement d'exécution JavaScript Node.js. npm se compose d'un client en ligne de commande, également appelé npm, et d'une base de données en ligne de paquets publics et privés payants, appelée le registre npm. Le registre est accessible via le client, et les paquets disponibles peuvent être parcourus et recherchés via le site Web de npm. Le gestionnaire de paquets et le registre sont gérés par npm, Inc.
Le référencement est le processus permettant à votre site Web de se classer suffisamment haut dans les résultats de recherche. Une optimisation des moteurs de recherche (SEO) efficace peut conduire à plus d'impressions Web, ce qui entraîne des clics plus élevés et plus de prospects commerciaux. Toutefois, vos résultats de référencement durement gagnés peuvent être détournés par des pirates informatiques conduisant à ce que l'on appelle SEO Spam.
En général, le spam SEO (ou spamdexing) se produit lorsque des pirates implantent leurs liens à l'intérieur de votre site Web, blog, etc. Ils ciblent vos pages de premier rang et les infiltrent avec leurs liens sans que vous le sachiez. Ces liens de spam restent sur vos pages pendant longtemps et veulent que les visiteurs sans méfiance soient redirigés vers un site tiers qui n'est pas lié au site Web hôte. En 2019, un rapport indiquait que 73% de tous les sites GoDaddy ont été touchés par le spam SEO. Pour mémoire, GoDaddy est une entreprise américaine fondée en 1997 qui est spécialisée dans la gestion de noms de domaine sur Internet et la mise à disposition de services d'hébergement web. En 2010, la société gérait plus de 40 millions de noms de domaines.
Depuis, les techniques de spams CEO ont évolué.
D'ailleurs, sur les ~ 320 000 nouveaux packages ou versions npm que Sandworm a analysés au cours de la semaine dernière, au moins ~ 185 000 ont été étiquetés comme spam SEO. Sandworm va jusqu'à préciser : « Juste au cours de la dernière heure à compter de la rédaction de cet article, 1583 nouveaux paquets de spams de livres électroniques ont été publiés ».
La plupart des paquets de spams détectés par Sandworm proviennent d'un seul canal Telegram qui semble cibler les russophones. Les noms de packages sont définis pour correspondre aux recherches sur divers sujets sensibles, comme la guerre en Ukraine ou les décisions d'investissement prises par Gazprom. La description du package, cependant, indique ce qui suit*:
Oubliez à jamais les problèmes financiers : une nouvelle méthode de gain vous permettra de gagner des millions sans sortir de chez vous !
Les deuxièmes plus grands acteurs de spams SEO sur npm sont les publicités plus conventionnelles pour les livres et vidéos gratuits en ligne. Ceux-ci conduisent à des sites Web qui obligent l'utilisateur à effectuer une série de tâches pour obtenir un lien de téléchargement (inexistant), essentiellement en regardant et en interagissant avec les publicités. Les domaines utilisés dans les URL par ces paquets de spams changent beaucoup, ils sont donc plus difficiles à détecter.
Une nouvelle tendance se dessine dans les packages promettant des V-Bucks Fortnite gratuits. Ceux-ci conduisent généralement les utilisateurs sur des pages où ils sont amenés à penser qu'ils doivent vérifier qu'ils sont humains en effectuant une série de tâches (encore une fois, des publicités et des enquêtes).
npm est de plus en plus la cible d'attaques de cybercriminels ces dernières années
La bibliothèque npm populaire "coa" est détournée pour voler les mots de passe des utilisateurs
Jeudi 4 novembre 2021, à peine plus d'une semaine après le détournement de ua-parser-js, une autre bibliothèque npm populaire appelée coa (Command-Option-Argument), utilisée dans les paquets React du monde entier, a été détournée pour distribuer un malware voleur d'informations d'identification. Les développeurs ont remarqué que quelque chose n'allait pas lorsque de nouvelles versions étranges de coa sont apparues sur npm, brisant les constructions de logiciels. Le paquet coa recevrait environ 9 millions de téléchargements hebdomadaires sur npm, et serait utilisé par près de 5 millions de dépôts open source sur GitHub.
coa est un analyseur d'options en ligne de commande pour les projets Node.js. La dernière version stable 2.0.2 du projet a été publiée en décembre 2018. Cependant, plusieurs versions suspectes 2.0.3, 2.0.4, 2.1.1, 2.1.3 et 3.1.3 ont commencé à apparaître sur npm jeudi, brisant les constructions React qui dépendent de coa. « Je ne suis pas sûr de la raison ou de ce qui s'est passé, mais il y a 10 minutes, il y a eu une version (même si la dernière modification sur GitHub date de 2018). Quoi que cette version ait fait, elle a cassé Internet », a déclaré Roberto Wesley Overdijk, un développeur React.
Plusieurs développeurs ont rejoint la discussion, confirmant avoir rencontré des problèmes avec leurs constructions depuis que les nouvelles versions de coa ont fait leur apparition sur npm. Dans la même journée, il a été constaté qu'un autre composant npm couramment utilisé, rc, avait également été détourné. La bibliothèque rc est un chargeur de configuration et fait l'objet de 14 millions de téléchargements par semaine en moyenne. Selon les développeurs ayant signalé le détournement, les deux paquets auraient été compromis à peu près au même moment et résultent de l'accès des attaquants au compte d'un développeur de paquets.
Un projet Node.js sur deux audité par les outils de npm aurait au moins une vulnérabilité
La nuit du 11 au 12 juillet 2018, un hacker a accédé au compte npm d'un développeur et a injecté du code malveillant dans une bibliothèque JavaScript populaire, un code conçu pour voler les informations d'identification npm des utilisateurs qui utilisent le paquet infecté dans leurs projets.
Quelques mois avant, en mai, l’équipe a découvert une porte dérobée dans un paquet JavaScript populaire ; « getcookies », un paquet npm relativement récent (bibliothèque JavaScript) qui fonctionne avec les cookies du navigateur. L'équipe npm a analysé ce paquet et, dans ses rapports, a indiqué que getcookies contient un système complexe pour recevoir les commandes d'un attaquant distant qui pourrait cibler n'importe quelle application JavaScript qui a incorporé cette bibliothèque. La porte dérobée fonctionnait en analysant les requêtes HTTP request.headers fournies par l'utilisateur à la recherche de données spécifiquement formatées.
Selon l'équipe npm, la porte dérobée « permettait à un attaquant de saisir du code arbitraire sur un serveur en cours d'exécution et de l'exécuter ». Le module backdoor d'origine a été importé dans d'autres paquets. La bibliothèque getcookies était nouvelle et pas très populaire. L'équipe npm a expliqué qu'elle a découvert une chaîne de dépendances imbriquées à travers laquelle le paquet getcookies avait indirectement fait partie de la structure d'une bibliothèque très populaire appelée Mailparser.
Un mois plus tôt, venait la commande audit à la version 6 de la ligne de commande éponyme npm. Par la suite, les développeurs avaient la possibilité de taper npm audit à partir de la ligne de commande dans un répertoire de projet Node.js, générant une liste des vulnérabilités connues affectant les dépendances de paquets issues du code stocké dans le registre NPM.
Mieux encore, il suffirait de taper npm install (la commande pour remplir un projet Node.js avec les paquets déclarés dans le fichier package.json) pour lancer un audit de sécurité automatique.
Un paquet npm compromis par l'auteur efface les fichiers sur les ordinateurs russes et biélorusses lors de l'installation
"node-ipc" est un module Node.js pour "la communication interprocessus locale et distante" avec un support complet pour Linux, Mac et Windows. Il supporte également toutes les formes de communication par socket, des sockets bas niveau d'Unix et de Windows aux sockets UDP et sécurisés TLS et TCP. Avec plus de 1,1 million de téléchargements hebdomadaires, node-ipc est un paquet important utilisé par des bibliothèques majeures comme Vue.js CLI. Cependant, le développe de node-ipc, Brandon Nozaki Miller, a saboté le paquet pour nuire aux utilisateurs se trouvant en Russie ou en Biélorussie, en vue de militer contre l'invasion russe en Ukraine.
Tout a commencé le 8 mars 2022 lorsque Miller, plus connu sous le pseudonyme RIAEvangelist, a publié deux paquets open source appelés "peacenotwar" et "oneday-test" sur npm et GitHub. Les paquets semblent avoir été créés à l'origine par Miller comme un moyen de protestation pacifique, car ils ajoutent principalement un "message de paix" sur le bureau de tout utilisateur qui installe les paquets. « Ce code sert d'exemple non destructeur de la raison pour laquelle le contrôle de vos modules Node.js est important. Il sert également de protestation non violente contre l'agression de la Russie qui menace le monde en ce moment », explique RIAEvangelist.
Mais le chaos s'est installé lorsque certaines versions npm de node-ipc ont été vues lançant une charge utile destructrice vers toutes les données et écrasant tous les fichiers des utilisateurs installant le paquet. Fait intéressant, le code malveillant lisait l'adresse IP externe du système et ne supprimait que les fichiers des utilisateurs basés en Russie et en Biélorussie. Le code malveillant présent dans node-ipc, en particulier dans le fichier "ssl-geospec.js", contient des chaînes codées en base64 et des techniques d'obscurcissement pour masquer son véritable objectif. Snyk, une startup spécialisée en cybersécurité, a suivi et documenté les faits.
Une copie simplifiée du code fournie par les chercheurs de Snyk montre que pour les utilisateurs basés en Russie ou en Biélorussie, le code réécrit le contenu de tous les fichiers présents sur un système avec un émoji de cœur, ce qui a pour effet de supprimer toutes les données sur un système. Mais ce n'est pas tout. Les chercheurs ont rapporté que comme les versions 9.2.2, 11.0.0 et les versions supérieures à 11.0.0 de node-ipc intègrent le module "peacenotwar", les utilisateurs concernés ont vu des fichiers 'WITH-LOVE-FROM-AMERICA.txt' apparaître sur leur bureau avec des messages de 'paix' (comme le montre l'image ci-dessous).
Selon les chercheurs, cet acte représente un réel danger pour les utilisateurs de node-ipc basés dans ces régions. « À ce stade, un abus très clair et un incident critique de sécurité de la chaîne d'approvisionnement se produiront pour tout système sur lequel ce paquet npm sera appelé, s'il correspond à une géolocalisation de la Russie ou de la Biélorussie », écrit Liran Tal, directeur de la défense des développeurs chez Snyk dans un billet de blogue. En outre, cet acte de sabotage a déclenché une panique générale dans la communauté du framework JavaScript de développement front-end Vue.js, qui utilise également node-ipc comme dépendance.
Source : Sandworm
Et vous ?
Utilisez-vous npm ?
Qu'est-ce qui pourrait, selon vous, expliquer la situation observée par Sandworm ?
Comment procédez-vous (ou comment procède votre entreprise), en matière de sécurité pour les bribes logicielles open source de votre code ? Que recommanderiez-vous à quelqu'un qui