coldwa.st
Tous les guidesProgrammationWebDonnéesOutilsBases de donnéesHaskellConceptsCabal & buildsChaîne d’outilsCompilateurPerformanceÉditeur & HLS

open source · chaîne d'approvisionnement · mainteneurs

La bibliothèque open source qui soutient votre stack a peut-être un seul mainteneur

Par ColdwastMis à jour le 10 juil. 20267 min de lecture#opensource#chainedapprovisionnement#securite
Code source en coloration syntaxique sur un écran sombre
Code source en coloration syntaxique sur un écran. Derrière une liste de dépendances, certains des projets les plus utilisés ont très peu de personnes pour les maintenir en vie.

Presque toutes les applications que vous exécutez dépendent de bibliothèques open source, et ces bibliothèques dépendent d'autres, sur plusieurs niveaux. Ce que l'on oublie facilement, c'est combien de ces niveaux sont maintenus par un ou deux bénévoles non rémunérés. Quand un tel projet est critique et sous-doté en ressources, il devient un point de défaillance unique - pour la fiabilité et, comme l'histoire récente le montre, pour la sécurité.

L'image que xkcd a saisie exactement

En 2020, la bande dessinée xkcd 2347, intitulée « Dependency », dessinait l'infrastructure numérique moderne comme une tour de blocs précaire, toute la structure reposant sur un petit morceau désigné comme un projet « qu'une personne au hasard dans le Nebraska maintient sans reconnaissance depuis 2003 ». Elle est devenue un classique instantané chez les développeurs parce que ce n'est pas tant une blague qu'un schéma exact. L'arbre de dépendances d'un projet type se réduit vraiment, par endroits, à l'effort d'une seule personne sur son temps libre.

Quand la tour a vraiment vacillé

Ce ne sont pas des risques hypothétiques. Quelques incidents largement documentés rendent le schéma concret :

  • Heartbleed (2014). Une faille grave dans OpenSSL, la bibliothèque qui sécurise une grande partie du trafic HTTPS du web, exposait de la mémoire pouvant laisser fuir des clés et des mots de passe. À l'époque, OpenSSL était maintenu par un tout petit groupe avec un financement minimal. Cette frayeur a directement suscité des efforts de financement de l'industrie pour l'infrastructure open source critique.
  • Log4Shell (décembre 2021). Une faille critique d'exécution de code à distance dans Log4j, une bibliothèque de journalisation intégrée dans d'innombrables applications Java, a été classée à la gravité maximale. Log4j était maintenu par une petite équipe de bénévoles, qui a ensuite passé une période épuisante à corriger un problème affectant une énorme part des logiciels d'entreprise.
  • La porte dérobée de xz-utils (2024). C'est l'avertissement le plus clair de tous. Selon les faits publics (CVE-2024-3094, classé CVSS 10.0), un contributeur utilisant le nom « Jia Tan » a passé environ deux ans à bâtir la confiance sur le projet de compression xz, obtenant les droits de commit puis de gestionnaire de versions, tandis que le mainteneur solo de longue date, Lasse Collin, était sous pression et, selon les rapports, en burn-out. Du code malveillant a été glissé dans xz 5.6.0 et 5.6.1, plaçant une porte dérobée dans la bibliothèque utilisée par SSH sur certaines distributions Linux. Il a été détecté presque par accident, avant un déploiement large, par un ingénieur enquêtant sur la légère lenteur des connexions.
Un développeur seul travaillant à un bureau dans une pièce sombre avec du code sur les écrans
Un développeur seul au travail. Une grande partie des logiciels open source critiques dépend d'une ou deux personnes qui les maintiennent sur leur temps libre.

Pourquoi un seul mainteneur est un risque structurel

Un projet à mainteneur unique concentre plusieurs risques au même endroit. Si le mainteneur perd son intérêt, tombe malade ou fait tout simplement un burn-out, les mises à jour et correctifs de sécurité s'arrêtent - le problème de l'« abandonware ». S'il est surchargé, la pression à céder le contrôle crée une ouverture pour un acteur malveillant, ce qui est exactement ce que le cas xz-utils a exploité. Et comme tant de projets en aval tirent la bibliothèque de façon transitive, un problème à la racine se propage à tout ce qui est construit dessus, souvent sans que ces équipes en aval sachent même que la dépendance était là.

La vérité inconfortable est que la pérennité de l'open source est un problème économique déguisé en problème technique. Le code est gratuit ; l'attention humaine qui le garde sûr ne l'est pas, et elle est fréquemment non rémunérée.

Ce que les équipes peuvent réellement faire

Vous ne pouvez pas maintenir personnellement chaque dépendance, mais vous pouvez cesser de les traiter comme une infrastructure gratuite qui se maintient toute seule :

  • Connaissez votre arbre de dépendances. Générez une nomenclature logicielle (SBOM) pour savoir réellement ce que vous livrez, y compris les dépendances transitives que vous n'avez jamais choisies directement.
  • Surveillez le bus factor. Pour les bibliothèques dont vous dépendez le plus, vérifiez combien de mainteneurs actifs il y a. Une dépendance critique avec un seul contributeur est un risque à consigner, pas à ignorer.
  • Épinglez et relisez les mises à jour. Épinglez les versions et relisez les changements plutôt que de tirer aveuglément la dernière version ; la porte dérobée de xz est arrivée dans une version d'apparence normale.
  • Redonnez là où ça compte. Sponsoriser, financer ou contribuer du temps de maintenance aux projets dont vous dépendez n'est pas de la charité - c'est réduire votre propre risque. Des fonds industriels et des fondations existent maintenant en partie pour cette raison.

Rien de tout cela ne supprime le risque entièrement, mais cela transforme une dépendance invisible en une dépendance gérée. Les projets qui soutiennent votre stack méritent d'être connus par leur nom.

FAQ

L'open source est-il moins sûr que le code propriétaire ? Pas intrinsèquement - un code ouvert peut être audité par quiconque, ce qui est un avantage réel. Le risque évoqué ici concerne les ressources et la maintenance, pas l'ouverture en elle-même. Un logiciel sous-financé, quel qu'il soit, est un risque.

Qu'est-ce que le « bus factor » ? C'est le nombre de personnes qui devraient être renversées par un bus (ou simplement partir) avant qu'un projet ne soit en grave difficulté. Un bus factor de un signifie qu'une seule personne est le projet.

Qu'était la porte dérobée de xz-utils ? Une porte dérobée délibérément placée (CVE-2024-3094) insérée par un contributeur qui avait gagné la confiance des mainteneurs au fil du temps, détectée en 2024 avant d'atteindre la plupart des systèmes en production. C'est l'exemple de référence de l'ingénierie sociale sur un projet à mainteneur unique.

Comment trouver les dépendances à mainteneur unique ? Commencez par un SBOM de votre projet, puis regardez les dépôts de vos bibliothèques les plus critiques : l'activité récente des commits et le nombre de mainteneurs actifs en disent long.

Guide indépendant, maintenu par la communauté. coldwa.st est un site de ressources de programmation ; cet article est un texte original qui résume des incidents publiquement documentés (Heartbleed, Log4Shell, la porte dérobée de xz-utils / CVE-2024-3094) et la bande dessinée xkcd 2347. Il n'est affilié à aucun de ces projets, et aucun chiffre ni événement n'est fabriqué - consultez les sources primaires pour tout le détail.