xz

xz
Dateiendung: .xz
MIME-Type: application/x-xz
Magische Zahl: FD 37 7A 58 5A 00 hex
\xFD7zXZ\0

(ASCII-C-Notation)

Entwickelt von: Tukaani Project (Slackware)
Aktuelle Version 1.2.0[1]
(19. Januar 2024)
Art: Datenkompression
Container für: beliebige Dateien
Standard(s): tukaani.org/xz/xz-file-format
tukaani.org/xz

xz ist das Datenkompressionsformat der XZ Utils. Die Gestaltung lehnt sich an die Datenformate von compress, gzip und bzip2 an. So ist es wie diese kein Format für eine Archivdatei, unterstützt also nur eine einzelne Datei als Kompressionsinhalt.

Die Dateien werden durch die Dateinamenserweiterung .xz gekennzeichnet, komprimierte tar-Archive erhalten die Dateinamenserweiterung .txz oder .tar.xz.

Am 29. März 2024 wurde bekannt, dass die offizielle Implementierung XZ Utils eine Backdoor enthält. Daraufhin wurde das Projekt bei GitHub gesperrt[2].

Merkmale

Das Format unterstützt mehrere Kompressionsalgorithmen (sogenannte Filter) aus einer erweiterbaren Liste, welche auch miteinander kombinierbar sind. Die Referenzimplementierung nutzt primär den Lempel-Ziv-Markow-Algorithmus (LZMA/LZMA2). Inhalte werden durch Prüfsummen geschützt, wobei ebenfalls eine Reihe von Prüfsummenalgorithmen aus einer erweiterbaren Liste unterstützt werden. Der Datenstrom kann in mehreren unabhängigen Blöcken komprimiert und in die Datei geschrieben werden, um z. B. wahlfreien Zugriff zu beschleunigen. Dabei können auch für die einzelnen Blöcke unterschiedliche Kompressionsalgorithmen genutzt werden. Wie bei gz- und bz2-Dateien können mehrere xz-Dateien durch Aneinanderhängen zu einer gültigen neuen zusammengeführt werden, und es kann ein Vielfaches von vier an Nullbytes angehängt werden (eine gültige xz-Datei hat eine durch vier teilbare Anzahl von Bytes) um z. B. bestimmte Dateigrößen zu erreichen. Das Format ist streaming-fähig, kann also über Pipes verarbeitet werden.

Unterstützung, Verwendung

Neben der Referenzimplementierung, den XZ Utils, können viele weitere Packer/Entpacker das Format lesen, darunter 7-Zip ab der Version 9, WinRAR ab Version 5[3] und The Unarchiver. Dazu gibt es mit XZ Embedded eine besonders kleine Implementierung, die unter anderem im Linux-Kernel verwendet wird.[4]

Die Implementierung des GNU-Projektes des bei der Komprimierung unter Linux und Unix oft verwendeten Packprogrammes tar unterstützt ab der Version 1.22 die direkte Erzeugung von xz-komprimierten tar-Dateien mit der Erweiterung .tar.xz und der Option -J bzw. --xz.

Die GNU Core Utilities werden ab Version 7.1 neben dem gz-Format auch im xz-Format ausgeliefert und ab der Version 8.14 ausschließlich im xz-Format.[5] Weiterhin existiert eine auf Mehrkern-CPUs optimierte xz-Implementierung namens pixz, welche bei tar-Dateien auch einen Index anlegen kann, um schnellen wahlfreien Zugriff zu ermöglichen.[6]

Sicherheitslücke März 2024

Am 29. März 2024 wurde eine schwerwiegende Sicherheitslücke (CVE-2024-3094) bekannt, die durch eine Backdoor in der Referenzimplementierung XZ Utils ermöglicht wurde. Die Sicherheitslücke erhielt den CVE-Eintrag CVE-2024-3094 mit der höchstmöglichen Bedrohungsstufe von 10,0 (kritisch)[7]. Diese Backdoor könnte es Angreifern ermöglichen, via SSH unbefugten Code auf Systemen auszuführen[8].

Aufgrund des aufwändigen und langfristigen Vorgehens wird vermutet, dass hinter dem Angriff ein staatlicher Akteur steht[9].

Einzelnachweise

  1. Version 1.2.0 (2024-01-19).
  2. Alexander Pensler: Backdoor in XZ-Komprimierungstools in mehrere Linux-Distributionen eingeschleust. 30. März 2024, abgerufen am 30. März 2024.
  3. Latest changes in WinRAR. RARLAB, September 2013.
  4. XZ Embedded, abgerufen am 10. April 2021.
  5. ftp.gnu.org
  6. github.com
  7. nvd - Cve-2024-3094. In: nist.gov. nvd.nist.gov, abgerufen am 31. März 2024.
  8. heise online: Hintertür in xz-Bibliothek gefährdet SSH-Verbindungen. In: heise.de. Security, 2024, abgerufen am 31. März 2024.
  9. heise online: Hintertür in xz-Bibliothek gefährdet SSH-Verbindungen. 30. März 2024, abgerufen am 31. März 2024.