XZ 사용법

XZ Utils
XZ 사용법
원저자라세 콜린
개발자투카니 프로젝트
안정적 방출
공급망 공격 조사 진행으로 인한 없음.
저장소
로 적음C
운영체제크로스 플랫폼
유형데이터 압축
면허증.퍼블릭 도메인.[1] (단 자세한 내용은 개발채택 참조)
웹사이트Wayback Machine보관된 2024-03-25
.xz
파일 이름 확장자
.xz
인터넷 미디어 유형
응용 프로그램/x-x-z
매직넘버FD 37 7A 58 5A 00
개발자라세 콜린
이고르 파블로프
초도출시2009년 1월 14일; 15년 전(2009-01-14)
최신 릴리스
1.1.0
2022년 12월 11일, 15개월 전(2022-12-11)
형식의 종류데이터 압축
오픈 포맷?네.
프리 포맷?네.
웹사이트Wayback Machine에서 2023-11-23 보관

XZ Utils(이전의 LZMA Utils)는 유닉스 계열 운영 체제와 마이크로소프트 윈도우 버전 5.0 이후부터는 lzma와 xz 프로그램을 포함한 자유 소프트웨어 명령줄 무손실 데이터 압축기 세트입니다. 압축/압축 해제에는 Lempel-Ziv-Markov 체인 알고리즘(LZMA)이 사용됩니다. XZ Utils는 Igor Pavlov의 LZMA-SDK의 유닉스 포트로 시작하여 유닉스 환경과 일반적인 구조 및 동작에 원활하게 맞도록 조정되었습니다.

특징들

대부분의 경우 xz는 gzipbzip2와 같은 대체 제품보다 더 높은 압축률을 달성합니다. 압축 해제 속도는 bzip2보다 빠르지만 gzip보다는 낮습니다. 압축은 gzip보다 훨씬 느릴 수 있고, 높은 수준의 압축을 위해 bzip2보다 느릴 수 있으며, 압축 파일이 여러 번 사용될 때 가장 유용합니다.[2][3]

XZ Utils는 두 가지 주요 구성 요소로 구성됩니다.

다음과 같은 다양한 명령 단축키가 존재합니다. lzma (for), unxz (for; 과 유사한) gunzip) 및 xzcat (for; 과 유사한) zcat)

XZ Utils는 xzlzma 파일 형식을 모두 압축하고 압축 해제할 수 있지만, LZMA 형식은 이제 레거시이므로 [4]XZ Utils는 기본적으로 xz로 압축합니다.

사용.

소프트웨어의 동작과 파일 형식의 속성은 모두 일반적인 유닉스 압축 도구 gzipbzip2와 유사하게 작동하도록 설계되었습니다.

gzip 및 bzip과 마찬가지로 xz 및 lzma는 입력으로 단일 파일(또는 데이터 스트림)만 압축할 수 있습니다. 여러 파일을 하나의 보관소에 묶을 수 없습니다. 이를 위해서는 먼저 타르와 같은 보관 프로그램이 사용됩니다.

아카이브 압축:

xz my_archive.tar #결과 my_archive.tar.xz lzma my_archive.tar #결과 my_archive.tar.lzma 

아카이브 압축 해제:

unxz my_archive.tar.xz #결과 my_archive.tar unlzma my_archive.tar.lzma #결과 my_archive.tar 

tar의 GNU 구현 버전 1.22 이상은 스위치를 사용하여 lzma 및 xz로 압축된 tarball을 투명하게 지원합니다. --xz 또는 -J xz 압축을 위해, 그리고 --lzma LZMA 압축을 위해.

아카이브 생성 및 압축:

tar -c --xz -f my_directory.tar.xz /some_directory # 결과로 my_archive.tar.xz tar -c --lzma -f my_archive.tar.lzma /some_directory # 결과로 my_archive.tar.lzma 

아카이브 압축 해제 및 해당 내용 추출:

tar -x --xz -f my_archive.tar.xz #로 인해 /some_directory tar -x --lzma -f my_archive.tar.lzma #로 인해 /some_directory가 발생합니다. 

압축을 사용하는 아카이브의 한 글자 타르 예제와 짧은 접미사를 사용하는 추출을 사용하는 압축 해제 예제:

tar tar Jf keep.txz keep # archive 다음 디렉토리 ./keep/파일로 압축합니다./keep.txz tar xJf keep.txz # 압축을 푼 다음 파일 압축을 푼 다음 디렉토리 ./keep.txz를 만듭니다./keep/ 

xz는 다중 threaded 압축을 지원합니다. -T flag)[5] 2014년 이후 버전 5.2.0.[6] 버전 5.4.0 이후 스레드 압축 해제가 구현되었습니다. 스레드 압축 해제에는 스트림 내에서 스레드 압축 인터페이스에 의해 생성되는 여러 압축 블록이 필요합니다.[5] 파일이 지정된 설정으로 스레드화하기에 충분히 크지 않거나 더 많은 스레드를 사용하면 메모리 사용량 제한을 초과할 경우 스레드 수가 정의된 것보다 적을 수 있습니다.[5]

xz 형식

xz 형식은 필터 전처리를 허용하여 lzma에서 향상됩니다. 7z의 필터는 LZMA SDK를 통해 퍼블릭 도메인에서 사용할 수 있기 때문에 사용되는 정확한 필터는 7z에서 사용되는 필터와 유사합니다.

개발 및 채택

XZ Utils의 개발은 한때 Slackware를 기반으로 리눅스 배포판을 유지했던 소규모 개발자 그룹에 의해 Mike Kezner가 주도한 Tukaani Project 내에서 이루어졌습니다.

xzliblzma의 모든 소스 코드공개 도메인에 공개되었습니다. XZ Utils 소스 배포판에는 GPL의 다양한 버전이 적용되는 일부 옵션 스크립트와 예제 프로그램이 추가로 포함되어 있습니다.[1]

특히 XZ Utils 소프트웨어와 함께 배포되는 GPL 스크립트 및 소스의 전체 목록은 다음과 같습니다.

  • 공통 libc 함수의 옵션 구현인 getopt(GNU LGPL v2.1)
  • pthread 탐지를 위한 m4 스크립트(GNU GPL v3)
  • 일부 비필수 래퍼 스크립트(xzgrep 등)(GNU GPL v2)
  • 그리고 빌드 시스템과 통합되지 않은 예제 프로그램 scanlzma.

선택적인 LGPL getopt 구현이 포함되지 않는 한 결과 소프트웨어 xz 및 liblzma 바이너리는 공개 도메인입니다.[7]

이진 파일은 FreeBSD, NetBSD, Linux 시스템, Microsoft WindowsFreeDOS에서 사용할 수 있습니다. 페도라, 슬랙웨어, 우분투, 데비안 등 수많은 리눅스 배포판은 소프트웨어 패키지를 압축하기 위해 xz를 사용합니다. 아치 리눅스는 이전에 xz를 사용하여 패키지를 압축했지만 [8]2019년 12월 27일 현재 Z 표준 압축으로 패키지를 압축합니다.[9] 페도라 리눅스는 또한 페도라 리눅스 31과[10] 함께 Z 표준으로 RPM 패키지를 압축하는 방식으로 전환했습니다. GNU FTP 아카이브도 xz를 사용합니다.

공급망 공격

2024년 3월 29일 오픈월의 OSS 보안 메일링 목록에 liblzma 코드가 잠재적으로 손상되었음을 보여주는 스레드가 게시되었습니다.[11] 스레드 작성자인 Andres Freund는 tar 파일구성 스크립트에 대한 추가를 통해 백도어 설정 코드에 추가된 압축 테스트 파일을 확인했습니다. 수사를 시작한 이유는 sshd 많은 양의 CPU를 사용하고 있었습니다.[12] 문제는 공통 취약성 노출 ID CVE-에서 추적됩니다.2024-3094, 백도어 공개 후 레드햇이 발행한 CVS(Common Vulnerability Scoring System)[13] 점수 10점(최고)

이 악성 코드는 버전 5.6.0과 5.6.1에 있는 것으로 알려져 있습니다. SSH 서버의 특정 타사 패치가 사용되지 않는 한 공격이 중지된 상태로 남아 있지만, 적절한 상황에서 이러한 간섭으로 인해 악의적인 행위자가 SSH 인증을 위반하고 원격으로 전체 시스템에 대한 무단 액세스 권한을 얻을 수 있습니다.[14] 악성 메커니즘은 악성 이진 코드가 포함된 두 개의 압축된 테스트 파일로 구성됩니다. 이러한 파일은 git 리포지토리에서 사용할 수 있지만 프로그램에 추출하여 주입하지 않는 한 휴면 상태로 유지됩니다.[15] 코드는 glibc를 사용합니다. IFUNC Open의 기존 기능을 대체하는 메커니즘SSH 호출됨 RSA_public_decrypt 악의적인 버전으로. OpenSSH는 일반적으로 liblzma를 로드하지 않지만 여러 리눅스 배포판에서 사용하는 일반적인 타사 패치로 인해 libsystemd를 로드하고 lzma를 로드합니다.[15] 수정된 버전의 build-to-host.m4 실제 주입을 수행하는 스크립트를 추출하는 GitHub에 업로드된 릴리스 tar 파일에 포함되어 있습니다. liblzma. 이 수정된 m4 파일은 git 저장소에 존재하지 않았습니다. git와는 별개로 유지 관리자가 공개한 tar 파일에서만 사용할 수 있었습니다.[15] 이 스크립트는 glibc 및 GCC를 사용하는 x86-64 Linux 시스템에서 시스템을 구축하고 dpkg 또는 rpm을 통해 구축할 때만 주입을 수행하는 것으로 나타납니다.[15] GitHub는 공급망 공격으로 인해 서비스 약관 위반으로 인해 XZ에 대한 저장소를 종료했습니다.[16] xz 프로젝트의 유지보수업체인 '지아T75'가 백도어를 추가했지만, 이 백도어가 유지보수업체가 의도적으로 설치한 것인지, 유지보수업체가 손상된 것인지는 확실하지 않습니다.[17]

영향을 받는 리눅스 배포판 목록에는 Debian 불안정테스트,[18] Fedora Rawwide,[19] Kali Linux [20]OpenSUSE Tumblewide 및 Zorin OS가 포함됩니다.[21] 안정적인 릴리스 업데이트 모델을 따르는 대부분의 리눅스 배포판은 이전 버전의 xz를 포함하고 있었기 때문에 영향을 받지 않았습니다.[15] Arch Linux는 사용자들이 즉시 업데이트할 수 있도록 조언을 제공했지만 Arch의 OpenSSH 패키지에는 백도어에 필요한 공통 타사 패치가 포함되어 있지 않다는 점도 언급했습니다.[22] 프리비SD는 모든 FreeB를 지원하므로 이 공격의 영향을 받지 않습니다.SD 릴리스에는 영향을 받는 릴리스 이전 버전인 xz가 포함되어 있으며 공격 대상은 Linux의 glibc입니다.[23]

참고문헌

  1. ^ a b tukaani.org라이센싱 "XZ Utils(예: liblzma)의 가장 흥미로운 부분은 퍼블릭 도메인에 있습니다. 퍼블릭 도메인 파트로 원하는 것을 무엇이든 할 수 있습니다. XZ Utils의 일부 부분(예: 빌드 시스템 및 일부 유틸리티)은 GNU LGPLv2.1, GNU GPLv2 또는 GNU GPLv3와 같은 다양한 자유 소프트웨어 라이센스 하에 있습니다."
  2. ^ Henry-Stocker, Sandra (2017-12-12). "How to squeeze the most out of Linux file compression". Network World. Retrieved 2020-02-09.
  3. ^ "Gzip vs Bzip2 vs XZ Performance Comparison". RootUsers. 2015-09-16. Retrieved 2020-02-09.
  4. ^ LZMA Utils, retrieved 2011-01-25
  5. ^ a b c "Linux Manpages Online - man.cx manual pages".
  6. ^ XZ Utils 릴리즈 노트
  7. ^ "In what cases is the output of a GPL program covered by the GPL too?". GNU.org. Retrieved 21 August 2019.
  8. ^ Pierre Schmitz (2010-03-23). "News: Switching to xz compression for new packages".
  9. ^ "Arch Linux - News: Now using Zstandard instead of xz for package compression". www.archlinux.org. Retrieved 2020-01-07.
  10. ^ Mach, Daniel. "Changes/Switch RPMs to zstd compression". Fedora Project Wiki. Retrieved 30 March 2024.
  11. ^ Freund, Andres (2024-03-29). "backdoor in upstream xz/liblzma leading to ssh server compromise". oss-security mailing list.
  12. ^ "A backdoor in xz". lwn.net. Retrieved 2024-03-30.
  13. ^ "NVD - CVE-2024-3094". nvd.nist.gov. Retrieved 2024-03-30.
  14. ^ "Urgent security alert for Fedora 41 and Rawhide users". www.redhat.com. Retrieved 2024-03-29.
  15. ^ a b c d e James, Sam. "xz-utils backdoor situation". Gist.
  16. ^ Larabel, Michael (29 March 2024). "GitHub Disables The XZ Repository Following Today's Malicious Disclosure". www.phoronix.com. Retrieved 31 March 2024.
  17. ^ Goodin, Dan (2024-03-29). "Backdoor found in widely used Linux utility breaks encrypted SSH connections". Ars Technica. Retrieved 2024-03-29.
  18. ^ "CVE-2024-3094". security-tracker.debian.org. Retrieved 2024-03-30.
  19. ^ "Urgent security alert for Fedora 41 and Fedora Rawhide users". www.redhat.com. Retrieved 2024-03-30.
  20. ^ "All about the xz-utils backdoor Kali Linux Blog". Kali Linux. 2024-03-29. Retrieved 2024-03-30.
  21. ^ "openSUSE addresses supply chain attack against xz compression library". openSUSE News. 2024-03-29. Retrieved 2024-03-30.
  22. ^ "Arch Linux - News: The xz package has been backdoored". archlinux.org. Retrieved 2024-03-30.
  23. ^ "Disclosed backdoor in xz releases - FreeBSD not affected". Retrieved 2024-03-30.

외부 링크