Logo Zéphyrnet

Un développeur JavaScript détruit ses propres projets dans la « leçon » de la chaîne d'approvisionnement

Date :

Vous avez probablement vu les nouvelles, même si vous n'êtes pas sûr de ce qui s'est passé.

À moins que vous ne soyez un programmeur JavaScript et que vous vous fiez à l'un ou aux deux d'une paire de modules appelés faker.js et colors.js.

Si vous étiez un utilisateur de l'un de ces projets, et si vous êtes (ou étiez !) enclin à accepter automatiquement toutes les mises à jour de votre code source sans aucune sorte de révision ou de test de code…

… vous êtes probablement bien conscient de ce qui s'est passé exactement et de la façon dont cela vous a affecté.

Attaques de la chaîne d'approvisionnement

Les lecteurs de longue date de Naked Security seront familiers avec le problème des soi-disant attaques de la chaîne d'approvisionnement dans les bibliothèques de logiciels open source, car nous avons déjà écrit sur ce genre de problème dans les écosystèmes de programmation.

Nous avons écrit sur les failles de sécurité qui apparaissent soudainement dans de nombreuses communautés de codage, y compris PHP programmeurs, Pythonistes, Rubi utilisateurs, et NPM ventilateurs.

L'année dernière, nous avons même eu des raisons de débattre de la morale de chercheurs universitaires autoproclamés qui ont délibérément utilisé le référentiel de code source du noyau Linux comme terrain d'essai pour ce qu'ils appellent sans vergogne l'hypocrite commet.

Les attaques de la chaîne d'approvisionnement logicielle impliquent généralement un contenu empoisonné, dangereux ou délibérément modifié qui infecte indirectement votre réseau ou votre équipe de développement, contrairement à un piratage direct où des attaquants pénètrent dans votre réseau et lancent un assaut frontal.

Les attaques de la chaîne d'approvisionnement sont souvent transmises de manière totalement involontaire par l'un de vos fournisseurs de produits et services, qui peuvent eux-mêmes avoir ingéré les modifications non autorisées de quelqu'un en amont d'eux, et ainsi de suite.

EN SAVOIR PLUS SUR LES ATTAQUES DE LA CHAÎNE D'APPROVISIONNEMENT

Cliquez et faites glisser sur les ondes sonores ci-dessous pour passer à n'importe quel point du podcast.
Vous pouvez aussi vous écouter directement sur Soundcloud, ou lire une transcription complète.


contraire à l'éthique, peut-être, mais parfois pas criminel

Comme nous l'avons mentionné ci-dessus, cependant, les problèmes de chaîne d'approvisionnement de ce type ne découlent pas toujours d'une intention criminelle, même s'ils peuvent finalement être jugés contraires à l'éthique (ou infantiles, ou mal pensés, ou toute combinaison de ceux-ci).

Nous avons déjà mentionné l'hypocrite commet, qui visaient à nous rappeler à tous qu'il est possible d'injecter du code de porte dérobée malveillant sous le couvert de deux ou plusieurs modifications qui n'introduisent pas de failles de sécurité à elles seules, mais créent une vulnérabilité lorsqu'elles sont combinées.

Et nous avons lié à l'histoire d'un « chercheur » qui tenait tellement à nous rappeler à quel point il est facile de créer des logiciels perfides qu'il a délibérément téléchargés. près de 4000 d'entre eux dans un sursaut soutenu de « serviabilité ».

Comme nous l'avions suggéré à l'époque, ces deux « experts » – les hypocrites et le surchargeur – semblent avoir adopté la devise égoïste selon laquelle un travail qui en vaut la peine vaut la peine d'être fait. exagération...

… créant ainsi d'énormes quantités de travail inutile pour d'autres volontaires innocents dans les communautés Linux et Python respectivement.

Colors et Faker deviennent voyous

Cette fois, le fondateur de deux modules de codage JavaScript populaires connus sous le nom colors.js et faker.js a jeté deux clés légèrement différentes dans les travaux.

Couleurs est une boîte à outils petite et simple qui vous aide à ajouter du texte coloré dans la sortie de votre console, souvent afin de rendre les informations plus intéressantes à regarder et plus faciles à lire.

Par exemple, lorsque nous avons fait notre Log4Shell – Le film vidéo récemment, nous avons ajouté une touche de couleur à la sortie de notre serveur LDAP simulé pour faciliter le suivi des demandes entrantes, en utilisant des séquences de contrôle ANSI dans la sortie du terminal pour ajouter des marques vertes et rouges pour indiquer les succès et les échecs :

Utilisation économe de marqueurs terminaux verts et rouges pour un attrait visuel et une clarté.

Malheureusement pour colors.js utilisateurs, le fondateur du projet, après n'avoir publié aucune mise à jour depuis 2019, a soudainement ajouté un nouveau code pour reprendre le numéro de version de 1.4.0 à l'identifiant de version quelque peu inhabituel de 1.4.4-liberty-2.

Marre, apparemment, de ne jamais obtenir la reconnaissance financière qu'il pensait mériter de la part des nombreuses personnes qui utilisaient son travail, le fondateur a saccagé son propre code en ajoutant une boucle infinie comme celle-ci :

/* remove this line after testing */
let am = require('../lib/custom/american');
am();
for (let i = 666; i < Infinity; i++) { if (i % 333) { // console.log('testing'.zalgo.rainbow) } console.log('testing testing testing testing testing testing testing'.zalgo)
}

La boucle à la fin de ce code imprime le texte testing testing ... testing maintes et maintes fois, après avoir appliqué une fonction appelée zalgo à elle.

Zalgoïsation

Zalgoïsation, si vous n'en avez jamais entendu parler, est un moyen de rendre les caractères romains ordinaires étranges et dépourvus de sens en les jonchant d'accents, de cédilles, de trémas et d'autres soi-disant signes diacritiques – un peu comme nommer votre groupe Motörhead au lieu de Motorhead, mais sans la contrainte d'ajouter simplement un seul symbole supplémentaire.

Le texte Zalgoed n'a pas seulement de sens, mais met aussi souvent une lourde charge sur le logiciel de rendu de texte sous-jacent qui essaie de le composer et de le présenter pour l'affichage.

Un calligraphe humain hésiterait à se faire demander d'ajouter tous les accents possibles à chaque lettre d'un mot, sachant que cela n'aurait aucun sens.

Mais un compositeur informatisé essaiera simplement d'obliger en combinant tous les marquages ​​que vous demandez, donnant à votre groupe Zalgométal un nom stylisé quelque chose comme ceci :

Marques diacritiques ajoutées au hasard et sans signification dans le texte

Un mémorial à Aaron Schwartz

Faker les utilisateurs ont connu un type de mise à jour différent, le projet étant essentiellement effacé et remplacé par un README fichier demandant « Que s'est-il réellement passé avec Aaron Swartz? "

Schwartz, un "hacktiviste" accusé d'infractions fédérales relatives à l'accès non autorisé à des documents universitaires qui, selon lui, devraient ne pas être gardé derrière un paywall, s'est malheureusement suicidé sous le stress d'attendre son procès.

Le projet Faker touche à sa fin. Notez le commentaire "endgame", l'absence de fichiers de code source,
et le README en souvenir d'Aaron Schwartz.

Faker était une boîte à outils pratique pour les développeurs qui facilitait la génération de grandes quantités de données réalistes mais inventées pour l'assurance qualité, telles que la création de 100,000 XNUMX noms et adresses que vous pouviez ajouter à votre base de données d'utilisateurs pendant le développement.

Les fausses données sont un aspect essentiel pour éviter un désastre de confidentialité alors que vous travaillez toujours avec un code incomplet non testé, car cela signifie que vous n'exposez pas de données authentiques et sensibles de manière irréfléchie (et peut-être illégale).

L'auteur de Faker a apparemment tenté de commercialiser le projet en 2021, mais sans succès, il semble donc qu'il ait maintenant reçu le code son coup de grâce.

Ce plan n'a apparemment abouti à rien, avec peu de fonds provenant des entreprises utilisatrices.

Étant donné que le code est publié depuis de nombreuses années sous licence MIT - ce qui signifie essentiellement que n'importe qui peut l'utiliser gratuitement, même dans des produits commerciaux à code source fermé, tant qu'il ne prétend pas l'avoir créé lui-même - il y a rien n'empêche les utilisateurs existants de continuer avec la version précédente, voire toute version antérieure.

Ils peuvent même apporter leurs propres modifications et améliorations à leur guise…

… il n'est donc pas clair quel sera le résultat final de la destruction si spectaculaire du projet pour l'auteur, étant donné qu'il ne peut pas réécrire rétrospectivement les licences des utilisateurs qui l'ont déjà téléchargé et déployé.

Est-ce que quelqu'un gagne ou perdons-nous tous ?

Comme un commentateur lésé a déclaré (quelqu'un qui a vraisemblablement mis la mise à jour en production sans examiner ce qui avait changé et qui a subi une panne temporaire en conséquence), cela ne s'est vraiment bien terminé pour personne :

N'est-il pas intéressant que ce soient les personnes sans réputation qui semblent penser que la réputation n'a aucune valeur ?? À toutes les personnes ici présentes qui disent « nous avons appris une leçon précieuse sur la confiance dans le logiciel libre » ; comprendre cela…

Pour me causer 15 minutes de chagrin, tout ce que Marak avait à faire était de détruire de manière irréversible sa propre réputation.

De quel côté êtes-vous dans une affaire comme celle-ci ? Faites-nous savoir dans les commentaires ci-dessous…


Source : https://nakedsecurity.sophos.com/2022/01/11/javascript-developer-destroys-own-projects-in-supply-chain-lesson/

spot_img

Dernières informations

spot_img

Discutez avec nous

Salut! Comment puis-je t'aider?