La porte dérobée XZ sur Linux et l'importance des logiciels libres

Un code librement visible et un œil vigilant ont permis d'arrêter un incident de sécurité mondial

The XZ backdoor could have broken Linux security.

Un programmeur confronté à un problème technique a mis fin à un incident de sécurité mondial en découvrant une porte dérobée qui avait été ajoutée à la bibliothèque de compression de données UZ Utils incluse dans la plupart des distributions Linux. Cette découverte est arrivée juste à temps avant que les principales distributions comme Debian ou Redhat ne veuillent introduire ce code malveillant dans leurs versions. Cela prouve que les logiciels libres sont essentiels au maintien de la sécurité numérique.


Que s’est-il passé ?

Asseyez-vous et attachez votre ceinture, car cette histoire est folle.

En mars 2024, Andreas Freund, un employé de Microsoft, s’est penché sur les problèmes de performance de Debian-sid. Il a remarqué qu’il générait un grand nombre de connexions SSH qui consommaient une quantité anormale de ressources CPU. Après une inspection plus poussée, il a signalé ce problème au projet OpenWall, qui a ensuite été repris par un certain nombre d’éditeurs de logiciels pour une inspection plus approfondie.

M. Freund a découvert un morceau de code caché qui avait été introduit dans les dernières versions 5.6.0 et 5.6.1 de XZ par le contributeur de longue date Jian Tan.

Les modifications apportées à ces versions compromettent la sécurité du système d’exploitation et donnent à un pirate un accès administratif complet.

M. Freund a décrit la découverte de cette attaque majeure de la chaîne d’approvisionnement, qui s’apparente à celle de SolarWinds, comme ayant “vraiment nécessité un grand nombre de coïncidences” et a déclaré : “Il me semble que nous avons eu beaucoup, beaucoup de chance ici”.

Ce que fait le code de la porte dérobée XZ

Le code malveillant ajouté furtivement au projet XZ Utils cible sshd, un fichier exécutable utilisé pour établir des connexions SSH à distance. Si un attaquant a accès à la bonne clé de chiffrement, il pourra l’ajouter aux certificats de connexion SSH, les pousser, puis les exécuter par l’intermédiaire des appareils protégés par la porte dérobée.

Le lien entre le logiciel de compression XZ et SSH est dû à un correctif dans Debian, entre autres, qui crée un lien entre SSH et systemd. Systemd est à son tour lié à la bibliothèque LZMA de XZ, ce qui permet de passer de la porte dérobée de XZ à l’accès SSH.

Une infographie détaillée expliquant les étapes exactes du processus a été réalisée par Thomas Roccia:

Roccia's infographic explaining the XZ backdoor aka CVE-2024-3094

Ce qui est particulièrement surprenant à propos de cette porte dérobée, c’est son degré de sophistication et les mesures prises par l’attaquant pour s’intégrer dans le projet XZ pendant des années afin d’obtenir un accès suffisant pour tenter d’exécuter l’attaque. À la suite de cette découverte, les chercheurs en menaces se sont concentrés sur un contributeur principal utilisant le pseudonyme Jian Tan.

Qui est Jian Tan ?

À l’heure actuelle, nous ne connaissons pas la véritable identité de l’utilisateur opérant sous le nom de Jian Tan. Mais les chercheurs ont découvert quelques pistes. Jian Tan, qui opère sous le nom d’utilisateur JiaT75, a semblé travailler pour la première fois sur le code XZ Utils en 2021. Il n’y a pas lieu de s’alarmer outre mesure, car XZ est un projet open source et tout le monde peut proposer son aide pour l’améliorer ou éliminer les bogues. Au fil des ans, Tan a continué à apporter de petites contributions au projet, ce qui a renforcé sa réputation et sa confiance au sein de la communauté construite autour du projet.

En mai 2022, un utilisateur inconnu utilisant le pseudonyme Dennis Ens a commencé à se plaindre d’une récente mise à jour, suivi par un autre inconnu utilisant le nom de Jigar Kumar, pour pousser le développeur principal de XZ Utils à ajouter un nouveau mainteneur (quelqu’un qui construit et organise le code source pour les projets open source) afin que le développement puisse avancer plus rapidement. Cette pression a finalement conduit à l’ajout de Jian Tan en tant que responsable du projet.

Au milieu de l’année 2023, Tan a demandé à ce qu’un vérificateur de vulnérabilité public soit désactivé, ce qui aurait permis d’introduire le code de la porte dérobée.

A screenshot of Tan's request to have ifunc disabled.

Capture d’écran de la demande GitHub de Tan de désactiver ifunc.

Après avoir continué à travailler sur le projet, en février 2024, Tan a effectué les dernières modifications pour XZ Utils 5.6.0 et 5.6.1, qui contiennent la porte dérobée malveillante.

Cette attaque d’ingénierie sociale à long terme a gagné la confiance d’une communauté open source, ce qui a donné à Tan l’accès dont il avait besoin pour tenter de mener à bien l’attaque. Le temps investi et le niveau technique élevé de la porte dérobée elle-même amènent certains chercheurs en sécurité à penser qu’un acteur parrainé par l’État est à l’origine de cette attaque.

Quelle est la prochaine étape pour XZ ?

Le site web de XZ Utils est entièrement contrôlé par son principal développeur, Lasse Collin, et Jian Tan a été complètement retiré du projet. La page GitHub du projet est de nouveau en ligne et Lasse Collin a indiqué qu’il était en train d’examiner le dépôt et qu’il prévoyait de publier un article sur l’incident une fois l’examen terminé.

Au moment de la découverte, il a été confirmé que les distributions Linux suivantes étaient touchées par la porte dérobée :

Homebrew, le gestionnaire de paquets pour MacOS, utilisait la version 5.6.x mais est revenu à XZ Utils 5.4.6.

Si vous souhaitez vérifier si vous avez une version rétroactive de XZ Utils sur votre appareil, vous pouvez lancer “xz —version” dans votre terminal. Si la version 5.6.0 ou 5.6.1 est installée, il est recommandé de revenir à la version 5.4.x.

L’Open Source est le seul moyen de fournir des logiciels sûrs

Nous avons eu beaucoup de chance. Si le projet XZ Utils avait été maintenu de manière privée et si M. Freund avait été contraint de soumettre un ticket d’assistance, nous serions peut-être dans une situation très différente aujourd’hui. L’incident de la porte dérobée XZ est un exemple parfait de la raison pour laquelle la publication de logiciels libres offre des avantages majeurs en matière de sécurité. Ce n’est qu’en permettant à tout le monde d’accéder au code source que nous donnons aux chercheurs en sécurité la possibilité de découvrir ce type d’attaques avant que les choses ne tournent mal.

Les logiciels libres renforcent la sécurité de tous :

  • Le fait d’autoriser l’examen public du code de sécurité permet d’obtenir des critiques constructives de la part d’experts de toutes compétences et de tous horizons.
  • Une communauté peut repérer les bogues et les vulnérabilités plus rapidement qu’une équipe de développement à source fermée.
  • Le renforcement de la confiance par la transparence permet aux utilisateurs finaux de savoir qu’ils peuvent avoir confiance dans les produits qu’ils choisissent pour se protéger et protéger leurs données.

Les logiciels libres sont un aspect essentiel de la sécurité numérique. Le projet XZ Utils est utilisé par des produits d’entreprise et, sans l’examen de la communauté, cette attaque interne aurait pu passer inaperçue. Avec les logiciels à source fermée, seules des personnes sélectionnées ont le privilège de voir le code source, ce qui rend plus probable l’oubli de changements comme ceux-là.

Même si les grandes entreprises technologiques comptent de nombreux développeurs dans leurs équipes qui consultent le code, il n’est jamais garanti qu’un employé soit comme Jian Tan, en train d’essayer d’introduire en douce un code malveillant. L’open source permet de multiplier les regards sur le code, ce qui signifie qu’en plus de protocoles de sécurité solides et de révisions répétées du code, un plus grand nombre d’yeux peut repérer davantage de problèmes. Selon la loi de Linus : S’il y a suffisamment d’yeux, tous les bogues sont superficiels.

Chez Tuta, nous publions l’intégralité de nos protocoles de chiffrement et de notre code client en open source pour garantir à nos utilisateurs qu’ils peuvent avoir confiance dans le fait que nous tenons nos promesses de sécurité. Non seulement notre cryptage est développé et testé par des experts en cryptographie, mais il est également mis à la disposition de tous les chercheurs en sécurité pour qu’ils le testent et l’examinent. La confiance se mérite, et en publiant notre code entièrement en open source, nous prouvons que Tuta fournit la meilleure sécurité d’email disponible.

Restez en sécurité et bon cryptage.