XZ Utils

XZ-Utils
Kehityshistoria
Vakaa versio 5.6.3 ()[1]
Tiedot
Lisenssi GNU Lesser General Public License, versio 2.1 tai myöhempi
Aiheesta muualla
Verkkosivusto
Versiohallinta

XZ Utils (aiemmin LZMA Utils) on paketti avoimen lähdekoodin pakkausohjelmia. Pakettiin kuuluvat ohjelmat ovat lzma ja sen seuraaja xz. Ohjelmat ovat lähinnä Unix- ja Linux-käyttöjärjestelmiin suunnattuja komentoriviohjelmia, jotka toimivat kuten Unixin compress tai gzip tai bzip2. Ohjelmat pakkaavat vain yhden tiedoston tai vuon, joten sille voi putkittaa esim. tar-arkistointiohjelman tulostuksen, joka pakataan ja tallennetaan tiedostoon.

XZ Utils perustuu Igor Pavlovin kehittämälle LZMA Utilsille, jota käytettiin aluksi 7-Zipin 7z-pakkauksessa. LZMA Utils alkoi Unix-versiona Pavlovin LZMA-SDK:sta Tukaani-projektin yhteydessä. xz:n algoritmina on nykyisin LZMA2, jota tallennetaan xz-kuoreen. Pakkaukselle luvataan jopa 30% parempi pakkaussuhde kuin gzipille ja 15% parempi kuin bzip2:lle.[2] Pavlovin mukaan LZMA on hänen kehittämänsä yhdistelmä LZ77-algoritmia, Markovin ketjuja ja aritmeettista koodausta.[3]

Eräässä kokeessa linux-lähdekoodipaketti pakkautui suurimmilla asetuksilla gzip:llä 21% tilaan, bzip2:lla 16,6% tilaan ja xz:llä 13,9% tilaan. xz:llä pakkaus vie jopa 9 kertaa enemmän aikaa kuin gzipillä.[4] Lisäksi xz:n muistinkäyttö vaihtelee muutamasta sadasta kilotavusta jopa gigatavuihin.[5]

Maaliskuussa uutisoitiin xz-paketista löytyneestä takaovesta, joka muuttaa SSH-palvelimen autentikaatiota. Takaovi on löytynyt versioista 5.6.0 ja 5.6.1, jonka vuoksi monet jakelut ovat palanneet näitä edeltävään versioon. Ongelmallinen versio ei ollut vielä kaikissa jakeluissa käytössä.[6][7] Takaoven löytymisestä kerrottiin OpenWallin sähköpostilistalla.[8][9] Takaoven lisäsi Jia Tan (JiaT75), joka vaikutti myös toiseen pakettiin, ja pääsi myöhemmin sabotoimaan projektia. Jia Tan tarjoutui projektiin kun sen ylläpito oli vaikeuksissa vuonna 2022 ja samalla ylläpitoon kohdistettiin painostusta nopeampiin päivityksiin.[10][11][12][13][14] Takaovi käytti glibc:n ominaisuutta (IFUNC) korvaamaan RSA_public_decrypt-funktion ohjaamalla sen haitalliseen versioon. Tämä antoi hyökkääjälle mahdollisuuden suorittaa antamansa ohjelmakoodin etänä. Jia Tan teki myös muutoksen, jolla landlock-hiekkalaatikon tuki kytkeytyi pois käännösvaiheessa aiheuttamalla virheen CMake-ohjelman tekemässä tarkistuksessa.[15][16] Saastutettu kirjasto hyökkäsi SSH-ohjelmistoon, ja avasi tähän takaoven, jonka kautta hyökkääjälle tuli mahdollisuus lähettää suoritettava ohjelma SSH-sertifikaatin mukana.[14]

  1. [xz-devel] XZ Utils 5.6.3 and Windows-specific security fix (viitattu ). Tieto on haettu Wikidatasta.
  2. https://tukaani.org/xz/
  3. LZMA spec? 27.2.2004. Arkistoitu Viitattu 30.3.2024. (englanniksi)
  4. https://www.rootusers.com/gzip-vs-bzip2-vs-xz-performance-comparison/
  5. https://linux.die.net/man/1/xz
  6. Dan Goodin: Backdoor found in widely used Linux utility breaks encrypted SSH connections arstechnica.com. 29.3.2024. Viitattu 30.3.2024. (englanniksi)
  7. Thomas Claburn: Malicious SSH backdoor sneaks into xz, Linux world's data compression library theregister.com. 29.3.2024. Viitattu 30.3.2024. (englanniksi)
  8. Andres Freund: backdoor in upstream xz/liblzma leading to ssh server compromise openwall.com. 29.3.2024. Viitattu 30.3.2024. (englanniksi)
  9. Urgent security alert for Fedora Linux 40 and Fedora Rawhide users redhat.com. 29.3.2024. Viitattu 30.3.2024. (englanniksi)
  10. Evan Boehs: Everything I Know About the Xz Backdoor boehs.org. Viitattu 31.3.2024. (englanniksi)
  11. A Microcosm of the interactions in Open Source projects robmensching.com. 30.3.2024. Viitattu 31.3.2024. (englanniksi)
  12. Lasse Collin: Re: XZ for Java mail-archive.com. 19.5.2022. Viitattu 31.3.2024. (englanniksi)
  13. Lasse Collin: XZ Utils backdoor tukaani.org. Viitattu 31.3.2024. (englanniksi)
  14. a b Dan Goodin: What we know about the xz Utils backdoor that almost infected the world arstechnica.com. 1.4.2024. Viitattu 3.4.2024. (englanniksi)
  15. FAQ on the xz-utils backdoor gist.github.com. Viitattu 1.4.2024. (englanniksi)
  16. What is an indirect function (IFUNC)? sourceware.org. Viitattu 1.4.2024. (englanniksi)