Byla vydána verze XZ Utils 5.8.1, která zahrnuje knihovnu liblzma a nástroje pro práci se stlačenými daty ve formátu „.xz“. XZ Utils 5.8.1 se stal prvním významným vydáním po incidentu s odhalením zadního vchodu, který zajišťoval přístup přes sshd. Minulý týden byl v Gitu vytvořen tag 5.8.0, ale vydání nebylo oficiálně oznámeno kvůli problémům s výkonem a kompatibilitou se staršími verzemi GNU make, které se objevily po vydání tagu.
Ve verzi XZ Utils 5.8.1 byla odstraněna zranitelnost (CVE-2025-31115), která vedla k havárii při pokusu o rozbalení speciálně upravených archivů. Zranitelnost byla způsobena přístupem k již uvolněné oblasti paměti (use after free). Útočník může dosáhnout zápisu své hodnoty na adrese vypočítané jako „nulový ukazatel + posun“. Problém je považován za neúmyslnou chybu, protože změnu, která jej způsobila, provedl do kódu dávno předtím, než se do projektu zapojil vývojář Jia Tan, jehož činnost vedla k zavedení zadního vchodu.
Problém se projevuje od verze XZ Utils 5.3.3alpha při dekódování v multithreaded režimu (jedno-vláknový dekodér není touto chybou ovlivněn). Kromě běžných nástrojů z balíku xz se zranitelnost projevuje také v externích programech, které používají funkci lzma_stream_decoder_mt z knihovny liblzma. Zranitelnost byla odstraněna ve verzi XZ Utils 5.8.1 a také byla přenesena do stabilních větví 5.4 a 5.6. Aktualizace v distribucích lze sledovat na následujících stránkách: Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, FreeBSD. Jako obranou je možné zakázat dekódování souborů v multithreaded režimu tím, že při spuštění xz použijete volby „—decompress —threads=1“ nebo využijete nástroj xzdec.
Mezi funkčními změnami ve větvi XZ Utils 5.8 lze poznamenat:
- Do dekodéru LZMA/LZMA2 byla přidána možnost používat instrukce SSE2 místo funkce memcpy() na 32- a 64-bitových systémech x86. Tato změna umožnila zkrátit čas dekódování až o 5 % při sestavení s Glibc a až o 15 % při sestavení s musl při rozbalování souborů s velmi vysokou úrovní komprese.
- Ve liblzma byla zvýšena rychlost kódování na 64-bitových systémech PowerPC a RISC-V.
- Do lzma/bcj.h byl přidán nízkoúrovňový API BCJ filtrů (Branch/Call/Jump) pro systémy RISC-V, ARM64 a x86.
- Kód výpočtu CLMUL CRC pro systémy x86, x86-64 a E2K byl přepsán.
- Na platformách s procesory LoongArch jsou využívány instrukce k urychlení výpočtu kontrolních součtů CRC32.
- V utilitě «xz» je zajištěno volání funkce fsync() pro vyprázdnění souborových mezipamětí pro výsledný soubor před odstraněním původního souboru. Pro deaktivaci synchronizace před odstraněním byla implementována možnost „—no-sync“.
- V utilitách xz, xzdec a lzmainfo při výstupu informací na obrazovku došlo k nahrazení neviditelných znaků otazníkem.
- V xz a xzdec na platformě Linux byla pro izolaci procesu implementována podpora 5. a 6. verze mechanismu Landlock.
- Byl přidán skript pro kontrolu licencí build-aux/license-check.sh.
- Byly vyhlášeny za zastaralé skripty lzcmp, lzdiff, lzless, lzmore, lzgrep, lzegrep a lzfgrep, implementované jako nadstavby nad utilitou xz.
Zdroj: opennet.ru
