Vendredi 29 mars 2024, Andres Freund, ingénieur chez Microsoft, a identifié la présence d’une porte dérobée (backdoor) sur le logiciel XZ Utils. Cette porte dérobée a été publiée par la National Vulnerability Database le même jour, sous la référence CVE-2024-3094. Le code malveillant a été détecté par hasard, lors d’une série de mesures lancées sur un serveur qui disposait d’une version infectée : Andres a alors observé un pic de charge processeur sur la bibliothèque liblzma, utilisée par XZ Utils.
Qu’est-ce que XZ Utils ?
XZ Utils, anciennement nommé LZMA Utils, est un outil de compression dont les performances sont en général supérieures à GZIP ou BZip2. XZ est très utilisé par les distributions Linux.
XZ Utils est constitué de xz, outil de compression et décompression, et de liblzma, bibliothèque pouvant être chargée par d’autres outils pour travailler avec le format lzma.
Qu’est-ce que la vulnérabilité CVE-2024-3094 ?
La CVE référencée CVE-2024-3094 est une vulnérabilité critique, qui permet à un attaquant d’exécuter des commandes à distance sur une machine affectée.
Cette vulnérabilité est une porte dérobée, c’est-à-dire qu’il s’agit d’un morceau de code malveillant introduit dans le code de XZ Utils, par des développeurs souhaitant réaliser une attaque informatique. Ce type de vulnérabilité entre dans la famille des attaques sur la chaîne de développement (ou supply chain), dans le mesure où la CVE-2024-3094 a été insérée dans le code du projet XZ Utils via les processus de développement en Open Source.
Autrement dit, la CVE-2024-3094 est liée à une insertion volontaire de code malveillant, de la part d’attaquants, dans le projet XZ Utils.
Fort heureusement, la vulnérabilité a été détectée rapidement, avant que le code malveillant n’entre en production dans la plupart des distributions Linux.
Cette CVE est critique, avec un score de 10/10 d’après Red Hat.
Comment fonctionne la CVE-2024-3094 ?
La CVE-2024-3094 repose sur le fait que Debian, SUSE, Fedora, et Kali Linux, font appel aux notifications systemd lors la gestion des connexions SSH entrantes, et que systemd utilise liblzma.
Toute tentative de connexion sur le service SSH d’un serveur vulnérable est alors légèrement plus lente (environ 500ms), en raison de l’exécution du code de la porte dérobée.
D’après Filippo Valsorda, connu pour ses travaux sur la faille Heartbleed :
- Le code malveillant ne s’active réellement que si l’attaquant se connecte à SSH avec un certificat OpenSSH spécialement construit pour l’exploit de la CVE-2024-3094 ;
- Le code malveillant se désactive lorsqu’une authentification avec certificat OpenSSH se fait et que le processus n’aboutit par à une attaque.
La capacité du code malveillant à se désactiver en cas d’attaque infructueuse rend difficile la détection de cette vulnérabilité par des scans réseaux, ainsi que son utilisation par des attaquants quelconques.
Comment exploiter la CVE-2024-3094 de XZ Utils ?
L’exploitation de la CVE-2024-3094 nécessite de préparer un certificat OpenSSH malveillant, avec des propriétés cryptographiques spécifiques.
En l’état des informations dont nous disposons, il semble que seule l’équipe derrière l’insertion de la porte dérobée dans le code de XZ Utils ne puisse effectivement exploiter cette vulnérabilité.
Comment l’attaquant a-t-il inséré le code de la porte dérobée dans XZ Utils ?
L’attaque s’est déroulée sur plusieurs années, par le compte GitHub JiaT75 (Jia Tan). Thomas Roccia, ingénieur chez Microsoft, a produit un excellent schéma sur le sujet.
CVE-2024-3094 : quels sont les systèmes affectés par cette vulnérabilité ?
Le code malveillant à l’origine de la CVE-2024-3094 a été détecté avant d’entrer en production sur la plupart des grandes distributions Linux du marché.
En conséquence, les branches de développement comme Debian SID ou Alpine Linux Edge sont les principales versions impactées.
Les systèmes vulnérables sont :
- Debian SID / Debian Unstable / Debian 13 (version de développement) :
- xz-utils versions inférieures à 5.6.1+really5.4.5-1 (source) ;
- Alpine Linux Edge :
- xz-utils versions inférieures à 5.6.1-r2 (source) ;
- ArchLinux :
- xz versions 5.6.0-1 et 5.6.1-1
- La vulnérabilité a été corrigée dans la version 5.6.1-2 (source) ;
- Fedora 40 Linux beta / Fedora Rawhide :
- xz-libs versions 5.6.0-1 et 5.6.0-2
- Pas de correctif disponible pour Fedora 40 Linux beta, Red Hat recommande de repasser à xz-libs 5.4.X
- Fedora 40 Linux n’est pas affectée (source)
Les distributions non mentionnées dans cette liste ne sont, d’après les informations publiquement disponibles, pas impactées par cette vulnérabilité.
J’utilise un système affecté par CVE-2024-3094, que dois-je faire ?
Cyberwatch recommande d’appliquer dans les plus brefs délais les correctifs de sécurité mis à disposition par votre distribution.
De plus, Cyberwatch recommande de vérifier les journaux SSHD pour contrôler toutes les connexions entrantes, voire les journaux systèmes pour contrôler le chargement de la bibliothèque liblzma lors d’une connexion SSH entrante.
Pour les systèmes affectés, le mieux est de partir du principe que le système a été compromis, et de le réinstaller totalement le cas échéant.
Notons également que les distributions de développement comme Fedora Rawhide ou Debian SID ne sont pas recommandées pour les environnements habituels de production.
Comment détecter la CVE-2024-3094 ?
Vérifiez si vous utilisez l’une des versions de XZ Utils mentionnées plus haut dans cet article.
Les utilisateurs de Cyberwatch Vulnerability Manager peuvent d’ores et déjà détecter cette vulnérabilité depuis le 29 mars 2024. N’hésitez pas à contacter notre équipe pour toute demande d’information.
Suivi des modifications
31/03/2024 à 14h39 GMT+2 : version initiale