IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Une blague ratée paralyse le registre NPM, empêchant les développeurs de dépublier leurs packages.
Les farceurs estiment être « des testeurs d'assurance qualité pour NPM » et non des trolls

Le , par Stéphane le calme

199PARTAGES

18  0 
Ce qui aurait pu commencer comme une simple farce a fini par avoir des répercussions plus importantes pour tous les auteurs de l’écosystème NPM. Installer "everything" aurait pu entraîner un manque d'espace de stockage et un ralentissement de votre ordinateur, mais la simple existence du package sur npmjs.com empêche les auteurs, sans rapport avec ce package, de dépublier leurs packages du plus grand registre de logiciels JavaScript au monde.

Le registre NPM est un service qui permet aux développeurs de JavaScript de publier et de partager leurs modules de code avec la communauté. Il est utilisé par des millions de projets et de développeurs dans le monde entier. Cependant, il a récemment été victime d’un canular qui a perturbé son fonctionnement et causé des problèmes à de nombreux utilisateurs.

Le référentiel de packages JavaScript open source exploité par GitHub héberge plus de 2 millions de packages et est utilisé par plus de 17 millions de développeurs, selon le site Web NPM.

Le 29 décembre, un package nommé "everything" (tout) a été publié dans le registre, conçu pour installer tous les autres packages publics du registre. Cela a créé un réseau de dépendances à l'échelle du registre qui a effectivement désactivé la possibilité de dépublier des packages sur le site, car les packages dont dépendent d'autres packages ne peuvent pas être dépubliés.

Qu'est-ce qui se trouve derrière le package "everything" ?

En fait, le package "everything" ne contient que 5 sous-packages, publiés sous la portée "@everything-registry", répertoriés comme ses dépendances. Cependant, ces 5 packages parviennent progressivement à intégrer chaque package présent sur l'ensemble du registre NPM en tant que dépendance. Par exemple, "everything" récupère « @everything-registry/chunk-2 », ce qui peut en outre tenter d'extraire plusieurs autres packages du même auteur, tels que « @everything-registry/sub-chunk-1623 ».

Chacun de ces sous-packages (ou « morceaux » comme les appelle l'auteur) comprend finalement environ 800 projets npm comme dépendance.

Considérant que l'auteur de "everything" a publié plus de 3 000 paquets (morceaux) de ce type, chacun avec des centaines de dépendances, une seule commande « npm install everything » commencera à résoudre ce que l'on appelle les dépendances transitives et finira par télécharger des millions de paquets.

"everything" était accompagné d'un fichier demandant de ne pas l'installer

L'incident a déclenché des réponses de la part des développeurs incapables de dépublier leurs packages obsolètes ou expérimentaux, ainsi que des critiques de la part de certains qui considéraient cette cascade comme un abus du système NPM open source.

Les développeurs derrière "everything" ont déclaré qu’ils n’avaient pas anticipé ces conséquences et ont contacté NPM et GitHub pour résoudre le problème. Ironiquement, l’équipe n’a pas pu dépublier "everything" elle-même en raison d’un cercle de dépendances qui rendait essentiellement le package dépendant de lui-même.

« Nous avons juste pensé que ce serait drôle », a écrit Evan Boehs, un contributeur à "everything", en réponse à la question d'un autre utilisateur de GitHub sur l'objectif du projet. « Nous ne savions pas que tout cela allait arriver ».

Le package "everything" était accompagné d'un fichier « README » indiquant « S'il vous plaît, n'installez pas réellement ceci… ». Il comprenait également une image mème de Gary Oldman du film « Léon », représentant une scène dans laquelle le personnage d'Oldman crie de façon dramatique le mot « everyone » (tout le monde).

La section « à propos » du référentiel "everything" comprend également un lien vers le site Web « everything.npm.lol », qui affichait une animation représentant de nombreux packages en cours d'installation, suivie d'un mème du jeu vidéo « The Elder Scrolls V : Skyrim ».

Malgré l'avertissement de ne pas installer le package, le site de registre NPM indique que « everything » a été téléchargé des centaines de fois

Jossef Harush, responsable du groupe d'ingénierie de sécurité de la chaîne d'approvisionnement chez Checkmarx, a déclaré dans un billet de blog que l'installation de "everything" entraînerait probablement un déni de service (DoS). Harush qualifie également le projet de « campagne de trolls ».

[QUOTE]Les inconvénients de ces trolls

Imaginez que vous ayez fait une expérience, publié un package sur NPM et que vous souhaitiez maintenant supprimer votre package NPM. Vous ne pouvez pas le faire si d’autres packages l’utilisent. Le...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !