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 !

Faker.js, la bibliothèque intentionnellement corrompue par le développeur, est maintenant un projet contrôlé par la communauté
Et son développement sera assuré par une équipe de 8 personnes

Le , par Bill Fassinou

67PARTAGES

4  0 
Un développeur open source aurait volontairement corrompu des bibliothèques largement utilisées, affectant des tonnes de projets.
Il avait précédemment demandé à être rémunéré pour son travail

Un développeur semble avoir volontairement corrompu une paire de bibliothèques open source sur GitHub et le registre de logiciels npm - "faker.js" et "colors.js" - dont dépendent des milliers d'utilisateurs, rendant inutile tout projet contenant ces bibliothèques. Bien qu'il semble que color.js ait été mis à jour vers une version fonctionnelle, faker.js semble toujours être affecté, mais le problème peut être résolu en rétrogradant vers une version précédente (5.5.3). Dans l'un des messages du développeur sur GitHub datant de novembre 2020, il déclare qu'il ne veut plus faire de travail gratuit. « Avec tout mon respect, je ne vais plus soutenir les Fortune 500 (et d'autres entreprises de plus petite taille) avec mon travail gratuit », disait-il. « Saisissez cela comme une opportunité de m'envoyer un contrat annuel à six chiffres ou de forker le projet et demander à quelqu'un d'autre de travailler dessus. »

Les utilisateurs des bibliothèques open source populaires « colors » et « faker » ont été stupéfaits après avoir vu leurs applications, utilisant ces bibliothèques, affiché des données ressemblant à du charabia et planter. Certains ont supposé que les bibliothèques NPM avaient été compromises, mais il s'avère qu'il y a beaucoup plus dans l'histoire.

Le développeur de ces bibliothèques a intentionnellement introduit une boucle infinie qui a bloqué des milliers de projets qui dépendent de ces bibliothèques.

La bibliothèque colors a eu plus de 20 millions de téléchargements hebdomadaires uniquement sur npm et compte près de 19 000 projets qui en dépendent. Tandis que, faker a eu plus de 2,8 millions de téléchargements hebdomadaires sur npm et compte plus de 2 500 personnes à charge.

Le développeur de ces deux bibliothèques, Marak Squires, a introduit un commit (une révision de fichier sur GitHub) dans colours.js qui ajoute un nouveau module de drapeau américain, ainsi que le déploiement de la version 6.6.6 de faker.js, déclenchant la même tournure destructrice des événements. Les versions sabotées amènent les applications à produire à l'infini des lettres et des symboles étranges, commençant par trois lignes de texte qui se lisent « LIBERTY LIBERTY LIBERTY ».


Plus curieusement encore, le fichier Lisez-moi de faker.js a également été remplacé par « Que s'est-il réellement passé avec Aaron Swartz ? » Swartz était un développeur de premier plan qui a aidé à établir Creative Commons, RSS et Reddit. En 2011, Swartz a été accusé d'avoir volé des documents de la base de données académique JSTOR dans le but de les rendre libres d'accès. Militant impliqué dans les grandes causes comme la neutralité du Net, il s’était opposé aux lois SOPA et PIPA (équivalentes de la Hadopi aux Etats-Unis). Aaron Swartz s’est suicidé en janvier 2013. Sujet aux épisodes dépressifs, il était sous le coup d’une procédure légale lourde. Il encourait pas moins de 4 millions de dollars d’amende et 30 ans de prison pour avoir cracké et dérobé 4 millions de documents académiques du MIT et du site Jstor. Un acte réalisé au nom du libre accès à la connaissance.

Un acte qui lui valait également l'accusation de "crime" ("felony" par la justice américaine.

Aaron Swartz refusait obstinément d’accepter ce terme, d'après son collègue Lawrence Lessig. Un refus qui, après 18 mois de négociations, allait donc déboucher sur un procès aux peines potentiellement très sévères.

En réaction à sa mort, plusieurs professeurs du MIT ont décidé d’honorer son combat – qu’ils soutiennent – en mettant en ligne des PDF de leurs travaux pour lutter contre le copyright sur les articles universitaires. En plus de ces professeurs, le MIT a également – officiellement et en tant qu’institution – décidé de mener une enquête interne pour déterminer comment l’école de Boston avait agi, dans le détail, depuis le début de l’affaire des « vols » de documents. Et si ses décisions n’avaient pas été disproportionnées.

Les utilisateurs signalent le problème

Un certain nombre d'utilisateurs, dont certains travaillant avec le kit de développement cloud d'Amazon, se sont tournés vers le système de suivi des bogues de GitHub pour exprimer leurs préoccupations concernant le problème. Et comme faker.js enregistre près de 2,5 millions de téléchargements hebdomadaires sur npm et color.js environ 22,4 millions de téléchargements par semaine, les effets de la corruption sont probablement considérables. Pour le contexte, faker.js génère de fausses données pour les démos, color.js ajoute des couleurs aux consoles javascript.

En réponse au problème, Squires a publié une mise à jour sur GitHub pour résoudre le « problème zalgo », qui fait référence au texte irrégulier que les fichiers corrompus produisent. « Il a été porté à notre attention qu'il y a un bogue zalgo dans la version v1.4.44-liberty-2 de colors », a noté Squires d'une manière vraisemblablement sarcastique. « S'il vous plaît, sachez que nous travaillons en ce moment pour corriger la situation et que nous aurons une résolution sous peu ».


Deux jours après avoir poussé la mise à jour corrompue sur faker.js, Squires a ensuite envoyé un tweet notant qu'il avait été suspendu de GitHub, malgré le stockage de centaines de projets sur le site. À en juger par le journal des modifications sur faker.js et colours.js, cependant, il semble que sa suspension ait déjà été levée. Squires a introduit le commit faker.js le 4 janvier, a été banni le 6 janvier et n'a introduit la version "liberty" de colours.js que le 7 janvier. On ne sait pas si le compte de Squires a de nouveau été banni.

La raison de ce méfait de la part du développeur semble être des représailles contre les mégaentreprises et les consommateurs commerciaux de projets open source qui s'appuient largement sur des logiciels gratuits et alimentés par la communauté, mais qui, selon le développeur, ne rendent pas à la communauté.

En novembre 2020, Marak avait averti qu'il ne soutiendrait plus les grandes entreprises avec son « travail gratuit » et que les entités commerciales devraient envisager de forker les projets ou de compenser le développeur avec un salaire annuel « à six chiffres ». « Avec tout mon respect, je ne vais plus soutenir les Fortune 500 (et d'autres entreprises de plus petite taille) avec mon travail gratuit », disait-il. « Saisissez cela comme une opportunité de m'envoyer un contrat annuel à six chiffres ou de forker le projet et demander à quelqu'un d'autre de travailler dessus. »

La décision audacieuse de Squires attire l'attention sur le dilemme moral et financier du développement open source, qui était probablement le but de ses actions. Un grand nombre de sites Web, de logiciels et d'applications s'appuient sur des développeurs open source pour créer des outils et des composants essentiels, le tout gratuitement. C'est le même problème qui oblige les développeurs non rémunérés à travailler sans relâche pour résoudre les problèmes de sécurité de leur logiciel open source, comme Heartbleed en 2014 qui a affecté OpenSSL et la vulnérabilité plus récente de Log4Shell trouvée dans log4j qui a vu les bénévoles se démener pour proposer des corrections.

Source : Web Archive

Et vous ?

Quel regard portez-vous sur le dilemme moral et financier du développement open source ? Quel est, selon vous, le meilleur moyen de parvenir à un équilibre ?
Que pensez-vous de la plainte du développeur en 2020 qui demandait à être rémunéré pour son travail ? Qui devrait le rémunérer selon vous ?
Que pensez-vous de l'action visant à faire planter les projets dépendants de ces bibliothèques ? Cela ressemble-t-il à un sabotage selon vous ? Dans quelle mesure ?

Voir aussi :

Aaron Swartz s'est suicidé, il ne fera pas 30 ans de prison. Vives réactions après la mort du développeur surdoué militant du copyleft
« La mort de Aaron Swartz ne changera rien », le suicide du développeur n'émeut pas la procureur, qui n'en est pas à son premier mort
Vous avez lu gratuitement 0 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.

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

Avatar de grunk
Modérateur https://www.developpez.com
Le 17/01/2022 à 16:33
Par exemple, Angelina Fabbro, directrice de l'ingénierie chez Splice, a déclaré sur Twitter : « GitHub suspend le compte de quelqu'un pour avoir modifié son propre code dans un projet qu'il possède me fait bien plus peur que npm qui annule un paquet. J'aime un peu ce que Marak a fait pour se faire entendre et protester. Si ces entreprises et leur infrastructure sont si fragiles qu'un ou deux packages qui changent ou disparaissent font des ravages, disons-le, leur modèle de risque est nul (c'est en fait le cas de toutes les entreprises technologiques) ».
Il y'a eu autant d'applis que ca impactées en prod ? Si c'est le cas c'est effectivement inquiétant. Ca veux dire que c'est déployé avec 0 test.

Par contre sur des projets js d'envergure , bien malin celui qui est capable de maitriser son arbre de dépendances à 100% . Sur le premier niveau oui évidemment , ensuite ca devient très vite très compliqué. C'est le revers de la médaille d'avoir une gestionnaire de dépendances très efficace malheureusement.
6  0 
Avatar de cd090580
Membre averti https://www.developpez.com
Le 17/01/2022 à 19:19
C'était son projet et sa bibliothèque.
Il est encore libre de faire ce qu'il veut avec et tout supprimer si cela lui chante.....
6  0 
Avatar de redcurve
Inactif https://www.developpez.com
Le 18/01/2022 à 7:15
Citation Envoyé par cd090580 Voir le message
C'était son projet et sa bibliothèque.
Il est encore libre de faire ce qu'il veut avec et tout supprimer si cela lui chante.....
Tout à fait ça reste SA propriété intéllectuelle
4  0 
Avatar de kain_tn
Expert éminent https://www.developpez.com
Le 17/01/2022 à 20:07
Citation Envoyé par Stéphane le calme Voir le message

« Si vous êtes allé sur le référentiel GitHub de ce développeur, vous avez trouvé deux choses : du contenu complotiste dans le fichier readme du référentiel [...] »
Aaaaah, le complotisme. Le truc pour décrédibiliser n'importe quels propos. Le gars est encore libre de penser ce qu'il veut, et peut-être que son affirmation sur la mort de Aaron Swartz n'est pas à prendre au sens littéral (je ne suis pas dans sa tête).

Citation Envoyé par jpouly Voir le message
C'est le problème d'utiliser trop de librairies dans un projet. Libre ou Payante d'ailleurs. Au bout de quelques années c'est un vrai calvaire à maintenir.
Mieux vaut se contenter des framework de bases, même si cela limite les choses et ne simplifie pas le travail.
Tout à fait. On ne devrait tirer des dépendances externes que lorsqu'elles sont nécessaires. Après, le problème qui se pose ici est celui des dépendances transitives.

Citation Envoyé par jpouly Voir le message

J'oserais faire le parallèle avec log4J. Avoir besoins de toute une usine à gaz pour tracer l'exécution du code dans un fichier, c'est un peu trop.
Une simple écriture dans un fichier est beaucoup plus simple. Mais moins paramétrable, c'est sure.
Ou alors, dans le cas de Log4J apprendre que SLF4J, une API de log compatible avec la plupart des frameworks de log Java (dont Log4J), est disponible depuis au moins 2006, et que c'est idiot d'avoir du code qui dépende d'implémentations plutôt que d'abstractions, surtout quand on sait que chaque projet/framework/serveur peut tirer son implémentation.

Citation Envoyé par jpouly Voir le message

Il est surtout temps que les développeurs arrêtent de faire de mise à jour toutes les deux secondes et testent leurs logiciels avant de les diffuser. De VRAI tests.
Pas des tests unitaires à la C qui ne sert à rien, mais de vrais tests fonctionnelles. La aussi, ça prend du temps, je l'accorde. Mais c'est ça faire de la qualité.
Là encore, ça dépend de la façon dont le projet est architecturé. C'est sûr que si on a un patchwork de CRUD ou de la SPA sans aucune gestion d'états, l'écriture et surtout la maintenance de tests automatisés devient très compliquée, ce qui laisse peu de temps pour automatiser des tests UI par exemple.

Citation Envoyé par jpouly Voir le message

Il est temps que cela change et qu'on arrête d'utiliser ces gestionnaires de packages.
Eh bien ça dépend. Un gestionnaire de packages, ça permet de gérer les dépendances, y compris sur vos projets en interne, ce qui est formidable. Le problème c'est plutôt le patchwork de bibliothèques en dépendances directes/transitives, et là on en revient au point écrit plus haut, de n'embarquer les choses que quand elles sont nécessaires.

Citation Envoyé par cd090580 Voir le message
C'était son projet et sa bibliothèque.
Il est encore libre de faire ce qu'il veut avec et tout supprimer si cela lui chante.....
Tout à fait. Mais visiblement Github n'est pas d'accord avec ça et se torche complètement avec la licence déclarée sur notre code.
Une façon respectueuse de la licence aurait été de forker le projet, de le publier comme fork, et de demander à tous ceux qui ont automatiquement tiré la dernière version du paquet (mauvaise pratique) de remplacer leurs dépendances.
3  0 
Avatar de Demky
Membre habitué https://www.developpez.com
Le 24/01/2022 à 10:27
Je ne comprends pas trop, n'avons nous pas eu droit la semaine dernière a une floppée d'article indiquant qu'il avait été débanni ?

A la base, c'est son projet, il est donc sencé pouvoir en faire ce qu'il veut, je ne comprends pas pourquoi il est banni par github.
6  3 
Avatar de Fleur en plastique
Membre extrêmement actif https://www.developpez.com
Le 26/01/2022 à 14:56
Citation Envoyé par Demky Voir le message
Je ne comprends pas trop, n'avons nous pas eu droit la semaine dernière a une floppée d'article indiquant qu'il avait été débanni ?
Oui parce que ce gros boulet de base, après avoir été débanni, a récidivé.

Du coup, il a été rebanni et je pense que cette fois-ci il devra passer sous le bureau pour espérer retrouver l'accès à son compte.

De plus, prétendre une "erreur de programmation" c'est vraiment du foutage de G. Il n'a même pas honte ? Il mérite la corde.
2  0 
Avatar de miaous
Membre averti https://www.developpez.com
Le 18/01/2022 à 13:36
Citation Envoyé par grunk Voir le message
Il y'a eu autant d'applis que ca impactées en prod ? Si c'est le cas c'est effectivement inquiétant. Ca veux dire que c'est déployé avec 0 test.

Par contre sur des projets js d'envergure , bien malin celui qui est capable de maitriser son arbre de dépendances à 100% . Sur le premier niveau oui évidemment , ensuite ca devient très vite très compliqué. C'est le revers de la médaille d'avoir une gestionnaire de dépendances très efficace malheureusement.
Je ne sais pas si ca existe sur les gestionnaire de dépendances, mais il faudrait pouvoir mettre une limite (surchargable) sur le nombre de dépendances en cascade pour avoir conscience que l'import de truc va appelle bidule qui lui meme appel machin1 , machin2.
0  0 
Avatar de kain_tn
Expert éminent https://www.developpez.com
Le 19/01/2022 à 11:33
Citation Envoyé par miaous Voir le message
Je ne sais pas si ca existe sur les gestionnaire de dépendances, mais il faudrait pouvoir mettre une limite (surchargable) sur le nombre de dépendances en cascade pour avoir conscience que l'import de truc va appelle bidule qui lui meme appel machin1 , machin2.
Alors je pense que ça dépend des gestionnaires mais quand tu analyses la qualité de ton code, tu peux/devrais aussi analyser ton arbre de dépendances. Tu as des outils pour ça, y compris des outils de visualisation.
0  0 
Avatar de grunk
Modérateur https://www.developpez.com
Le 24/01/2022 à 12:05
Autant des projets open source qui marchent peuvent être une super vitrine quand on cherche du boulot , autant là il s'est auto catalogué comme saboteur professionnel. Je lui souhaite de pas avoir à chercher du travail dans les quelques années à venir.
4  4 
Avatar de tontonCD
Membre actif https://www.developpez.com
Le 31/01/2022 à 11:03
"A la base, c'est son projet, il est donc sensé pouvoir en faire ce qu'il veut, je ne comprends pas pourquoi il est banni par github."

Beaucoup de projets GitHub sont vérolés, parfois intentionnellement, il suffit alors de les récupérer et de les compiler pour installer un virus chez soi.
0  0