{{위키데이터 속성 추적}}
{{소프트웨어 정보
| author = Lasse Collin
| developer = The Tukaani Project
| latest release version = 현재 진행 중인 공급망 공격으로 인해 최신 버전이 나오지 않음
| latest release date = 
| programming language = [[C (프로그래밍 언어)|C]]
| operating system = [[크로스 플랫폼]]
| genre = [[데이터 압축]]
| license = [[퍼블릭 도메인 소프트웨어|퍼블릭 도메인]].<ref name="licensing">[https://tukaani.org/xz/ Licensing] on tukaani.org "The most interesting parts of XZ Utils (e.g. liblzma) are in the public domain. You can do whatever you want with the public domain parts. Some parts of XZ Utils (e.g. build system and some utilities) are under different free software licenses such as GNU LGPLv2.1, GNU GPLv2, or GNU GPLv3."</ref> (자세한 사항은 [[XZ Utils#개발|개발]] 문단 참고)
| website = <!--{{URL|https://tukaani.org/xz/}}{{깨진 링크|date=March 2024}}-->{{Web archive|url=https://web.archive.org/web/20240325040631/https://xz.tukaani.org/xz-utils/}}
}}
{{파일 포맷 정보|최신 버전=1.1.0|latest release version={{시작 날짜와 나이|2022|12|11}}|url=<!--{{URL|https://tukaani.org/xz/xz-file-format.txt}}{{깨진 링크|date=March 2024}}-->{{Web archive|url=https://web.archive.org/web/20231123141839/https://tukaani.org/xz/xz-file-format.txt}}}}

'''XZ Utils''' (이전 '''LZMA Utils''' )는 lzma 및 xz 프로그램을 포함해 [[유닉스 계열]] 운영 체제 및 [[마이크로소프트 윈도우]] 버전 5.0 이상에서 실행할 수 있는 [[자유 소프트웨어]] [[명령줄 인터페이스|명령줄]] [[비손실 압축]] 소프트웨어 모음이다. 압축/압축 풀기에는 [[LZMA|Lempel–Ziv–Markov 체인 알고리즘]] (LZMA)이 사용된다. XZ Utils는 Igor Pavlov 의 LZMA- [[소프트웨어 개발 키트|SDK]]를 유닉스 환경에 문제없이 실행되도록 이식한 버전으로 시작되었다

2024년 3월 29일, XZ Utils의 5.6.0 및 5.6.1 배포판에서 [[백도어|백도어가]] 발견되었다.

== 특징 ==
대부분의 경우 xz는 [[gzip]] 및 [[bzip2]] 와 같은 기능을 가진 다른 소프트웨어보다 더 높은 압축률을 달성한다. 압축 해제 속도는 bzip2보다 높지만 gzip보다 느리다. 압축은 gzip보다 훨씬 느릴 수 있고 높은 압축 수준의 경우 bzip2보다 느릴 수 있으며 압축 파일을 여러 번 사용할 때 가장 유용하다.<ref>{{웹 인용|url=https://www.networkworld.com/article/3240938/how-to-squeeze-the-most-out-of-linux-file-compression.html|제목=How to squeeze the most out of Linux file compression|성=Henry-Stocker|이름=Sandra|날짜=2017-12-12|웹사이트=Network World|언어=en|확인날짜=2020-02-09}}</ref><ref>{{웹 인용|url=https://www.rootusers.com/gzip-vs-bzip2-vs-xz-performance-comparison/|제목=Gzip vs Bzip2 vs XZ Performance Comparison|날짜=2015-09-16|웹사이트=RootUsers|언어=en-US|확인날짜=2020-02-09}}</ref>

XZ Utils는 두 가지 주요 구성 요소로 구성되어있다.

* 명령줄 압축 및 압축 해제 소프트웨어 xz
* [[Zlib]]와 유사한 [[API]]를 가진 [[라이브러리 (컴퓨팅)|소프트웨어 라이브러리]] '''liblzma'''

{{Code|lzma}} ( {{개행 금지|{{code|xz --format{{=}}lzma}}}} 의 경우), {{Code|unxz}} ( {{개행 금지|{{code|xz --decompress}}}} 의 경우 {{Code|gunzip}} 과 유사) 및 {{Code|xzcat}} ( {{개행 금지|{{code|unxz --stdout}}}} 의 경우 {{Code|zcat}} 과 유사)와 같은 다양한 명령 단축키가 존재한다.

XZ Utils는 ''xz'' 및 ''lzma'' 파일 형식을 모두 압축하고 압축을 풀 수 있지만 LZMA 형식은 이제 [[레거시 시스템|레거시]]이므로  XZ Utils는 기본적으로 xz로 압축하도록 설정되어있다.

== xz 형식 ==
xz 형식은 필터 전처리를 허용하여 lzma를 개선한 압축 파일 형식으로,  [[7z]] 필터는 LZMA SDK를 통해 퍼블릭 도메인으로 공개되어 있는 [[7z]] 필터와 유사하다.

== 개발 ==
XZ Utils의 개발은 마이크 케즈너가 이끄는 한때 [[슬랙웨어]] 기반 [[리눅스 배포판]]을 관리했던 소규모 개발자 그룹인  Tukaani 프로젝트 내에서 이루어졌다.

'''xz''' 및 '''liblzma'''의 모든 [[소스 코드]]는 [[퍼블릭 도메인]]으로 공개되어있으나, 몇몇 스크립트에는 [[GNU 일반 공중 사용 허가서]] 또는 [[GNU 약소 일반 공중 사용 허가서]]가 적용되어있다.

XZ Utils 소프트웨어와 함께 배포되는 [[GNU 일반 공중 사용 허가서]]가 적용된 스크립트 및 소스의 전체 목록은 다음과 같다:

* libc 함수인 getopt ( [[GNU 약소 일반 공중 사용 허가서|GNU LGPL v2.1]] )의 선택적 구현
* pthread 감지를 위한 [[M4 (프로그래밍 언어)|m4]] 스크립트( [[GNU 일반 공중 사용 허가서|GNU GPL v3]] )
* 일부 중요하지 않은 래퍼 스크립트(xzgrep 등)( [[GNU 일반 공중 사용 허가서|GNU GPL v2]] )
* 그리고 빌드 시스템과 통합되지 않은 예제 프로그램 scanlzma

LGPL getopt 구현이 통합한 것을 사용하지 않는 한  xz 및 liblzma 바이너리는 퍼블릭 도메인으로 사용할 수 있다

바이너리는 [[FreeBSD]], [[NetBSD]], [[리눅스]] 시스템, [[마이크로소프트 윈도우]] 및 [[프리도스]]에서 사용할 수 있다. [[페도라 리눅스|페도라]], [[슬랙웨어]], [[우분투]] 및 [[데비안]]을 포함한 다수의 [[리눅스 배포판]]에서는 소프트웨어 패키지를 압축하기 위해 xz를 사용하고 있다. [[아치 리눅스]]는 이전에 xz를 사용하여 패키지를 압축했지만<ref>{{웹 인용|url=https://www.archlinux.org/news/switching-to-xz-compression-for-new-packages/|제목=News: Switching to xz compression for new packages|성=Pierre Schmitz|날짜=2010-03-23}}</ref> 2019년 12월 27일 현재 패키지는 [[Z표준|Zstandard]]를 사용해 압축하고 있다.<ref>{{웹 인용|url=https://www.archlinux.org/news/now-using-zstandard-instead-of-xz-for-package-compression/|제목=Arch Linux - News: Now using Zstandard instead of xz for package compression|웹사이트=www.archlinux.org|확인날짜=2020-01-07}}</ref> 페도라 리눅스 또한 페도라 리눅스 31 버전부터 RPM 패키지를 Zstandard로 압축하는 방식으로 전환했다<ref>{{웹 인용|url=https://fedoraproject.org/wiki/Changes/Switch_RPMs_to_zstd_compression|제목=Changes/Switch RPMs to zstd compression|성=Mach|이름=Daniel|웹사이트=Fedora Project Wiki|확인날짜=30 March 2024}}</ref> [[GNU]] FTP 아카이브도 xz를 사용하고 있다.

== 공급망 공격 ==
2024년 3월 29일, Openwall의 oss-security [[메일링 리스트]]에 liblzma 코드에 취약점이 삽입되었다는 것을 알리는 스레드가 게시되었다.<ref name="Freund">{{웹 인용|url=https://www.openwall.com/lists/oss-security/2024/03/29/4|제목=backdoor in upstream xz/liblzma leading to ssh server compromise|성=Freund|이름=Andres|날짜=2024-03-29|출판사=oss-security mailing list}}</ref> 스레드 작성자인 Andres Freund는 <code>[[시큐어 셸|sshd]]</code>가 많은 양의 [[중앙 처리 장치|CPU]]를 사용하고 있다는 것을 알고 원인을 찾던 중<ref>{{웹 인용|url=https://lwn.net/Articles/967194/|제목=A backdoor in xz|웹사이트=lwn.net|출판사=|확인날짜=2024-03-30}}</ref> [[Tar (파일 포맷)|tar 파일]]의 [[Configure|구성 스크립트]] 추가를 통해 [[백도어]] 설정 코드 삽입하는 압축 테스트 파일을 찾아냈다.   이 취약점의 CVE ID는 레드햇이 발행한 {{CVE|2024-3094}}이며, 취약점 위험 지수는 10점 만점에 10점이다.

해당 악성코드가 포함된 버전은 5.6.0, 5.6.1인 것으로 알려져 있다. SSH 서버의 특정 서드 파티 패치를 사용하지 않는 한 [[취약점 공격|취약점]]은 작동되지 않지만, 아닐 경우 잠재적으로 악의적인 행위자가 sshd [[인증 프로토콜|인증]]을 깨고 원격으로 전체 시스템에 대한 무단 액세스 권한을 얻을 수 있다.<ref>{{웹 인용|url=https://www.redhat.com/en/blog/urgent-security-alert-fedora-41-and-rawhide-users|제목=Urgent security alert for Fedora 41 and Rawhide users|웹사이트=www.redhat.com|언어=en|확인날짜=2024-03-29}}</ref> 침투 메커니즘은 악성 바이너리 코드가 포함된 두 개의 압축 테스트 파일로 구성되어 있으며, 파일들은 [[깃 (소프트웨어)|git 저장소]]에 공개되어 있지만 프로그램에 삽입하지 않는 한 휴면 상태로 유지된다.<ref name="SamJames" /> 이 코드는 [[glibc]] <code>IFUNC</code> 기능을 사용하여 {{Code|RSA_public_decrypt}} 라는 [[오픈SSH|OpenSSH]]의 기존 함수를 악성코드 버전으로 대체한다. OpenSSH는 일반적으로 liblzma를 로드하지 않지만, 여러 리눅스 배포판에서 사용하는 일반적인 서드 파티 [[패치 (컴퓨팅)|패치]]로 인해 [[Systemd|libsystemd]]가 로드되고, 이를 통해 lzma가 로드된다.<ref name="SamJames" />[[깃허브]]에 업로드된 릴리스 버전 소스코드 tar에는 {{Code|liblzma}}에 백도어 삽입을 수행하는 스크립트인  {{Code|build-to-host.m4}} 의 수정된 버전이 포함되었다. 이 수정된 [[M4 (프로그래밍 언어)|m4]] 파일은 git 저장소에 없었지만, git과 별도로 관리자가 릴리스한 [[Tar (파일 포맷)|tar 파일]]에만 존재했다.<ref name="SamJames"></ref> 스크립트는 시스템이 glibc 및 [[GNU 컴파일러 모음|GCC]]를 사용하고 [[dpkg]] 또는 [[RPM 패키지 매니저|rpm]]을 통해 구축되는 [[x86-64]] 리눅스 시스템에만 취약점을 삽입하는 것으로 나타났다.<ref name="SamJames" /> 깃허브는 공급망 공격으로 인해 XZ 저장소를 서비스 약관 위반을 이유로 코드를 사이트에서 내렸다.<ref>{{웹 인용|url=https://www.phoronix.com/news/GitHub-Disables-XZ-Repo|제목=GitHub Disables The XZ Repository Following Today's Malicious Disclosure|성=Larabel|이름=Michael|날짜=29 March 2024|웹사이트=www.phoronix.com|언어=en|확인날짜=31 March 2024}}</ref> 백도어는 xz 프로젝트의 관리자인 "JiaT75"에 의해 추가되었지만 이 백도어가 관리자가 의도적으로 삽입한 것인지, 아니면 관리자 계정이 해킹 된 것인지는 현재 확실하지 않다.<ref>{{웹 인용|url=https://arstechnica.com/security/2024/03/backdoor-found-in-widely-used-linux-utility-breaks-encrypted-ssh-connections/|제목=Backdoor found in widely used Linux utility breaks encrypted SSH connections|성=Goodin|이름=Dan|날짜=2024-03-29|웹사이트=Ars Technica|언어=en-us|확인날짜=2024-03-29}}</ref>

영향을 받는 리눅스 배포판 목록에는 [[데비안|데비안 불안정 및 테스트 버전]],<ref>{{웹 인용|url=https://security-tracker.debian.org/tracker/CVE-2024-3094|제목=CVE-2024-3094|웹사이트=security-tracker.debian.org|확인날짜=2024-03-30}}</ref> [[페도라 리눅스|Fedora Rawhide]],<ref>{{웹 인용|url=https://www.redhat.com/en/blog/urgent-security-alert-fedora-41-and-rawhide-users|제목=Urgent security alert for Fedora 41 and Fedora Rawhide users|웹사이트=www.redhat.com|언어=en|확인날짜=2024-03-30}}</ref> [[칼리 리눅스]],<ref>{{웹 인용|url=https://www.kali.org/blog/about-the-xz-backdoor/|제목=All about the xz-utils backdoor {{!}} Kali Linux Blog|날짜=2024-03-29|웹사이트=Kali Linux|언어=English|확인날짜=2024-03-30}}</ref> 및 [[오픈수세|오픈수세 텀블위드]]<ref name=":0">{{웹 인용|url=https://news.opensuse.org/2024/03/29/xz-backdoor/|제목=openSUSE addresses supply chain attack against xz compression library|날짜=2024-03-29|웹사이트=openSUSE News|언어=en|확인날짜=2024-03-30}}</ref> 및 Zorin OS 등이 있다. 안정적인 릴리스 업데이트 모델을 따르는 대부분의 리눅스 배포판은 이전 버전의 xz를 탑재하고 있었기 때문에 영향을 받지 않았다.<ref name="SamJames">{{웹 인용|url=https://gist.github.com/thesamesam/223949d5a074ebc3dce9ee78baad9e27|제목=xz-utils backdoor situation|성=James|이름=Sam|웹사이트=Gist|언어=en}}</ref> [[아치 리눅스|Arch 리눅스는]] 사용자에게 즉시 업데이트하라는 권고를 발표했지만 Arch의 OpenSSH 패키지에는 백도어에 실행되는 데 필요한 서드파티 패치가 포함되어 있지 않다는 점도 언급했다.<ref>{{웹 인용|url=https://archlinux.org/news/the-xz-package-has-been-backdoored/|제목=Arch Linux - News: The xz package has been backdoored|웹사이트=archlinux.org|확인날짜=2024-03-30}}</ref>  현재 지원되는 모든 FreeBSD 릴리스에는 영향을 받는 릴리스보다 이전 버전의 xz가 포함되어 있었으며, 공격은 리눅스의 glibc를 대상으로 하기 때문에 [[FreeBSD]]는 이 공격의 영향을 받지 않는다.<ref>{{웹 인용|url=https://lists.freebsd.org/archives/freebsd-security/2024-March/000248.html|제목=Disclosed backdoor in xz releases - FreeBSD not affected|확인날짜=2024-03-30}}</ref>

== 각주 ==
{{각주}}

== 외부 링크 ==
* {{웹아카이브|url=https://web.archive.org/web/20240325040631/https://xz.tukaani.org/xz-utils/|title=Official Website}}
* [[sourceforge:projects/lzmautils/|SourceForge project page]]

{{압축 소프트웨어}}

[[분류:유닉스 보관 및 압축 관련 유틸리티]]
[[분류:C로 작성된 자유 소프트웨어]]
[[분류:자유 압축 소프트웨어]]
[[분류:웹아카이브 틀 웨이백 링크]]