# CVE-2024-3094

CVE-2024-3094 ist die Bezeichnung eines Eintrags in das System Common Vulnerabilities and Exposures (CVE) des US-amerikanischen National Cybersecurity FFRDC (NCF), mit dem eine Backdoor-Verwundbarkeit der Linux-Utility xz beschrieben wird. Hiermit können Angreifer von außen die Kontrolle über befallene Linux-Computersysteme erlangen.

## Geschichte

Am 29. März 2024 teilte der Softwareentwickler Andres Freund mit, er habe eine Backdoor im Linux-Utility xz gefunden; diese befände sich in der liblzma Bibliothek, betroffen seien die Versionen 5.6.0 und 5.6.1. der Komponente, welche im Februar 2024 veröffentlicht wurden.
Die Backdoor erlaubt es einem Angreifer, auf dem entsprechenden System Root-Rechte zu erlangen, wenn er über einen spezifischen Ed448 Schlüssel verfügt. Dies erlaubt eine Remote Code Execution. Der Issue hat das höchstmögliche Score im CVSS System erhalten, 10.0.

### Hilfsprogramm xz

Das Hilfsprogramm xz ist Teil der meisten Linuxdistributionen. Die Backdoor betrifft vermutlich nur Systeme, welche zur Paketverwaltung .deb oder .rpm und die Architektur x86-64 nutzen. Zum Zeitpunkt der Entdeckung waren die betroffenen Softwareversionen von xz (5.6.0 und 5.6.1) noch nicht weit verbreitet.

## Hintergrund

Andres Freund, Angestellter von Microsoft und ein Entwickler von PostgreSQL, meldete die Backdoor, welche er durch Performancemessungen in Debian Sid gefunden hatte. Freund hatte festgestellt, dass SSH-Verbindungen zu einer hohen Systemlast führten, und bei Valgrind, einem Tool zum Memory-Debugging, Fehler verursachten. Er meldete seine Funde der Openwall Security Mailingliste. Durch diese Meldung wurden verschiedene Hersteller auf das Problem aufmerksam. Es gibt Hinweise, dass die Angreifer versuchten, die Funktion des Codes zu verschleiern. Der Wirkmechanismus der Backdoor umfasst mehrere Schritte.
Sobald die kompromittierte Version in ein System eingebunden wird, verändert sie das Verhalten des SSH-Daemons von OpenSSH: Systemd wird missbraucht, um dem Angreifer Root-Rechte auf dem System zu geben. Gemäß Red Hat kann ein Hacker aus der Ferne dadurch die SSH-Authentifizierung umgehen und von Ferne unbefugten Zugriff zum System erhalten.
Eine weitere Untersuchung fand heraus, dass die Kampagne, die Backdoor in das XZ Utils Paket einzubringen, etwa drei Jahre dauerte. Ein Benutzer namens Jia Tan mit dem Pseudonym JiaT75 erlangte eine Position des Vertrauens innerhalb des Projektes. Nach einiger Zeit und etwas Sockpuppetry war es ihm möglich, die Versionen 5.6.0, welche die Backdoor einführte, und die Nachfolgeversion 5.6.1 als Ko-Maintainer zu signieren. Version 5.6.1 fügte weiteren Code ein. Weitere wahrscheinlich beteiligte Charaktere sind unter den Pseudonymen Jigar Kumar, krygorin4545, and misoeater91 bekannt. Es wird angenommen, dass es sich bei allen Namen, sowie beim Namen des angeblichen Autors, Hans Jensen, um Pseudonyme handelt. Die entsprechenden Personen existieren nicht außerhalb des Projekts, oder sie haben nichts mit dem Projekt zu tun.
Auffällig waren bei der Backdoor die komplexe Ausführung und die Tatsache, dass die Hacker über weitgehende Kenntnisse in Betriebssicherheit (OPSEC) verfügten; dies war nötig, um die Vertrauensposition innerhalb des Projekts zu erreichen.
Der Name der verdächtigten Person, als auch die verwendete Zeitzone sollen laut Experten den Eindruck erwecken, es handle sich um eine Person aus China. Tatsächlich deuten Analysen allerdings darauf hin, dass die Person in der Zeitzone UTC+2 oder UTC+3 arbeitete, welche in Osteuropa bzw. Westrussland liegen. So war der verdächtigte Nutzer zum Beispiel nie an Weihnachten oder Neujahr aktiv, arbeitete aber an chinesischen Feiertagen. Dave Aitel, ein amerikanischer Sicherheitsforscher, merkte an, dass das Verhaltensmuster zu APT29/Cozy Bear passe, einer Hacker-Gruppe, welche im Auftrag der russischen Regierung agiert und enge Geheimdienstverstrickungen hat. Andere Personen glauben, es könne sich um einen beliebigen staatlichen oder um einen privatwirtschaftlichen Akteur mit großen Ressourcen handeln.

## Wirkmechanismus

Der Schadcode ist in den Versionen 5.6.0 und 5.6.1 der XZ Utils enthalten. Der Exploit wird nur aktiv, wenn er von einem spezifischen Drittquellen-Patch des SSH-Servers aktiviert wird. Unter den richtigen Voraussetzungen kann dies einem böswilligen Akteur erlauben, die Authentifizierung zu umgehen und unerlaubterweise Fernzugriff auf das System zu erhalten. Der Mechanismus besteht aus zwei komprimierten Testdateien, welche binären Schadcode enthalten. Diese sind im git-Repository verfügbar, aber sie bleiben inaktiv, bis sie entpackt und ins Programm injiziert werden. Der Code benutzt den IFUNC Mechanismus von glibc um die bestehende OpenSSH-Funktion RSA_public_decrypt durch eine Version mit Schadcode zu ersetzen. OpenSSH setzt im Normalfall kein liblzma ein, aber ein verbreiteter Patch führt zum Einsatz von libsystemd, welches lzma lädt.
Eine modifizierte Version der Datei build-to-host.m4 war im Release auf github ebenfalls enthalten. Dieses Skript extrahiert die Testdateien und führt die Code-Injection durch. Dieses Skript war nicht im Repository, es fand sich lediglich in tar-Dateien, welche vom Maintainer separat von git released wurden. Das Skript scheint die Injection nur auszuführen, wenn das Programm auf einer x86-64 Architektur gebaut wird, glibc und GCC zum Bauen verwendet wird, und der Buildprozess von dpkg oder rpm gesteuert wird.

## Reaktion
### Patching

Die US Behörde Cybersecurity and Infrastructure Security Agency, welche für Cybersecurity und -bedrohungen zuständig ist, hat ein Advisory veröffentlicht: Dort wird empfohlen, betroffene Systeme auf eine frühere Version zurückzusetzen, welche von der Verwundbarkeit nicht betroffen ist. Linuxdistributoren wie Red Hat, SUSE und Debian sind dieser Aufforderung gefolgt und haben das Update des Pakets auf ältere Versionen veranlasst. Github hat die Spiegelung des Repositories für xz deaktiviert.

### Weitergehende Diskussion

Alex Stamos, ein Informatiker, merkte an, dass dies die „weitestgehende und effektivste Backdoor“ gewesen sein könnte, welche in Software installiert wurde. Wäre sie nicht entdeckt worden, hätte sie den Programmierern einen Masterschlüssel zu allen Computern auf der Welt verschafft, welche SSH einsetzen. Das Ereignis löste auch eine Diskussion darüber aus, ob kritische Teile einer Informatikinfrastruktur von unbezahlten Freiwilligen abhängen sollten.