31 Punkte von GN⁺ 2024-04-03 | 7 Kommentare | Auf WhatsApp teilen
  • Über mehr als zwei Jahre hinweg war ein Angreifer unter dem Namen „Jia Tan“ als engagierter und effektiver Mitwirkender an der xz-Kompressionsbibliothek aktiv und erhielt schließlich Commit-Rechte und Administratorrechte.
  • Mit diesen Rechten installierte er in liblzma, einem Teil von xz, das auf Debian, Ubuntu, Fedora und anderen systemd-basierten Linux-Systemen auch eine Abhängigkeit von OpenSSH sshd ist, eine äußerst subtile und sorgfältig versteckte Backdoor.
  • Diese Backdoor überwachte beim Aufbau von SSH-Sitzungen, ob der Angreifer versteckte Befehle sendet, und gab ihm damit die Möglichkeit, auf dem Zielsystem beliebige Befehle auszuführen, ohne sich anzumelden. Es handelt sich um unauthenticated Remote Code Execution auf dem Zielsystem.
  • Der Angriff wurde am 29. März 2024 öffentlich bekannt und scheint der erste schwerwiegende Supply-Chain-Angriff auf weit verbreitete Open-Source-Software zu sein.
  • Er ist ein Wendepunkt für die Sicherheit der Open-Source-Supply-Chain.
  • Dieser Beitrag ist eine detaillierte Zeitleiste der Social-Engineering-Aspekte dieses Angriffs, der offenbar bis Ende 2021 zurückreicht.

Vorspiel

  • 2005–2008: Lasse Collin entwarf mit Hilfe anderer das Dateiformat .xz, das den LZMA-Kompressionsalgorithmus verwendet und Dateien auf etwa 70 % der Größe von gzip komprimiert.
  • Dieses Format wurde im Laufe der Zeit breit eingesetzt, um tar-Dateien, Linux-Kernel-Images und mehr zu komprimieren.

Das Auftauchen von Jia Tan und die Unterstützer

  • 2021-10-29: Jia Tan schickt den ersten harmlosen Patch an die Mailingliste xz-devel.
  • 2021-11-29: Jia Tan schickt den zweiten harmlosen Patch.
  • 2022-04-19: Jia Tan schickt einen weiteren harmlosen Patch.
  • 2022-04-22: „Jigar Kumar“ beschwert sich darüber, dass Jia Tans Patch noch nicht gemergt wurde.
  • 2022-05-19: „Dennis Ens“ erkundigt sich nach dem Wartungsstatus von XZ for Java.
  • 2022-05-19: Lasse Collin entschuldigt sich für die langsame Reaktion und antwortet, dass „Jia Tan mir bei XZ Utils außerhalb der Mailingliste hilft und zumindest bei XZ Utils eine größere Rolle übernehmen könnte“.
  • 2022-05-27: Jigar Kumar sendet eine drängende E-Mail im Patch-Thread.
  • 2022-06-07: Jigar Kumar sendet eine drängende E-Mail im Java-Thread.
  • 2022-06-08: Lasse Collin antwortet, dass er das Interesse nicht verloren habe, aber wegen psychischer Gesundheitsprobleme nur eingeschränkt arbeitsfähig sei.
  • 2022-06-10: Lasse Collin mergt den ersten von Jia Tan verfassten Commit.
  • 2022-06-14: Jugar Kumar sendet eine weitere drängende E-Mail.
  • 2022-06-21: Dennis Ens sendet eine drängende E-Mail mit dem Vorschlag, die Wartung an jemand anderen zu übergeben.
  • 2022-06-22: Jigar Kumar sendet eine drängende E-Mail im C-Patch-Thread.
  • 2022-06-29: Lasse Collin antwortet und deutet an, dass „Jia Tan im Projekt eine größere Rolle übernehmen könnte“.

Jia Tan wird Maintainer

  • Lasse scheint begonnen zu haben, enger mit Jia Tan zusammenzuarbeiten. Jigar Kumar und Dennis Ens sind sehr wahrscheinlich erfundene Personen.
  • 2022-09-27: Jia Tan liefert die Release-Zusammenfassung für 5.4.0.
  • 2022-11-30: Lasse Collin ändert die Bugreport-E-Mail von seiner privaten Adresse auf einen Alias, den er mit Jia Tan teilt.
  • 2022-12-30: Jia Tan mergt den ersten Commit direkt in das xz-Repository.
  • 2023-01-11: Lasse Collin taggt und baut sein letztes Release, v5.4.1.
  • 2023-03-18: Jia Tan taggt und baut sein erstes Release, v5.4.2.
  • 2023-03-20: Jia Tan aktualisiert die Google-oss-fuzz-Konfiguration, damit Bugs an ihn gesendet werden.
  • 2023-06-22: Hans Jansen sendet ein Patch-Paar zur Nutzung der Funktion „GNU indirect function“, das von Lasse Collin überarbeitet und von Jia Tan gemergt wird.
  • 2023-07-07: Jia Tan deaktiviert die ifunc-Unterstützung in oss-fuzz-Builds.
  • 2024-01-19: Jia Tan migriert die Website auf GitHub Pages und übernimmt damit die Kontrolle über die XZ-Utils-Webseite.

Beginn des Angriffs

  • 2024-02-23: Jia Tan mergt in Test-Eingabedateien versteckten binären Backdoor-Code.
  • 2024-02-24: Jia Tan taggt v5.6.0 und veröffentlicht das Distributionspaket xz-5.6.0.tar.gz, das die bösartige build-to-host.m4 enthält.
  • 2024-02-24: Unter Gentoo beginnen Abstürze in 5.6.0 aufzutreten.
  • 2024-02-26: Debian nimmt xz-utils 5.6.0-0.1 in unstable auf.
  • 2024-02-28: Debian nimmt xz-utils 5.6.0-0.2 in unstable auf.
  • 2024-02-29: Auf GitHub sendet @teknoraver einen Pull Request, damit liblzma nicht an libsystemd gelinkt wird.
  • 2024-02-28: Jia Tan fügt in ein C-Programm, das zur Prüfung der Landlock-Unterstützung verwendet wird, einen subtilen Tippfehler ein und beschädigt damit die Landlock-Erkennung im configure-Skript.
  • 2024-03-04: In RedHat-Distributionen beginnen Valgrind-Fehler in _get_cpuid von liblzma aufzutreten.
  • 2024-03-05: Der libsystemd-PR wird gemergt und liblzma entfernt.
  • 2024-03-05: Debian nimmt xz-utils 5.6.0-0.2 in testing auf.
  • 2024-03-05: Jia Tan committet einen Fix für den ifunc-Bug.
  • 2024-03-08: Jia Tan committet einen Fix für Valgrind.
  • 2024-03-09: Jia Tan committet ein Update der Backdoor-Datei.
  • 2024-03-09: Jia Tan taggt v5.6.1 und veröffentlicht das xz-5.6.1-Distributionspaket.
  • 2024-03-20: Lasse Collin sendet an LKML ein Patch-Set, das ihn selbst und Jia Tan als Maintainer des xz-Kompressionscodes im Kernel hinzufügt.
  • 2024-03-25: Hans Jansen meldet einen Debian-Bug, um xz-utils auf 5.6.1 zu aktualisieren.
  • 2024-03-28: Jia Tan meldet einen Ubuntu-Bug, um xz-utils aus Debian auf 5.6.1 zu aktualisieren.

Entdeckung des Angriffs

  • 2024-03-28: Andres Freund entdeckt den Bug und informiert Debian sowie distros@openwall vertraulich. RedHat weist CVE-2024-3094 zu.
  • 2024-03-28: Debian rollt 5.6.1 zurück und führt 5.6.1+really5.4.5-1 ein.
  • 2024-03-29: Andres Freund veröffentlicht auf der öffentlichen Liste oss-security@openwall eine Backdoor-Warnung und sagt, er habe sie „in den vergangenen Wochen“ entdeckt.
  • 2024-03-29: RedHat gibt bekannt, dass xz mit Backdoor in Fedora Rawhide und Fedora Linux 40 Beta ausgeliefert wurde.
  • 2024-03-30: Debian stoppt Builds und baut die Build-Maschinen unter Verwendung von Debian stable neu auf.

Meinung von GN⁺

  • Dieser Vorfall wird ein wichtiger Wendepunkt im Hinblick auf Supply-Chain-Angriffe auf Open-Source-Software sein. Der Grund ist, dass ein langfristig angelegter Social-Engineering-Ansatz von Mitverschwörern Vertrauen gewann und Zugriffsrechte verschaffte, bevor heimlich eine Backdoor in eine breit genutzte Kernbibliothek eingebaut wurde.
  • Es besteht die Notwendigkeit, Governance- und Rechteübertragungsprozesse in Open-Source-Projekten zu überdenken. Man sollte verteilte Governance-Modelle in Betracht ziehen, damit ein Projekt nicht von den persönlichen Umständen eines einzelnen Kern-Maintainers abhängt.
  • Sicherheits-Audits und Code-Reviews für wichtige Open-Source-Projekte werden noch wichtiger werden. Es braucht auch automatisierte Prüfwerkzeuge, um verdächtige Änderungen zu erkennen und den Missbrauch von Rechten zu verhindern, etwa Warnungen beim Hinzufügen binärer Daten.
  • Ohne die Vorteile des Open-Source-Ansatzes zu untergraben, bei dem öffentlich entwickelt wird und jeder beitragen kann, müssen technische und institutionelle Maßnahmen geschaffen werden, um bösartige Beitragende auszusortieren und Angriffe frühzeitig zu stoppen.
  • Je eher ein Open-Source-Projekt auf Sprachen oder Werkzeuge mit schwacher Sicherheit setzt, desto größer dürfte das Risiko sein. Neben Bemühungen, die Sicherheit auf mehreren Ebenen zu erhöhen – etwa durch Memory Safety, statische Analyse und Fuzzing – wird auch eine Umstellung auf moderne Werkzeuge erforderlich sein.
  • Das Interesse wird sich auf detaillierte Analysen der verborgenen Aktivierungsbedingungen der Backdoor, des Verbreitungswegs und des Einflussbereichs richten. Daraus lassen sich Erkenntnisse gewinnen, um ähnliche Angriffstypen künftig abzuwehren.

7 Kommentare

 
sagee 2024-04-09

Was mir bei diesem Vorfall Sorgen macht, ist, dass man Open-Source-Entwickler-PCs hacken oder die Entwickler entführen/festsetzen oder mit Geld bestechen könnte, um Schadcode einzuschleusen.. Wenn ich an Geld denke, frage ich mich außerdem, ob Open-Source-Entwickler eigentlich gut leben können?

 
botplaysdice 2024-04-05

Ich arbeite im Sicherheitsbereich; wenn man bei einem Code-Review einen Bug findet, kommt dann schon mal so ein Spruch wie: „Bist du vor fünf Jahren hier eingestiegen, nur um genau diesen Code einzuschleusen?“ 😂

 
aer0700 2024-04-04

Für Lesser Collin war das wohl in vielerlei Hinsicht ziemlich hart ...

 
xcutz 2024-04-03

Ja, Arch Linux hat schon längst gepatcht~ Kommt nur her, kommt nur her, ja, Backdoor raus, das neueste Arch ist der absolute Hammer~

 
tpdns90321 2024-04-07

pacman -Syu

 
sdkfile 2024-04-03

Lasse Collin hat einen Beitrag veröffentlicht, der den Vorfall zusammenfasst.
https://tukaani.org/xz-backdoor/

 
GN⁺ 2024-04-03
Hacker-News-Kommentare
  • Eine hervorragende Zusammenfassung des Vorfalls, mit allen Links an einem Ort, und damit perfekte Lektüre für alle, die lernen möchten, wie sich ein Social-Engineering-Angriff in der Praxis tatsächlich entfaltet.

    • Im Abschnitt „Beginn des Angriffs“ werden Ubuntu und Debian erwähnt, Fedora fehlt jedoch und könnte zur Vervollständigung ergänzt werden.
    • Der Social-Engineering-Druck auf Fedora scheint in der Woche vor dem 4. März 2024 begonnen zu haben.
  • Es wird darauf hingewiesen, dass die Fedora-Zeitleiste fehlt.

    • Eine Person namens „Jia Tan“ versuchte zwischen dem 27. Februar und dem 27. März, Kontakt aufzunehmen, um das neue xz in Fedora 40 und 41 aufnehmen zu lassen.
  • Es wird die Meinung vertreten, dass schwer verständlicher Code innerhalb des Systems nicht länger toleriert werden sollte.

    • Es sei an der Zeit, M4 und komplexe Shell-Skripte abzuschaffen.
  • Dies wirkt wie eine der positiven Folgen, die zu einer konservativeren Haltung gegenüber Upgrades führen könnten.

    • Viele Menschen, einschließlich Entwickler, sollten Risiken und Vorteile sorgfältig abwägen, statt Upgrades pauschal als gut zu betrachten.
  • Es wird vorgeschlagen, dass die FOSS-Community systematisch unhöfliche Nutzer ausschließen oder durch ein höheres Community-Bewusstsein einen kulturellen Wandel herbeiführen könnte, der unhöflichem Verhalten entschlossener entgegentritt.

  • Es wird angemerkt, dass die Beobachtung zum Format der E-Mail-Adressen fehlerhaft ist.

    • Die E-Mail-Adressformate von Jigar Kumar und Dennis Ens unterscheiden sich, und das beweist oder widerlegt nicht, dass beide dieselbe Person sind (Sockpuppets).
  • Es wird Sorge darüber geäußert, wie leicht sozialer Druck Menschen dazu bringt, die Kontrolle abzugeben.

    • Es ist kaum vorstellbar, wie schockierend dieser Vorfall für den ursprünglichen Autor von XZ gewesen sein muss, und hoffentlich dient er anderen Personen im Open-Source-Umfeld als starkes Beispiel dafür, dem Druck anderer nicht nachzugeben.
  • Ein Maintainer betont, dass die Wahrscheinlichkeit sinkt, einer Bitte nachzukommen, je hartnäckiger ein Beitragender oder Nutzer darauf drängt.

  • Die Meinung von Joe Cooper wird zitiert, und seine Sicht auf den Druck auf Projekt-Maintainer wird geteilt.

  • Es wird erklärt, dass der versteckte Backdoor-Binärcode sehr gut in binären Test-Eingabedateien verborgen war und dass diese Dateien größtenteils manuell mit einem Hex-Editor erstellt wurden, weshalb die Dateien selbst der beste „Quellcode“ sind.

    • Das ist eine Warnung für jene, die Binary Blobs für in Open-Source-Software nicht unterstützte Hardware verteidigen.
    • Entweder muss es in Quellform reproduzierbar sein, oder es sollte nicht existieren.