Die Ausgabe des XZ Utils-Pakets 5.8.1 wurde veröffentlicht, das die Bibliothek liblzma und Utilities zum Arbeiten mit komprimierten Daten im " .xz "-Format beinhaltet. XZ Utils 5.8.1 ist die erste bedeutende Veröffentlichung nach dem Vorfall mit einem Backdoor, das den Zugriff über sshd ermöglicht. In der vergangenen Woche wurde im Git-Repository ein Tag 5.8.0 erstellt, jedoch wurde das Release aufgrund von nach der Veröffentlichung des Tags festgestellten Performance- und Kompatibilitätsproblemen mit älteren Versionen von GNU make nicht offiziell angekündigt.
Im Update von XZ Utils 5.8.1 wurde eine Schwachstelle (CVE-2025-31115) behoben, die zu einem Absturz beim Versuch, speziell gestaltete Archive zu entpacken, führt. Die Schwachstelle wurde durch den Zugriff auf bereits freigegebenen Speicher (use after free) verursacht. Ein Angreifer kann erreichen, dass sein Wert an eine Adresse geschrieben wird, die als „Nullzeiger + Offset“ berechnet wird. Das Problem wird als unbeabsichtigter Fehler betrachtet, da die Änderung, die dazu führte, lange vor dem Eintritt des Entwicklers Jia Tan in das Projekt vorgenommen wurde, dessen Aktivitäten zur Einführung des Backdoors führten.
Das Problem tritt seit der Veröffentlichung von XZ Utils 5.3.3alpha auf, wenn im Multithread-Modus dekodiert wird (einzelner Dekodierer betrifft das Problem nicht). Neben den Standard-Utilities des xz-Pakets tritt die Schwachstelle auch in Drittanbieterprogrammen auf, 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 auch in die stabilen Zweige 5.4 und 5.6 übertragen. Updates in den Distributionen können auf den folgenden Seiten verfolgt werden: Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD. Als Workaround kann das Dekodieren von Dateien im Multithread-Modus deaktiviert werden, indem beim Start von xz die Optionen „—decompress —threads=1“ verwendet oder das Utility xzdec angewendet wird.
Zu den funktionalen Änderungen in der Version XZ Utils 5.8 gehören:
- Im LZMA/LZMA2-Dekodierer wurde die Möglichkeit hinzugefügt, anstelle der Funktion memcpy() auf 32- und 64-Bit x86-Systemen SSE2-Instruktionen zu verwenden. Diese Änderung hat die Dekodierzeit um bis zu 5 % bei der Kompilierung mit Glibc und um bis zu 15 % bei der Kompilierung mit musl beim Entpacken von Dateien mit sehr hohem Komprimierungsgrad reduziert.
- 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 der CLMUL CRC für x86-, x86-64- und E2K-Systeme wurde neu geschrieben.
- Auf Plattformen mit LoongArch-Prozessoren werden Anweisungen zur Beschleunigung der Berechnung von CRC32-Prüfziffern eingesetzt.
- Im Dienstprogramm „xz“ wurde der Aufruf der Funktion fsync() implementiert, um die Dateicaches für die Ausgabedatei vor dem Löschen der Quelldatei zu leeren. Um die Synchronisation vor der Löschung zu deaktivieren, wurde die Option „—no-sync“ implementiert.
- In den Dienstprogrammen xz, xzdec und lzmainfo wird bei der Ausgabe von Informationen auf dem Bildschirm eine Ersetzung von nicht druckbaren Zeichen durch ein Fragezeichen gewährleistet.
- In xz und xzdec gibt es unter Linux Unterstützung für die Versionen 5 und 6 des Mechanismus Landlock zur Isolierung des Prozesses.
- Ein Skript zur Überprüfung der Lizenzen wurde hinzugefügt: build-aux/license-check.sh.
- Die Skripte lzcmp, lzdiff, lzless, lzmore, lzgrep, lzegrep und lzfgrep, die als Erweiterungen des Dienstprogramms xz realisiert wurden, wurden als veraltet erklärt.
Quelle: opennet.ru
