Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2024-3094 — CVE-2024-3094 - Hintertür in XZ Utils | Kitploit
Tools/GitHubGitHub/h3raklez/cve-2024-3094
SchwachstellenanalyseExploitationMalware-AnalyseKryptographiePenetrationstestsLieferkettensicherheitLernen & BildungLabs & Praxis
GitHubh3raklez/cve-2024-3094

CVE-2024-3094

CVE-2024-3094 - Hintertür in XZ Utils

Repository anzeigen
vor 4 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2024-3094 — XZ-Utils-Hintertür

Nur für Bildungszwecke und autorisierte Sicherheitsforschung.

Schwachstellenbeschreibung

CVE-2024-3094 ist eine Hintertür, die in den Versionen 5.6.0 und 5.6.1 von XZ Utils (liblzma) eingeführt und am 29. März 2024 vom Sicherheitsforscher Andres Freund entdeckt wurde. Ihr wurde ein CVSS-Wert von 10.0 (Kritisch) zugewiesen.

Dies ist ein Lieferkettenangriff, der über mehr als zwei Jahre von einem Bedrohungsakteur namens „Jia Tan“ (JiaT75) durchgeführt wurde, der sich innerhalb des Projekts Vertrauen aufbaute, bis er den Status eines Co-Maintainers erlangte, und die Hintertür direkt in die Distributions-Tarballs einführte.

Technischer Mechanismus

Die Hintertür funktioniert wie folgt:

  1. Die bösartige liblzma.so hookt die Funktion RSA_public_decrypt() in OpenSSH über glibcs IFUNC-Mechanismus und fängt den SSH-Authentifizierungsprozess ab.
  2. Wenn sich ein Client verbindet, wertet die Hintertür ein bestimmtes Feld im vorgelegten SSH-Zertifikat aus.
  3. Wenn dieses Feld einen Payload enthält, der mit ChaCha20 verschlüsselt und mit einem bestimmten Ed448-privaten Schlüssel signiert ist, führt die Hintertür den eingebetteten Befehl über system() mit sshd-Privilegien (root) aus.
  4. Ist die Signatur ungültig, setzt sshd seinen normalen Ablauf ohne Auffälligkeiten fort.

Anforderungen für die Ausnutzung

  • System mit glibc (IFUNC-Unterstützung)
  • XZ Utils 5.6.0 oder 5.6.1 installiert
  • Über systemd gestartetes sshd (kritische Anforderung — das IFUNC-Hooking wird nicht aktiviert, wenn sshd manuell über die Befehlszeile gestartet wird)
  • x86-64-System

Ursprünglich betroffene Distributionen

  • Fedora Linux 40 beta / Rawhide
  • Debian unstable, testing, experimental
  • Kali Linux
  • Arch Linux (Images zwischen 2024-02-24 und 2024-03-28)

Laborumgebung

Dieses Labor repliziert den Mechanismus der Hintertür mit benutzerdefinierten Ed448-Schlüsseln anstelle der Schlüssel des ursprünglichen Akteurs (die nie veröffentlicht wurden).

Warum wir chroot verwenden

In real betroffenen Systemen gab es kein chroot. Die Hintertür operierte direkt auf dem sshd des Systems, das die bösartige liblzma.so wie jede andere Shared Library lud — völlig transparent für das System und seine Administratoren.

In diesem Labor verwenden wir chroot ausschließlich aus einem praktischen Grund: Wir müssen ein sshd mit einer bestimmten Version von liblzma.so ausführen, ohne die Bibliotheken des Hostsystems zu ersetzen. Dies ist eine Designentscheidung für die Forschungsumgebung und keine Widerspiegelung der Funktionsweise der Hintertür in der Produktion.

Komponenten

KomponenteBeschreibung
env_fs/Minimales Ubuntu-22.04-Dateisystem, das als chroot verwendet wird

Ziel-Stack

  • Ubuntu 22.04.1 LTS AMD64
  • glibc 2.35
  • OpenSSH 8.9p1
  • systemd 249
  • liblzma 5.6.1 (gepatcht)

Für dieses Ziel vorgenommene Änderungen

Die ursprüngliche Hintertür erfordert sehr spezifische Bedingungen, die in einer Laborumgebung nicht automatisch vorliegen. Folgende Änderungen waren notwendig:

1. liblzma.so-Ersatz

Die im ursprünglichen Repository von MagpieRYL enthaltene liblzma.so.5 verwendet einen unbekannten Ed448-Schlüssel, der nicht zum enthaltenen xzbot-Binary passt. Die originale und authentische liblzma.so.5.6.1 wurde aus dem Debian-Snapshot heruntergeladen (sha256 verifiziert) und mit patch.py von amlweems/xzbot mit seed=0 gepatcht:

root@kitploit:~
original sha256:  605861f833fc181c7cdcabd5577ddb8989bea332648a8f498b4eef89b8f85ad4
patched sha256:   ea7206ab4b0c3479ff1b478c8803adc9e7aeba243254a9f601b626ef8aa80e3d
patched offset:   0x24470

Der öffentliche Ed448-Schlüssel des ursprünglichen Akteurs wurde ersetzt durch:

root@kitploit:~
5b 3a fe 03 87 8a 49 b2 82 32 d4 f1 a4 42 ae bd
e1 09 f8 07 ac ef 7d fd 9a 7f 65 b9 62 fe 52 d6
54 73 12 ca ce cf f0 43 37 50 8f 9d 25 29 a8 f1
66 91 69 b2 1c 32 c4 80 00

2. Type=simple im systemd-Dienst

Der ursprüngliche Dienst verwendet Type=notify, was erfordert, dass sshd eine Startbenachrichtigung an systemd sendet. Das sshd innerhalb der chroot sendet diese nicht, was zu Timeouts führt. Geändert auf Type=simple.

3. Ephemere chroot-Verzeichnisse

sshd benötigt /run/sshd für die Privilegientrennung. Dieses Verzeichnis existiert in der chroot nicht und wird bei jedem Neustart gelöscht, da run/ ein tmpfs ist. Gelöst mit einem ExecStartPre, das das Verzeichnis vor jedem Dienststart automatisch neu erzeugt.


Verwendung

Exploit von derselben Maschine

root@kitploit:~
./xzbot -addr 127.0.0.1:2024 -cmd 'echo pwned > /tmp/result'
cat /home/user/CVE-2024-3094-backdoor-env-container/env_fs/tmp/result

Exploit von einer anderen Maschine

root@kitploit:~
./xzbot -addr <TARGET_IP>:2024 -cmd 'echo pwned > /tmp/result'

Speicherort der vom Exploit erzeugten Dateien

Der Befehl wird innerhalb der chroot ausgeführt, daher wird jede Datei, die unter /tmp/ im Kontext der Hintertür erstellt wird, gespeichert unter:

root@kitploit:~
/home/user/CVE-2024-3094-backdoor-env-container/env_fs/tmp/

Das heißt, wenn der Befehl echo pwned > /tmp/result lautet, befindet sich die Datei unter:

root@kitploit:~
/home/user/CVE-2024-3094-backdoor-env-container/env_fs/tmp/result

Um jede vom Exploit erzeugte Datei zu finden:

root@kitploit:~
find /home/user/CVE-2024-3094-backdoor-env-container/env_fs/tmp/ -type f

Hinweis zu handshake failed: EOF

Die Meldung ssh: handshake failed: EOF ist das erwartete und korrekte Verhalten. Die Hintertür führt den Befehl aus und schließt die Verbindung, ohne eine SSH-Sitzung aufzubauen. Sie weist nicht auf einen Fehler hin.


Wichtig

Dieses Labor verwendet ein benutzerdefiniertes kryptografisches Schlüsselpaar (seed=0). Das gepatchte liblzma.so akzeptiert nur Payloads, die mit dem entsprechenden privaten Schlüssel signiert wurden — dem Schlüssel, der vom in dieser Umgebung kompilierten xzbot verwendet wird. Jeder andere Client erhält EOF ohne Ausführung.


Referenzen

  • Ursprüngliche Openwall-Veröffentlichung
  • amlweems/xzbot
  • MagpieRYL/CVE-2024-3094-backdoor-env-container
  • Datadog-Security-Labs-Analyse
  • Wikipedia — XZ-Utils-Hintertür

Haftungsausschluss

Dieses Tool wird ausschließlich für Bildungszwecke und autorisierte Sicherheitstests bereitgestellt. Die unbefugte Verwendung gegen Systeme, die dir nicht gehören oder für die du keine ausdrückliche schriftliche Genehmigung zum Testen hast, ist illegal. Der Autor übernimmt keine Verantwortung für Missbrauch.

Tool herunterladen
env_fs/usr/lib/x86_64-linux-gnu/liblzma.so.5liblzma 5.6.1, gepatcht mit benutzerdefiniertem Ed448-Schlüssel
/etc/systemd/system/xzback.servicesystemd-Dienst, der verwundbares sshd auf Port 2024 startet
/xzbot/xzbotAus dem Quellcode kompilierter Exploit-Client