Porte dérobée dans XZ Utils (CVE-2024-3094)
Une campagne d'ingénierie sociale pluriannuelle menée par un personnage de mainteneur nommé « Jia Tan » a implanté une porte dérobée SSH dissimulée dans la bibliothèque de compression XZ Utils (liblzma) versions 5.6.0 et 5.6.1, notée CVSS 10,0 — découverte par hasard quelques jours avant qu'elle ne puisse atteindre les versions stables de Linux dans le monde entier.
- Victime
- XZ Utils / écosystème open source Linux
Le 29 mars 2024, l'ingénieur de Microsoft Andres Freund a annoncé sur la liste de diffusion oss-security qu'il avait découvert une porte dérobée délibérément implantée dans XZ Utils, une bibliothèque de compression de données quasi omniprésente dont le composant liblzma est lié par d'innombrables programmes Linux — y compris, indirectement, le sshd d'OpenSSH sur plusieurs distributions. Référencée CVE-2024-3094 avec le score CVSS maximal de 10,0, la porte dérobée était l'aboutissement d'une campagne d'ingénierie sociale pluriannuelle visant à prendre le contrôle d'un projet open source critique. Elle a été découverte par hasard, quelques jours avant que les versions compromises n'atteignent des versions stables largement déployées.
Comment elle a été découverte
Freund, développeur de PostgreSQL, a remarqué que les connexions SSH prenaient environ une demi-seconde de plus que prévu et que les processus sshd consommaient une quantité inhabituelle de CPU. Le profilage a relié ce surcoût à liblzma. En enquêtant davantage, il a mis au jour du code obfusqué qui s'accrochait au chemin de résolution de symboles utilisé par sshd, permettant à un attaquant détenant une clé privée Ed448 spécifique d'obtenir une exécution de code à distance en envoyant une charge d'authentification forgée — une porte dérobée distante quasi invisible, verrouillée par clé.
Le jeu de longue haleine
La porte dérobée n'était pas un commit isolé. À partir de 2021 environ, un personnage de mainteneur nommé « Jia Tan » (JiaT75) a bâti sa crédibilité dans la communauté XZ Utils par des contributions légitimes. En 2022–2023, un concert de comptes fantoches apparents a poussé le mainteneur d'origine surchargé à céder ses responsabilités, et Jia Tan s'est finalement vu accorder l'autorité de commit et de publication.
La charge malveillante a ensuite été introduite par étapes. Le code dangereux n'était pas présent dans le dépôt Git lisible par l'humain ; il était au contraire dissimulé dans des fichiers « de test » binaires déguisés et activé par un build-to-host.m4 modifié qui n'existait que dans les archives de publication. Lors de la compilation sur les systèmes Linux x86-64 utilisant glibc et GCC, la logique de build extrayait et injectait l'objet malveillant dans liblzma — garantissant qu'une revue ordinaire du code source de l'arbre Git ne le révélerait pas.
Impact et confinement
- Les versions affectées étaient XZ Utils 5.6.0 (24 février 2024) et 5.6.1 (9 mars 2024).
- La porte dérobée a atteint les branches de développement et de test de Fedora Rawhide/40-bêta, Debian unstable/testing, Kali Linux et Arch Linux — mais la plupart des versions stables de production n'avaient pas encore livré les versions compromises.
- La CISA a exhorté à revenir à une version saine connue telle que la 5.4.6 ; Red Hat, SUSE et Debian ont rétabli les paquets le jour de la divulgation ; Canonical a reporté la bêta d'Ubuntu 24.04 LTS par précaution.
- Une 5.6.2 saine a été publiée en mai 2024. Aucune exploitation confirmée en conditions réelles contre des systèmes de production n'a été établie, la découverte ayant devancé un déploiement à grande échelle.
Pourquoi c'est important
XZ Utils est le cas emblématique de la subversion de la chaîne d'approvisionnement open source par la confiance, et non par l'exploitation technique. L'attaquant n'a pas compromis un serveur ; il s'est frayé un chemin par ingénierie sociale jusqu'au statut de mainteneur d'une bibliothèque fondamentale et a militarisé le pipeline de build afin que la porte dérobée n'apparaisse jamais dans le code source révisé. Sa découverte a tenu à un seul ingénieur remarquant une demi-seconde de latence — un rappel inquiétant de l'étroitesse de la marge. L'incident a catalysé des changements durables : un examen attentif de l'épuisement des mainteneurs et des projets à mainteneur unique, des initiatives de financement pour les infrastructures open source critiques, une adoption plus large des builds reproductibles et de la comparaison archive-contre-dépôt, et une attention renouvelée à l'hypothèse selon laquelle « de nombreux yeux » rendraient automatiquement sûr le code open source.
Chronologie
Un personnage nommé « Jia Tan » (JiaT75) commence à contribuer au projet XZ Utils, gagnant progressivement la confiance du mainteneur d'origine au fil d'une campagne pluriannuelle.
Sous la pression de comptes fantoches poussant le mainteneur surchargé à ajouter un co-mainteneur, Jia Tan se voit accorder l'autorité de commit et de publication sur XZ Utils.
XZ Utils 5.6.0 est publié, contenant du code malveillant obfusqué dissimulé dans des fichiers de test binaires déguisés et un build-to-host.m4 modifié dans l'archive de publication.
XZ Utils 5.6.1 est publié, affinant la porte dérobée ; la logique de build malveillante s'injecte dans liblzma lors de la compilation sur les systèmes Linux x86-64 glibc/GCC.
L'ingénieur de Microsoft Andres Freund, enquêtant sur une latence de connexion SSH d'environ 500 ms et une forte consommation CPU dans liblzma, identifie la porte dérobée et la signale à la liste oss-security.
La CISA émet une alerte ; Red Hat, SUSE et Debian rétablissent les paquets affectés vers des versions sûres ; CVE-2024-3094 reçoit un score CVSS de 10,0.
Canonical reporte d'une semaine la bêta d'Ubuntu 24.04 LTS par précaution, le temps que l'écosystème audite la chaîne d'outils affectée.
Une version XZ Utils 5.6.2 saine est publiée ; l'analyse de l'opération pluriannuelle et du personnage Jia Tan se poursuit dans la communauté de la sécurité.
Sources
- cisa.govhttps://www.cisa.gov/news-events/alerts/2024/03/29/reported-supply-chain-compromise-affecting-xz-utils-data-compression-library-cve-2024-3094
- nvd.nist.govhttps://nvd.nist.gov/vuln/detail/CVE-2024-3094
- en.wikipedia.orghttps://en.wikipedia.org/wiki/XZ_Utils_backdoor
- openwall.comhttps://www.openwall.com/lists/oss-security/2024/03/29/4