AccueilSécuritéGestionnaire de paquets npm : un développeur rend ses propres paquets inutilisables

Gestionnaire de paquets npm : un développeur rend ses propres paquets inutilisables

Le développeur des projets open source colors.js et Faker.js a adapté les paquets npm correspondants de manière à rendre les versions les plus récentes inutilisables. Cette manipulation est probablement une action de protestation contre les grandes entreprises qui utilisent des projets open source sans rémunérer correctement les développeurs.

Sommaire

Le paquet colors.js contient une boucle infinie dans les versions 1.4.1 et 1.4.44-liberty-2. Ce qui semblait à première vue être une attaque externe s’est avéré être un ajout régulier par le mainteneur et développeur du projet open source. Sur GitHub, on trouve à ce sujet l’ajout « Adds new American flag module ».

Après les trois lignes de texte

LIBERTY LIBERTY LIBERTY 
LIBERTY LIBERTY LIBERTY
LIBERTY LIBERTY LIBERTY

est toutefois suivie d’une sortie interminable d’une chaîne de caractères sauvages. Ce prétendu bug a été remarqué entre autres dans l’AWS Cloud Development Kit (AWS CDK) avec un Issue correspondant, sur lequel un tweet a également attiré l’attention.

Un coup d’œil sur le reste du code montre la boucle infinie clairement identifiée

for (let i = 666; i < Infinity; i++;) {

Les commentaires sur la ligne vont de « Dependency terrorism ? » à « Feel the power from the infinity side » en passant par « my hero ». On trouve en outre d’amusantes propositions d’amélioration pour un passage supplémentaire « Could change to i <= Infinity for 1 extra loop » ou pour simplifier : « while (true) { is the best practice ».

Le nombre de l’Antéchrist 666 tiré de l’Apocalypse de Jean, éventuellement plus connu dans le milieu des développeurs sous le nom de « The Number of the Beast » d’Iron Maiden, pour initialiser la variable i tout comme l’identificateur Infinity n’a pas été choisi par hasard.

Le même chiffre se retrouve dans la version actuelle du paquet faker : la version porte le numéro 6.6.6 et ne contient plus de code. Il en va de même pour le dépôt GitHub correspondant. À l’origine, la bibliothèque servait à créer des pseudo-données pour différents domaines, tels que les noms ou les adresses, qui devaient aider à tester et à développer des applications.

Dans le dépôt GitHub, avant le nettoyage complet, on trouvait l’issue #1046, dans laquelle le développeur s’était déjà plaint fin 2020 qu’il ne voulait plus fournir de travail non rémunéré aux entreprises du Fortune 500 : « No more free work from Marak – Pay Me or Fork This ». Il avait alors écrit « Prenez cela comme une opportunité de m’envoyer un contrat annuel à six chiffres ou de forker le projet et de laisser quelqu’un d’autre y travailler ».

La grève des robots de travail avec Bender dans Futurama ne se trouve plus que dans les archives web après le nettoyage du dépôt.

Le dépôt GitHub et la page npm de Faker.js ne contiennent certes plus de code, mais le readme fait référence à l’activiste Internet Aaron Swartz qui s’est suicidé en 2013 à l’âge de 26 ans : « What really happened with Aaron Swartz ? »

L’incident actuel rappelle le paquet left-pad supprimé de npm en 2016. Il ne comportait que neuf lignes de code et remplissait les chaînes de caractères sur la gauche jusqu’à la largeur souhaitée par des espaces ou d’autres caractères. De nombreux développeurs ont trouvé cette fonction d’aide utile et ont utilisé le paquet dans leurs applications. Lorsque le développeur a supprimé left-pad après une dispute avec le service de gestion des paquets npm, la construction de nombreuses applications a échoué, parmi lesquelles se trouvaient des applications célèbres comme Node.js et Babel.

Les réactions à la démarche du développeur de colors.js et Faker.js, qui se fait simplement appeler marak sur GitHub et Twitter, sont mitigées. Alors que certains célèbrent déjà la boucle infinie dans l’extension de code, d’autres trouvent ce comportement irresponsable :

GitHub a également réagi en bloquant l’accès du développeur à ses dépôts, ce qui a à son tour suscité des réactions critiques. Un fil de discussion sur Twitter montre des exemples de réactions des deux côtés : le développeur qui « pète les plombs ».

et l’instance centralisée GitHub :

Fondamentalement, la procédure suivie peu après la faille de sécurité bien plus grave de Log4j montre à nouveau à quel point les projets comportant de nombreuses dépendances sont vulnérables. La question de savoir si les exploitants de projets open source reçoivent trop peu de soutien de la part des entreprises qui en profitent y est étroitement liée.

Lire aussi

Plus de détails et de contexte sur l’incident sont disponibles sur Bleepingcomputer et dans un article de blog chez Snyk.

Plus d'articles