c't 17/2024
S. 148
Wissen
xz-Hintertür
Bild: Thorsten Hübner

Zündung

Eine Analyse der xz-Hintertür, Teil 2

Im zweiten Teil unserer Serie zur Hintertür in den xz Utils geht es um das initiale Shellskript. Dessen Analyse offenbart den nächsten Schritt des so aufwendig vorgehenden Angreifers und entlarvt eine weitere verseuchte Datei.

Von Sylvester Tremmel

Der erste Teil dieser Serie hat erklärt, warum ein Angreifer, der es letztlich auf OpenSSH abgesehen hat, die Komprimierungswerkzeuge xz Utils ins Visier nimmt [1]. Im Code-Repository der xz Utils hatte der Angreifer die Datei bad-3-corrupt_lzma2.xz platziert. Dem Namen nach eine kaputte xz-komprimierte Datei für Testzwecke, die in Wahrheit aber Shellcode des Angreifers enthielt. Geschickt verschleierte Anweisungen in den Tarballs des Projekts manipulierten das Build-System und extrahierten diesen Code, wenn Maintainer ein xz-Paket für ihre Linux-Distribution bauten (oder wenn Nutzer die xz Utils manuell installierten). Während des Paketbaus wurde der Code dann von der Standard-Shell des verwendeten Build-Systems ausgeführt. Im Folgenden soll es darum gehen, was dieser Code genau tut.

Faule Ausreden

Doch zunächst gilt es noch auf ein wichtiges Detail hinzuweisen: Es gibt zwei Versionen der Datei bad-3-corrupt_lzma2.xz. Eine ursprüngliche, die der Angreifer am 23. Februar 2024 mit dieser Commit-Nachricht ins Repository stellte: „Tests: Add a few test files.“ Am 9. März aktualisierte er die Datei dann, um einige Verbesserungen – aus Angreifersicht – einzuführen und Probleme zu beheben. Dieser Artikel zeigt die zweite Version der Datei, weist aber auf Veränderungen gegenüber der ursprünglichen Version hin.

Kommentare lesen (3 Beiträge)