- Bei Debian-sid-Installationen wurden einige ungewöhnliche Symptome im Zusammenhang mit liblzma (Teil des xz-Pakets) beobachtet, darunter erhöhte CPU-Auslastung bei SSH-Logins und valgrind-Fehler.
- Als Ursache des Problems wurde festgestellt, dass das Upstream-Repository und die Tarballs von xz mit einer Backdoor infiziert waren. Ein Teil der Backdoor ist nur in den veröffentlichten Tarballs vorhanden.
- Das im Tarball enthaltene Skript wird am Ende von
configure ausgeführt und modifiziert unter bestimmten Bedingungen $builddir/src/liblzma/Makefile, um bösartigen Code einzuschleusen.
Backdoor im Repository
- Der Hauptteil der Backdoor liegt im Verzeichnis
tests/files des Repositorys in verschlüsselter Form vor.
- Diese Dateien wurden in den Tests der Version 5.6.0 nicht verwendet; in Version 5.6.1 gab es offenbar einen Versuch, durch die Backdoor verursachte valgrind-Fehler und Abstürze zu beheben.
Betroffene Systeme
- Das Backdoor-Skript wird erstmals nach
configure aufgerufen und verändert den Build-Prozess nur unter bestimmten Bedingungen (z. B. x86-64-Linux-Systeme, Verwendung von gcc und GNU-Linker, Build von Debian- oder RPM-Paketen).
Auswirkungen auf den openssh-Server
- Wenn eine mit der Backdoor versehene liblzma verwendet wird, werden Logins über SSH langsamer.
- openssh verwendet liblzma nicht direkt, aber einige Distributionen einschließlich Debian patchen openssh zur Unterstützung von systemd-Benachrichtigungen, und libsystemd hängt von lzma ab.
Analyse des eingeschleusten Codes
- Die Analyse erfolgt aus der Perspektive eines Beobachters, der weder Sicherheitsforscher noch Reverse-Engineering-Experte ist.
- Die Backdoor kapert die Ausführung über einen ifunc resolver und löst während der Initialisierung von sshd Symbole auf, um das Symbol
RSA_public_decrypt auf ihren eigenen Code umzubiegen.
Auswirkungen auf sshd
RSA_public_decrypt@....plt wird so verändert, dass es auf den Backdoor-Code zeigt, wodurch der Backdoor-Code bei Public-Key-Logins aufgerufen wird.
- Dadurch wird vermutlich eine Umgehung der Authentifizierung oder Remote Code Execution ermöglicht.
Bug-Report
- Es wurde kein Bug-Report eingereicht, da eine Beteiligung des Upstream-Repositorys vermutet wurde.
- Red Hat hat diesem Problem die Kennung CVE-2024-3094 zugewiesen.
Erkennung verwundbarer Installationen
- Es wird ein Skript bereitgestellt, mit dem erkannt werden kann, ob die
ssh-Binärdatei eines Systems verwundbar ist.
8 Kommentare
Alles, was ich über die xz-Backdoor weiß
Dies ist ein Beitrag von Andres Freund, der diese Backdoor entdeckt hat.
Es ist erstaunlich, wie planvoll dabei vorgegangen wurde;; der Ablauf wirkt wie ein Drama.
Selbst eine grausame Hinrichtung wäre noch zu milde.
Warum?
Weil hier absichtlich eine Backdoor in Open Source eingebaut wurde ... und in diesem Prozess wurden auch noch heimlich Versuche unternommen, die öffentliche Meinung zu beeinflussen.
Früher gab es auch schon Fälle, in denen böswillig Schwachstellen in den Linux-Kernel eingebracht wurden, das ist wirklich bitter.
Ah, ich glaube, ich verstehe jetzt die Nuance. Danke.
Hacker-News-Kommentare
Verwandte Links:
Zusammenfassung:
xz-javaeine DateiSECURITY.mdhinzu. Darin steht die Anweisung, Sicherheitslücken nicht öffentlich zu machen, sondern vertraulich zu melden. Aus einer anderen Perspektive lässt sich das so deuten, dass der Autor Zeit gewinnen wollte, um seinen Exploit anzupassen und Ziele auszunutzen.liblzmanicht direkt, aber Debian und mehrere Distributionen patchen OpenSSH für die Unterstützung von systemd-Benachrichtigungen. Dadurch hängtlibsystemdvonliblzmaab, was zusätzlichen Abhängigkeiten für sicherheitskritische Daemons wie OpenSSH schafft und das Risiko von Supply-Chain-Angriffen erhöht.liblzma5(5.6.0oder5.6.1) verwendet wird. Diese wurde erst im letzten Monat oder so hinzugefügt.sshdunter systemd läuft. Das in manchen Distributionen gepatchte OpenSSH verwendet für Logginglibsystemd, wodurch das verwundbareliblzma5hineingezogen wird.5.6.1+really5.4.5-1, die in Wirklichkeit die ältere Version 5.4 ist, nur neu verpackt und als neuere Version ausgegeben..tar.xz-Software-Tarballs, die als Grundlage bestimmter Build-Prozesse dienen. Ziel wären dabei keine Source-Code-Tarballs, sondern Tarballs, die vorkompilierte Binärdateien verteilen.