Rechercher
Contactez-nous Suivez-nous sur Twitter En francais English Language
 











Abonnez-vous gratuitement à notre NEWSLETTER

Newsletter FR

Newsletter EN

Vulnérabilités

Se désabonner

Pourquoi tant de vulnérabilités dans un nombre incalculable de projets de développement web ? La faute au NPM !

août 2023 par Check Point

Pour cet été, Check Point présente les récentes découvertes au sujet de la sécurité du NPM et explique pourquoi il est essentiel de prioriser la sécurité du gestionnaire de packages dans les processus de développement.

Le NPM ou Node Package Manager est un gestionnaire de packages fourni avec Node.js qui permet aux développeurs de rechercher, d’installer et de maintenir rapidement les packages requis pour leurs projets de développement web.

Dans la mesure où le registre NPM est une collection de packages open-source, la responsabilité de la maintenance de ces packages incombe aux contributeurs et aux propriétaires de chacun d’entre eux.

Certains packages très populaires peuvent être téléchargés des millions de fois par semaine.

Une seule vulnérabilité dans un package aura un impact sur toutes les applications qui en dépendent.

Prioriser la sécurité du gestionnaire de packages dans les processus de développement.

Un peu de contexte

Le NPM (Node Package Manager) a fait les gros titres en 2022 suite à la découverte d’un taux de vulnérabilités effarant dans plus de 50 package alors très utilisés, ce qui a mis en danger un nombre incalculable de projets et d’entreprises. Or un grand nombre d’entreprises sous-estiment ou ignorent encore les vulnérabilités de NPM.

De nombreux développeurs utilisent le NPM sans jamais avoir pris conscience des multiples vulnérabilités de sécurité présentes dans leur code. Il est temps de comprendre quelles sont les vulnérabilités qui se cachent dans un nombre incalculable de projets de développement web et de sensibiliser vos développeurs !

En gros, si le NPM permet aux développeurs de rechercher, d’installer et de maintenir rapidement les packages requis à partir du registre NPM, leur utilisation dans le référentiel pose un certain nombre de problèmes.

Dans la mesure où le registre NPM est une collection de packages open-source, la responsabilité de la maintenance de ces packages incombe aux contributeurs et aux propriétaires de chacun d’entre eux. Malgré le soutien de la communauté qui a permis à de nombreux projets open-source de prospérer, certains packages échappent à la vigilance et finissent par présenter des problèmes et des vulnérabilités de sécurité majeurs. Par conséquent, les développeurs qui utilisent ces packages se doivent d’être attentifs à leur stabilité lorsqu’ils envisagent de les utiliser.

Voici les récentes découvertes concernant la sécurité du NPM et ce qui explique pourquoi il est essentiel de prioriser la sécurité du gestionnaire de packages dans les processus de développement.

Par Dotan Nahum.
Node Package Manager 101

Le NPM (Node Package Manager) est un gestionnaire de packages fourni avec Node.js. Depuis son introduction en 2009, il a gagné énormément en popularité en raison de sa simplicité d’utilisation et de son vaste référentiel de packages, avec plus de 1,3 million de packages et en capacité d’enregistrer plus de 100 milliards de téléchargements par mois.

Le NPM permet aux développeurs d’installer, de gérer et de partager facilement les packages utilisés dans les projets de développement web. Node.js, l’environnement d’exécution JavaScript côté serveur couramment utilisé, inclut le NPM en standard. Cette intégration permet aux développeurs d’interagir aisément avec le registre NPM, facilitant l’installation de packages et la gestion des dépendances de leurs projets. Le Node Package Manager est un gestionnaire de packages robuste et bien pensé qui se compose de deux éléments principaux :

NPM Registry
NPM CLI

NPM Registry

Le NPM registry est l’un des référentiels centralisés de packages open-source les plus utilisés, qui permet aux développeurs d’accéder à divers packages et de les télécharger facilement.

Quand un développeur veut utiliser un package dans son projet, il peut le rechercher dans le registre NPM à l’aide de l’interface de ligne de commande NPM (CLI). Une fois le package trouvé, une simple commande suffit pour l’installer dans le projet.

De plus, le registre NPM permet de trouver et d’installer des packages, et aide également les développeurs à gérer les dépendances entre packages. Lorsqu’un développeur en installe un, le NPM installe automatiquement toutes les dépendances dont il a besoin, facilitant ainsi la gestion des dépendances entre les packages qu’ils utilisent dans leurs projets.
NPM CLI

Le NPM CLI (Command Line Interface) est un outil de ligne de commande que les développeurs utilisent pour interagir avec le Node Package Manager. C’est un outil puissant qui permet aux développeurs d’installer, de gérer et de partager facilement les packages de code utilisés dans les projets de développement web.

Le NPM CLI est fourni avec Node.js. Les développeurs peuvent facilement y accéder via le terminal ou l’invite de commande sur n’importe quel système d’exploitation. Il leur permet d’effectuer une série de commandes pour réaliser diverses actions, telles que :

Installation de packages : les développeurs peuvent facilement utiliser la commande npm install pour installer des packages du registre NPM dans leurs projets.
Gestion des dépendances : le NPM CLI permet de gérer les dépendances entre les packages, en installant automatiquement toutes les dépendances requises par un package lors de son installation.
Recherche de packages : les développeurs peuvent utiliser la commande npm search pour rechercher des packages dans le registre NPM.
Publication de packages : la commande npm publish publie les packages dans le registre NPM pour les mettre à la disposition de l’ensemble de la communauté des développeurs.
Actualisation des packages : la commande npm update permet la mise à jour des packages vers leur dernière version.
Désinstallation des packages : supprimer les packages des projets avec la commande npm uninstall.

Des vulnérabilités malheureusement infinies

Même si le NPM permet aux développeurs de rechercher, d’installer et de maintenir rapidement les packages requis à partir du registre NPM, leur utilisation dans le référentiel pose un certain nombre de problèmes.

Dans la mesure où le registre NPM est une collection de packages open-source, la responsabilité de la maintenance de ces packages incombe aux contributeurs et aux propriétaires de chacun d’entre eux. Malgré le soutien de la communauté qui a permis à de nombreux projets open-source de prospérer, certains packages échappent à la vigilance et finissent par présenter des problèmes et des vulnérabilités de sécurité majeurs. Par conséquent, les développeurs qui utilisent ces packages se doivent d’être attentifs à leur stabilité lorsqu’ils envisagent de les utiliser.

Plus on télécharge, mieux c’est ?

Pour mettre les choses en perspective, le registre NPM enregistre des milliards de téléchargements chaque semaine, et certains packages populaires tels que express peuvent atteindre des millions de téléchargements par semaine. Ces statistiques indiquent que la version de ce package sera exécutée sur des millions d’applications. De ce fait, une seule vulnérabilité dans ce package aura un impact sur toutes les applications qui en dépendent.

Face à la nécessité de disposer d’un code réutilisable facile à installer et à utiliser dans les applications, le besoin de packages plus polyvalents a considérablement augmenté. Le registre NPM est en première ligne de cette évolution, car de nombreux utilisateurs affluent pour contribuer aux packages existants et même soumettre de nouveaux packages, rendant leur utilisation gratuite pour tous.

Cette hausse du nombre de nouveaux packages entraîne également une augmentation du nombre de vulnérabilités qui apparaissent. L’objectif principal des attaquants reste l’argent. Ils se lancent activement à la recherche de vulnérabilités dans les packages les plus populaires, car vue l’ampleur de leur utilisation cela pourrrait avoir des effets dévastateurs sur tous les utilisateurs.


Voir les articles précédents

    

Voir les articles suivants