XZ Utils

XZ Utils
Basisdaten

EntwicklerTukaani Project (Slackware)
Aktuelle Version5.6.2[1]
(29. Mai 2024)
BetriebssystemUnix-ähnliche (BSD, Linux, Solaris)
Programmier­spracheC
KategorieDatenkompressionsprogramm
Lizenzgroßteils gemeinfrei
https://tukaani.org/xz/

Die XZ Utils sind eine Sammlung freier Archivierungsprogramme für unixoide Systeme. Sie entstanden im Rahmen des Tukaani Project der Linux-Distribution Slackware.

Der Datenkompressionsalgorithmus basiert auf einer angepassten Portierung des LZMA-Codes des LZMA-SDK auf Linux und anderen Unix-ähnlichen Plattformen.

Der Quelltext ist größtenteils gemeinfrei, ansonsten unter verschiedenen Freie-Software-Lizenzen.

Funktionsumfang

Die XZ Utils bieten die von den etablierten Linux-Packprogrammen gzip und bzip2 gewohnte Handhabung gepackter Dateien für den fortschrittlichen Lempel-Ziv-Markow-Datenkompressionsalgorithmus (LZMA) sowie ermöglichen dessen Integration in andere Programme. Dazu haben sie eine sehr ähnliche Bedienung, erledigen ebenfalls das Archivieren mehrerer Dateien nicht selbst, sondern setzen dafür auf die Kombination mit reinen Archivformaten wie tar und führen auch ein neues Dateiformat mit vergleichbaren Eigenschaften (xz, siehe unten) ein.

Die Kompression ist effizienter, aber meist erheblich langsamer als die Kompression mit gzip, bzip2 oder rar, führt dafür jedoch zu um 30 % bzw. 15 % kleineren Ergebnissen als bei gzip bzw. bzip2. Bei LZMA-basierter Kompression ergeben sich mit ausreichend Arbeitsspeicher von den Kompressionseinstellungen weitgehend unabhängige, gleichbleibende Dekompressionszeiten, die in der Regel deutlich unter den variierenden Zeiten von bzip2 liegen, jedoch im Vergleich mit gzip deutlich zurückbleiben.[2]

Die XZ Utils bestehen aus mehreren einzelnen Werkzeugen zur Handhabung von xz-Dateien:

xz
ein Kommandozeilenprogramm, das analog zu gzip oder bzip2 arbeitet und ein nachempfundenes Bedienungskonzept hat
liblzma
eine Programmbibliothek mit einer Programmierschnittstelle, die sich an die der zlib anlehnt
xzdec
ein reines Dekompressionswerkzeug

Weiterhin gibt es eine Sammlung von Shell-Skripten zur Erleichterung des Umgangs mit xz-Dateien.
Dadurch stehen die Befehle xz, unxz, xzcat und xzgrep (bzw. zur Abwärtskompatibilität zu den älteren LZMA Utils auch lzma, unlzma, lzcat und lzgrep) zur Verfügung.

Datenformat

Die XZ Utils (wie auch die LZMA Utils) können mit dem 7z-Datenformat der LZMA-Referenzimplementierung(en) (7-Zip, LZMA SDK) nicht umgehen. Sie erzeugen Dateien im eigenen xz-Format, das analog zum gz- und bz2-Format funktioniert. Umgekehrt können 7-Zip und das LZMA SDK seit den 9er-Versionen aber auch xz-Dateien öffnen.

Geschichte

Das Projekt begann unter dem Namen LZMA Utils als eine Unix-Portierung des LZMA-Codes aus dem LZMA-SDK, welche nur rohe LZMA-Ströme ohne jegliche Kopfdaten erzeugte. Die XZ Utils können das Verhalten der Kommandozeilenprogramme der LZMA Utils emulieren und dessen Dateien öffnen. Die Umbenennung geschah am 31. Dezember 2008 mit Version 4.999.7beta. Seither wird auch das Dateiformat (xz) nicht mehr verändert. Seitdem es mit xz auch ein passendes Containerformat hat, ist es nach lzip die zweite Komplettlösung zur Nutzung von LZMA in Unix-Manier und hat diesem gegenüber mittlerweile schon größere Verbreitung erlangt.

Als das LZMA SDK (von dem die XZ Utils abgeleitet sind) mit Version 4.61 beta vom 23. November 2008 gemeinfrei wurde, wurde infolgedessen auch die Lizenz der XZ Utils entsprechend umgestellt.

Plattformen

Die XZ Utils sind für diverse Linux-Distributionen erhältlich. Als Binärpaket sind sie unter anderem als .deb-Paket sowie .rpm-Paket verfügbar. Damit kann die Software bei den meisten Linuxdistributionen problemlos installiert werden. Pakete sind zum Beispiel für Debian, Ubuntu, Gentoo, Mandriva, openSUSE sowie Red Hat verfügbar.

Auch für BSD-Betriebssysteme existieren Binärpakete. Alternativ können Benutzer von BSD-Betriebssystemen wie OpenBSD, NetBSD, FreeBSD, DragonFly BSD die Software auch durch das Port-System installieren.

Ab Version 4.999.8beta gibt es auch experimentelle Unterstützung für Windows.

Backdoor

Am 29. März 2024 wurde eine Backdoor in XZ Utils in den Versionen 5.6.0 und 5.6.1 bekannt.[3][4][5] Die Sicherheitslücke erhielt den CVE-Eintrag CVE-2024-3094 mit der höchsten Bedrohungsstufe von 10.[6] Diese Backdoor könnte es Angreifern ermöglichen, via SSH unbefugten Code auf Systemen auszuführen.[5]

Betroffene Linux-Distributionen sind unter anderem Debian unstable/testing,[7] Fedora Rawhide,[8] Gentoo Linux,[9] Kali Linux[10] und OpenSUSE Tumbleweed.[11] Nicht betroffen sind zum Beispiel Debian stable,[7] Red Hat Enterprise Linux[12] oder SUSE Linux Enterprise.[11] Bei der Rolling Release Distribution Arch Linux war die bis 28. März im Paket enthaltene Payload unschädlich.[13][14] Da die Backdoor rechtzeitig gefunden wurde, hatte die kompromittierte Version noch nicht Einzug in die stabilen Versionen der meisten Distributionen gehalten. Andernfalls wären zahlreiche Server betroffen gewesen – dies wird vielfach als Albtraumszenario der IT-Sicherheit bezeichnet.[15]

Die Sicherheitslücke fiel auf, als der deutsche Software-Ingenieur Andres Freund[16] von Microsoft ungewöhnlich hohe CPU-Auslastungen und eine unerklärliche Verzögerung von 500 Millisekunden bei SSHD-Prozessen bemerkte,[17] die eigentlich aufgrund falscher Benutzernamen sofort hätten scheitern sollen. Eine tiefergehende Untersuchung mit Profiling-Tools zeigte, dass diese Auslastung durch außergewöhnliche Aktivitäten in der liblzma-Bibliothek verursacht wurde, ohne dass diese Aktivitäten einem spezifischen Symbol zugeordnet werden konnten. Diese Anomalie, kombiniert mit früheren, unerklärlichen Valgrind-Warnungen nach Paketaktualisierungen, weckte Verdacht. Die nachfolgende, detaillierte Analyse der xz-Codebasis und der kürzlichen Änderungen deckte schließlich die Backdoor auf. Als Reaktion auf diese Entdeckung wurde das offizielle GitHub-Repository des Projekts gesperrt, um eine weitere Verbreitung der kompromittierten Softwareversionen zu verhindern.[11]

Eingebaut wurde die Lücke durch eine Person mit dem Benutzernamen Jia Tan (GitHub-Account JiaT75). Diese hatte sich seit 2021 in dem Projekt engagiert, mutmaßlich um sich damit dort Vertrauen zu erschleichen. Zugleich übten andere Benutzer mit vermutlich falschen Identitäten Druck auf den ursprünglichen Maintainer aus, sodass dieser Jia Tan 2023 immer weitergehende Zugriffsrechte einräumte.[4] Aufgrund des aufwändigen und langfristigen Vorgehens wird vermutet, dass hinter Jia Tan ein staatlicher Akteur steht.[5] Für eine nachrichtendienstliche Operation spreche, dass die Hintertüre nur mit einem bestimmten Schlüssel erreichbar war, der sicher stellte, dass zum Beispiel Cyberkriminelle oder andere Staaten die kompromittierten Systeme nicht ausspionieren oder gefährden konnten.[18]

Die New York Times verglich Freund mit einem Bäckerei-Arbeiter,[17] der „an einem frisch gebackenen Brot riecht und spürt, dass etwas nicht stimmt und zu dem Schluss kommt, dass jemand die gesamte weltweite Hefeversorgung manipuliert hat“.

Siehe auch

  • p7zip ist die direkte Portierung der Kommandozeilenwerkzeuge von 7-Zip auf unixoide Betriebssysteme

Einzelnachweise

  1. Lasse Collin: [xz-devel] XZ Utils 5.2.13, 5.4.7, and 5.6.2. 29. Mai 2024 (abgerufen am 30. Mai 2024).
  2. http://tukaani.org/lzma/benchmarks.html
  3. Andres Freund: Backdoor in upstream xz/liblzma leading to ssh server compromise. In: oss-security. Openwall, 29. März 2024, abgerufen am 30. März 2024 (englisch).
  4. a b Evan Boehs: Everything I know about the XZ backdoor. Abgerufen am 31. März 2024 (englisch).
  5. a b c Christopher Kunz: Hintertür in xz-Bibliothek gefährdet SSH-Verbindungen. In: heise online. 30. März 2024, abgerufen am 31. März 2024.
  6. nvd – Cve-2024-3094. In: nist.gov. nvd.nist.gov, abgerufen am 31. März 2024.
  7. a b CVE-2024-3094. In: security-tracker.debian.org. Abgerufen am 30. März 2024 (englisch).
  8. Urgent security alert for Fedora 41 and Fedora Rawhide users. In: www.redhat.com. Abgerufen am 30. März 2024 (englisch).
  9. Bug 928134 (CVE-2024-3094) - >=app-arch/xz-utils-5.6.0: backdoor in release tarballs. Abgerufen am 1. April 2024.
  10. All about the xz-utils backdoor | Kali Linux Blog. In: Kali Linux. 29. März 2024, abgerufen am 30. März 2024 (englisch).
  11. a b c openSUSE addresses supply chain attack against xz compression library. In: openSUSE News. 29. März 2024, abgerufen am 30. März 2024 (englisch).
  12. cve-details. In: access.redhat.com. Abgerufen am 30. März 2024 (englisch).
  13. Arch Linux – News: The xz package has been backdoored. Abgerufen am 31. März 2024: „Arch does not directly link openssh to liblzma, and thus this attack vector is not possible.“
  14. Russ Cox: Timeline of the xz open source attack. Abgerufen am 4. April 2024 (englisch).
  15. oss-security – Re: backdoor in upstream xz/liblzma leading to ssh server compromise. Abgerufen am 31. März 2024.
  16. BSI warnt vor gravierender Sicherheitslücke. 5. April 2024, abgerufen am 7. April 2024.
  17. a b Kevin Roose: Did One Guy Just Stop a Huge Cyberattack? In: The New York Times. 3. April 2024, abgerufen am 4. April 2024 (englisch).
  18. Lukas Mäder, «Das ist der verrückteste Angriff»: Ein Programmierer entdeckt per Zufall eine gefährliche Hintertüre im Code - wohl von einem Geheimdienst, in Neue Zürcher Zeitung vom 4. April 2024