En fin de semaine dernière, une porte dérobée a été découverte dans un outil très utilisé dans les distributions GNU/Linux, XZ Utils. Et sa mise en place est particulièrement troublante.
XZ Utils est un outil open source un peu particulier. Il permet de compresser des données avec un algorithme efficace (LZMA, pour Lempel-Ziv-Markov chain algorithm) et reposait jusqu'il y a quelques années sur un seul développeur, Lasse Collin. C'est un cas assez courant, mis en avant dans cette image de xkcd : beaucoup de rouages parfois cruciaux de nos systèmes d'exploitation et applications dépendent d'une seule personne ou d'une équipe très réduite.
Il y a quelques jours, un développeur de chez Microsoft (Andres Freund) s'est rendu compte d'un problème de consommation CPU, et a découvert que la dernière version des outils xz (la 5.6) contenait une porte dérobée. Cette dernière n'est pas anodine : quand un programme lié à la connexion en SSH s'exécute (en simplifiant, une méthode de connexion sécurisée sur une machine distante), la porte dérobée permettait une prise de contrôle de la machine avec une clé spécifique. Cette version n'a heureusement pas été intégrée dans la majorité des distributions GNU/Linux, même si quelques-unes (Fedora Rawhide, fedora 41, Debian testing et unstable, openSUSE Tumbleweed et MicroOS et Kali Linux) ont pu être touchées.
Une mise en place très sophistiquée
La partie troublante vient du fait que la porte dérobée est très sophistiquée, extrêmement bien cachée et (surtout) que sa mise en place a pris plusieurs années. La personne qui a intégré la faille dans le code, JiaT75 (Jia Tan) a commencé à contribuer à divers projets open source vers 2021. Il a ensuite commencé à travailler sur XZ Utils début 2023 et a contribué de façon régulière. Et en février 2024, il a donc envoyé une version qui intégrait une porte dérobée. Il a par ailleurs insisté pour tenter d'inclure sa version à jour (compromise) dans certaines distributions, comme Fedora ou Ubuntu. Vous trouverez un bon résumé (régulièrement mis à jour) à cette adresse.
L'ensemble est très bien caché : la version disponible publiquement sur GitHub et celle utilisée dans les distributions étaient par exemple différentes, ce qui est assez courant pour des raisons pratiques. La porte dérobée n'était intégrée que dans la version pour les distributions et était cachée dans des lignes absconses (ce qu'on appelle de l'obfuscation). Elle ciblait les machines basées sur une architecture x86-64 sous GNU/Linux, donc les Mac ne sont pas touchés. Qui plus est, elle ne se déclenche que dans des cas précis et se cache notamment si un programme de débogage est présent sur la machine ciblée.
Dans les faits, la sophistication de l'attaque laisse penser que cette porte dérobée n'est pas anodine et les différents projets auxquels Jia Tan — qui est plus que probablement un pseudonyme — a participé sont scrutés. Et certains considèrent même que les ressources nécessaires et le temps passé pour intégrer la porte dérobée pointent vers une attaque étatique.