Die Version XZ Utils 5.8.1 wurde veröffentlicht, die die Bibliothek liblzma und Werkzeuge zur Verarbeitung von Daten im Format „.xz“ umfasst. XZ Utils 5.8.1 ist das erste bedeutende Update nach dem Vorfall, bei dem ein Backdoor entdeckt wurde, das den Zugang über sshd ermöglicht. In der vergangenen Woche wurde im Git-Repository das Tag 5.8.0 erstellt, jedoch wurde das Release aufgrund von nach der Tag-Publikation erkannten Leistungs- und Kompatibilitätsproblemen mit älteren Versionen von GNU make nicht offiziell angekündigt.
Im Update XZ Utils 5.8.1 wurde eine Schwachstelle (CVE-2025-31115) behoben, die zu einem Absturz führt, wenn versucht wird, speziell gestaltete Archive zu entpacken. Diese Schwachstelle entsteht durch den Zugriff auf bereits freigegebenen Speicher (Use After Free). Ein Angreifer könnte erreichen, dass sein Wert an einer Adresse geschrieben wird, die als „Nullzeiger + Offset“ berechnet wird. Das Problem wird als unbeabsichtigter Fehler betrachtet, da die Änderung, die es verursacht hat, lange vor dem Eintritt des Entwicklers Jia Tan in das Projekt vorgenommen wurde, dessen Tätigkeit zur Einführung des Backdoors führte.
Das Problem tritt ab der Version XZ Utils 5.3.3alpha beim Dekodieren im Multithreading-Modus auf (das Problem beeinflusst den Einzelthread-Dekodierer nicht). Neben den Standard-Tools aus dem xz-Paket zeigt die Schwachstelle auch in Drittanwendungen, die die Funktion lzma_stream_decoder_mt aus der Bibliothek liblzma verwenden. Die Schwachstelle wurde in der Version XZ Utils 5.8.1 behoben und in die stabilen Zweige 5.4 und 5.6 übertragen. Updates in den Distributionen können auf folgenden Seiten verfolgt werden: Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD. Als Umgehungsschutz kann das Dekodieren von Dateien im Multithreading-Modus deaktiviert werden, indem bei der Ausführung von xz die Optionen "—decompress —threads=1" verwendet werden oder das Hilfsprogramm xzdec angewendet wird.
Funktionale Änderungen in der Version XZ Utils 5.8 sind:
- Im LZMA/LZMA2-Dekodierer wurde die Möglichkeit hinzugefügt, SSE2-Befehle anstelle von memcpy() auf 32- und 64-Bit-x86-Systemen zu verwenden. Diese Änderung konnte die Dekodierzeit um bis zu 5% bei einer Glibc-Build und um bis zu 15% bei einer musl-Build beim Entpacken von Dateien mit sehr hohem Kompressionsgrad reduzieren.
- In liblzma wurde die Kodierungsgeschwindigkeit auf 64-Bit-Systemen PowerPC und RISC-V erhöht.
- In lzma/bcj.h wurde eine Low-Level-API für BCJ-Filter (Branch/Call/Jump) für RISC-V-, ARM64- und x86-Systeme hinzugefügt.
- Der Code zur Berechnung des CLMUL CRC für x86-, x86-64- und E2K-Systeme wurde neu geschrieben.
- Auf Plattformen mit LoongArch-Prozessoren werden Befehle zur Beschleunigung der CRC32-Prüfzahlenberechnung verwendet.
- Im Tool 'xz' wird die Funktion fsync() aufgerufen, um die Dateicaches des Ergebnisdateis vor dem Löschen der Originaldatei zu leeren. Um die Synchronisierung vor dem Löschen zu deaktivieren, wurde die Option '--no-sync' implementiert.
- In den Utilities xz, xzdec und lzmainfo wird beim Ausgeben von Informationen auf dem Bildschirm sichergestellt, dass nicht druckbare Zeichen durch ein Fragezeichen ersetzt werden.
- In xz und xzdec wurde auf der Linux-Plattform Unterstützung für die Versionen 5 und 6 des Landlock-Mechanismus zur Isolierung von Prozessen implementiert.
- Ein Skript zur Überprüfung von Lizenzen wurde hinzugefügt: build-aux/license-check.sh.
- Die Skripte lzcmp, lzdiff, lzless, lzmore, lzgrep, lzegrep und lzfgrep, die als Erweiterungen über das Tool xz implementiert wurden, wurden als veraltet erklärt.
Quelle: opennet.ru
