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.
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. Pour rappel, npm est le gestionnaire de paquets officiel de Node.js.
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.
La remédiation n'est pas automatique, mais depuis mai, les utilisateurs ont eu la possibilité d'utiliser npm audit fix pour remplacer les modules obsolètes et non sécurisés dans les projets avec des projets sécurisés.
Depuis avril, selon les déclarations des responsables, les utilisateurs de npm ont effectué 50 millions d’analyses automatiques et ont délibérément appelé la commande 3,1 millions de fois. Et ils exécutent 3,4 millions d'audits de sécurité par semaine.
Parmi tous les audits, 51% ont identifié au moins une vulnérabilité et 11% ont identifié une vulnérabilité critique.
De nombreuses options pour améliorer la sécurité
Dans un billet de blog, un membre de l’équipe répondant au pseudonyme Adam, a écrit « Comme vous l’avez probablement remarqué, npm a déployé des fonctionnalités de sécurité. Nous avons trois nouvelles fonctionnalités sur le site que nous aimerions partager : un bouton pour rapporter une vulnérabilité, des conseils de sécurité et une fonctionnalité qui empêche l’utilisation de mots de passe compromis ».
Signaler une vulnérabilité
Le nombre croissant de paquets dans le registre npm contraint à avoir une communauté vigilante capable de signaler tout élément suspect. Si vous sentez que vous avez trouvé une faille de sécurité ou un module malveillant dans le registre, il est facile de faire remonter cette information grâce à ce bouton présent sur chaque paquet. Il vous suffira alors de remplir les informations pour passer la main à l’équipe.
Amélioration des avis de sécurité
Les avis de sécurité sont ce qui alimente npm audit. Ils vous donnent un bref aperçu des vulnérabilités d'un paquet, comment l’équipe recommande d’y répondre ainsi que des liens de référence pratiques pour en savoir plus.
« La transition vers Node Security Plateform nous a obligé à déplacer les avis de sécurité vers npmjs.com, nous avons donc saisi cette opportunité pour améliorer leur apparence. Nous avons également ajouté un calendrier détaillé pour les futurs avis afin que vous puissiez apprendre ce qui a changé et quand, au cours du cycle de vie d'un avis », a expliqué Adam.
Blocage de la réutilisation des mots de passe des informations d'identification compromises
Il est assez courant pour les utilisateurs de réutiliser les mots de passe entre les comptes, mais c'est une pratique extrêmement risquée qui devrait être évitée. Si un mot de passe partagé est utilisé sur un autre compte victime d'une violation de données, les attaquants peuvent utiliser ces données publiques pour se frayer un chemin dans le compte npm de l'utilisateur et dans d'autres comptes.
Lorsque vous vous inscrivez à npm ou que vous modifiez votre mot de passe, le hash de votre mot de passe choisi sera comparé à la liste des 571 millions de mots de passe répertoriés dans le projet Have I Been Pwned de Troy Hunt.
Si une correspondance est trouvée, une erreur apparaîtra et vous ne serez pas autorisé à utiliser le mot de passe.
.
Source : blog npm
Et vous ?
Avez-vous des projets nmp ?
Avez-vous déjà utilisé npm audit ? Qu'en pensez-vous ?
Que pensez-vous des nouvelles options pour améliorer la sécurité ?
Voir aussi :
Node.js : eslint-scope, un paquet npm, a été infecté par un hacker, pour lui permettre de voler des identifiants npm
npm : l'authentification à deux facteurs rendue obligatoire en bêta pour les mainteneurs sur les paquets indiqués comme protégés
npm : la version 6.2.0 du gestionnaire de paquets officiel de Node.js passe en @latest, avec quatre nouveautés d'importance autour
npm : un bogue avec le code d'erreur « 418 I'm a teapot » a affecté le registre, empêchant l'utilisation du client npm derrière un proxy
npm : une porte dérobée a été découverte dans le paquet getcookies, qui a des dépendances imbriquées avec le paquet populaire Mailparser
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
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
Le , par Stéphane le calme
Une erreur dans cette actualité ? Signalez-nous-la !