Ce que nous savons de la porte dérobée xz Utils qui a presque infecté le monde

Getty Images

Vendredi, un développeur Microsoft solitaire a secoué le monde lorsqu’il a révélé qu’une porte dérobée avait été intentionnellement implantée dans xz Utils, un utilitaire de compression de données open source disponible sur presque toutes les installations de Linux et d’autres systèmes d’exploitation de type Unix. La ou les personnes à l’origine de ce projet y ont probablement passé des années. Ils étaient probablement sur le point de voir la mise à jour de porte dérobée fusionner dans Debian et Red Hat, les deux plus grandes distributions de Linux, lorsqu’un développeur de logiciels aux yeux d’aigle a repéré quelque chose de louche.

« Il s’agit peut-être de l’attaque de chaîne d’approvisionnement la mieux exécutée que nous ayons vue décrite ouvertement, et c’est un scénario de cauchemar : malveillant, compétent, autorisé en amont dans une bibliothèque largement utilisée », a déclaré l’ingénieur en logiciels et cryptographie Filippo Valsorda à propos de cet effort, qui était terriblement près de réussir.

Les chercheurs ont passé le week-end à rassembler des indices. Voici ce que nous savons jusqu’à présent.

Qu’est-ce que xz Utils ?

xz Utils est presque omniprésent sous Linux. Il fournit une compression de données sans perte sur pratiquement tous les systèmes d’exploitation de type Unix, y compris Linux. xz Utils fournit des fonctions critiques pour compresser et décompresser les données lors de toutes sortes d’opérations. xz Utils prend également en charge l’ancien format .lzma, ce qui rend ce composant encore plus crucial.

Ce qui s’est passé?

Andres Freund, développeur et ingénieur travaillant sur les offres PostgreSQL de Microsoft, résolvait récemment des problèmes de performances rencontrés par un système Debian avec SSH, le protocole le plus largement utilisé pour se connecter à distance à des appareils via Internet. Plus précisément, les connexions SSH consommaient trop de cycles CPU et généraient des erreurs avec valgrind, un utilitaire de surveillance de la mémoire de l’ordinateur.

Grâce à la chance et à l’œil attentif de Freund, il a finalement découvert que les problèmes étaient le résultat de mises à jour apportées à xz Utils. Vendredi, Freund s’est rendu sur la liste de sécurité Open Source pour révéler que les mises à jour étaient le résultat de l’implantation intentionnelle d’une porte dérobée dans le logiciel de compression.

Il est difficile d’exagérer la complexité de l’ingénierie sociale et du fonctionnement interne de la porte dérobée. Thomas Roccia, chercheur chez Microsoft, a publié un graphique sur Mastodon qui permet de visualiser l’étendue tentaculaire de l’effort le plus réussi visant à propager une porte dérobée avec une portée qui aurait éclipsé l’événement SolarWinds de 2020.

A quoi sert la porte dérobée ?

Le code malveillant ajouté aux versions 5.6.0 et 5.6.1 de xz Utils a modifié le fonctionnement du logiciel. La porte dérobée a manipulé sshd, le fichier exécutable utilisé pour établir des connexions SSH à distance. Toute personne en possession d’une clé de cryptage prédéterminée pouvait stocker n’importe quel code de son choix dans un certificat de connexion SSH, le télécharger et l’exécuter sur l’appareil doté d’une porte dérobée. Personne n’a réellement vu le code téléchargé, on ne sait donc pas quel code l’attaquant prévoyait d’exécuter. En théorie, le code pourrait permettre à peu près n’importe quoi, y compris le vol de clés de chiffrement ou l’installation de logiciels malveillants.

Attendez, comment un utilitaire de compression peut-il manipuler un processus aussi sensible en matière de sécurité que SSH ?

N’importe quelle bibliothèque peut altérer le fonctionnement interne de tout exécutable auquel elle est liée. Souvent, le développeur de l’exécutable établira un lien vers une bibliothèque nécessaire à son bon fonctionnement. OpenSSH, l’implémentation sshd la plus populaire, ne relie pas la bibliothèque liblzma, mais Debian et de nombreuses autres distributions Linux ajoutent un correctif pour lier sshd à systemd, un programme qui charge une variété de services lors du démarrage du système. Systemd, à son tour, est lié à liblzma, ce qui permet à xz Utils d’exercer un contrôle sur sshd.

Comment est née cette porte dérobée ?

Il semblerait que cette porte dérobée ait pris des années à se préparer. En 2021, une personne portant le nom d’utilisateur JiaT75 a fait son premier engagement connu dans un projet open source. Rétrospectivement, la modification apportée au projet libarchive est suspecte, car elle a remplacé la fonction safe_fprint par une variante reconnue depuis longtemps comme moins sécurisée. Personne ne l’a remarqué à l’époque.

L’année suivante, JiaT75 a soumis un correctif sur la liste de diffusion xz Utils et, presque immédiatement, un participant inédit nommé Jigar Kumar s’est joint à la discussion et a soutenu que Lasse Collin, le mainteneur de longue date de xz Utils, n’avait pas été mis à jour. mettre à jour le logiciel souvent ou assez rapidement. Kumar, avec le soutien de Dennis Ens et de plusieurs autres personnes qui n’avaient jamais été présentes sur la liste, a fait pression sur Collin pour qu’il fasse appel à un développeur supplémentaire pour maintenir le projet.

En janvier 2023, JiaT75 a effectué son premier engagement dans xz Utils. Dans les mois qui suivirent, JiaT75, qui utilisait le nom de Jia Tan, s’impliqua de plus en plus dans les affaires de xz Utils. Par exemple, Tan a remplacé les coordonnées de Collins par les leurs sur oss-fuzz, un projet qui analyse les logiciels open source à la recherche de vulnérabilités pouvant être exploitées. Tan a également demandé qu’oss-fuzz désactive la fonction ifunc pendant les tests, une modification qui l’empêchait de détecter les modifications malveillantes que Tan apporterait bientôt à xz Utils.

En février de cette année, Tan a publié des commits pour les versions 5.6.0 et 5.6.1 de xz Utils. Les mises à jour ont implémenté la porte dérobée. Dans les semaines suivantes, Tan et d’autres ont fait appel aux développeurs d’Ubuntu, Red Hat et Debian pour qu’ils fusionnent les mises à jour dans leurs systèmes d’exploitation. Finalement, l’une des deux mises à jour a été intégrée aux versions suivantes, selon la société de sécurité Tenable :

Il y en a plus sur Tan et la chronologie ici.

Source-147