XZ Utils

XZ Utils
作者 Lasse Collin
開発元 The Tukaani Project
最新版
5.6.2 / 2024年5月29日
リポジトリ ウィキデータを編集
プログラミング
言語
C言語
対応OS クロスプラットフォーム
種別 データ圧縮
ライセンス パブリックドメインソフトウェア.[1] (詳細は#開発と採用を参照)
公式サイト https://tukaani.org/xz
テンプレートを表示

XZ Utils(以前のLZMA Utils)はフリーコマンドライン可逆圧縮ソフトウェアのセットであり、LZMAxzを含んでいる。Unix系オペレーティングシステムおよび、バージョン5.0以降はWindowsにも対応している。

xzはgzipbzip2のような代替ソフトウェアよりもより高い圧縮率になる。 伸長速度はbzip2より速いが、gzipよりも遅い。圧縮はgzipよりもだいぶ遅くなることがあり、高圧縮ではbzip2よりも遅い。圧縮されたファイルが頻繁に使われるときに最も有用となる。[2][3]

XZ Utilsは大まかに2つの構成要素からなる。

  • xz。コマンドラインの圧縮・伸長ソフトウェア(gzipに類似している)
  • liblzmazlibに似たAPIを持つライブラリ

様々なコマンドラインのショートカットがある。例えばlzmaxz --format=lzma)、unxzxz --decompressgunzipに類似している)、そしてxzcatunxz --stdoutzcatに類似している)。

XZ Utilsはxzlzmaファイル形式の両方を圧縮・伸長できるが、LZMA形式は今やレガシー[4]であるため、 XZ Utilsはxz形式をデフォルトとして圧縮する。

2024年3月29日、本ソフトウェアのバージョン5.6.0と5.6.1に、悪意を持って仕掛けられたバックドアが発見された[5]。下記#サプライチェーン攻撃参照。

実装

[編集]

ファイル形式の性質と同じようにソフトウェアの振る舞いもまた、Unix圧縮ツールのgzipbzip2に似た動作になるように設計されている。これはIgor PavlovのLZMA-SDKのUnix移植版から構成されており、Unix環境とその通常の構造と振る舞いに対してシームレスに組み込むためになじむようにされている。

xzは2014年のバージョン5.2.0以降、[6]マルチスレッド圧縮をサポートしている(-Tフラグ)。[7]2019年時点ではスレッド化された伸長はまだ実装されていない。[7]ファイルがスレッドに対して与えられた設定よりも十分に大きくはないか、あるいは使用しているスレッドがメモリ使用制限を超過しているならば、定義されているよりも少ないスレッド数になることがありうる。[7]

ちょうどgzipとbzipのように、xzとlzmaは入力として単一のファイル(またはデータストリーム)を圧縮することしかできない。複数のファイルを単一のアーカイブへ束ねることはできない。それをするためには、最初にtarのようなアーカイブするプログラムを使用する。

アーカイブを圧縮する:

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以降ではtarballのlzmaやxzへの透過的な圧縮をサポートしており、xz圧縮については--xzまたは-J、LZMA圧縮では--lzmaスイッチが使用できる。

アーカイブを作成して圧縮する:

tar -c --xz   -f my_archive.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へ

開発と採用

[編集]

XZ Utilsの開発はTukaani Projectで行われている。Mike KeznerをリーダーとしてかつてSlackwareをベースとしたLinuxディストリビューションをメンテナンスしていた小さなグループだった。

xzliblzmaのすべてのソースコードパブリックドメインでリリースされている。XZ Utilsソースコード配布物は、付加的に、複数のGPLバージョンの対象となる、いくつかのオプションスクリプトとサンプルプログラムを含んでいる。[1]

特に、配布されているXZ Utilsソフトウェアが含んでいるGPLスクリプトとソースコードの一覧は以下のとおりである。

  • 一般的なlibc関数であるgetopt英語版のオプション実装(GNU GPL v2GNU LGPL v2.1
  • pthreadを検出するm4スクリプト(GNU GPL v3
  • いくつかの必須でないラッパースクリプト(xzgrepなど)(GNU GPL v2
  • そしてサンプルプログラムscanlzma。これはビルドシステムに統合されていない。

結果としてxzとliblzmaのバイナリはパブリックドメインだが、例外的にオプションのLGPL getopt英語版実装は統合されていない。[8]

バイナリはFreeBSDLinuxシステム、Microsoft Windows、そしてFreeDOSで利用できる。FedoraSlackwareUbuntu、そしてDebianを含む多くのLinuxディストリビューションがソフトウェアパッケージの圧縮にxzを使用している。Arch Linuxは以前はパッケージの圧縮にxzを使用していたが、[9]2019年12月27日以降は、パッケージはZstandardで圧縮されている[10]GNUのFTPアーカイブもまたxzを使用している。

サプライチェーン攻撃

[編集]

2024年3月29日、liblzmaのコードにバックドアが仕掛けられている可能性があることがOpenwall英語版のセキュリティメーリングリストにて報告された[5]。報告者であるAndres Freundは、sshdのCPU使用率が異常であることに気が付き、その原因を突き止めるべく調査を開始したところ[11]、liblzmaにテスト用として追加されたtarballがバックドアのセットアップに使用されていることを突き止めた。この問題はレッドハットによってCVE識別番号 CVE-2024-3094として登録された[12]。問題のコードは、2024年2月24日頃に挿入された[13]

本脆弱性により、一部の環境において悪意のある者がsshdの認証を突破し遠隔でシステムにアクセスできるようになる可能性がある[14][15]。この悪意のあるコードはバージョン5.6.0と5.6.1に含まれていることが知られている[15]

このバックドアの影響を受けるLinuxディストリビューションにはDebian unstable[16]Arch Linux[17]Fedora Rawhide[18]Kali Linux[19]openSUSE Tumbleweed[20]が含まれている。Red Hat Enterprise Linux[21]SUSE Linux Enterprise[20]Amazon Linux[22]はこのバックドアの影響を受けないことが確認されている。またArch Linuxでは、バックドアに必要なOpenSSHがlibsystemdをロードするためのパッチを採用していないため本脆弱性の影響を受けないとされるが、速やかなアップデートの実施を呼びかけている[23]

FreeBSDは、この攻撃がLinuxを対象としていること、及び現在サポートされているすべてのリリースが本脆弱性を含むバージョンより以前のものを採用していることから、本脆弱性の影響を受けないとしている[24]

その後の調査で、攻撃者は約3年をかけてプロジェクト内での重要な立場を手に入れていたことが判明した[25]。元アメリカ国家安全保障局のハッカーであるDave Aitelは、この攻撃パターンはロシア対外情報庁のハッカーとみられているAPT29英語版によるものと非常によく似ていると主張した[26]

関連項目

[編集]

参考文献

[編集]
  1. ^ a b 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."
  2. ^ Henry-Stocker, Sandra (2017年12月12日). “How to squeeze the most out of Linux file compression” (英語). Network World. 2020年2月9日閲覧。
  3. ^ Gzip vs Bzip2 vs XZ Performance Comparison” (英語). RootUsers (2015年9月16日). 2020年2月9日閲覧。
  4. ^ LZMA Utils, https://tukaani.org/lzma/ 2011年1月25日閲覧。 
  5. ^ a b Freund, Andres (2024年3月29日). “backdoor in upstream xz/liblzma leading to ssh server compromise”. oss-security mailing list. 2024年3月30日閲覧。
  6. ^ https://git.tukaani.org/?p=xz.git;a=blob;f=NEWS;hb=HEAD
  7. ^ a b c https://man.cx/xz
  8. ^ In what cases is the output of a GPL program covered by the GPL too?”. GNU.org. 21 August 2019閲覧。
  9. ^ Pierre Schmitz (2010年3月23日). “News: Switching to xz compression for new packages”. 2020年2月29日閲覧。
  10. ^ Arch Linux - News: Now using Zstandard instead of xz for package compression”. www.archlinux.org. 2020年1月7日閲覧。
  11. ^ A backdoor in xz”. lwn.net. 2024年3月30日閲覧。
  12. ^ NVD - CVE-2024-3094”. nvd.nist.gov. 2024年3月30日閲覧。
  13. ^ XZ Utilsに悪意のあるコードが挿入された問題(CVE-2024-3094)について”. JPCERT/CC. 2024年9月18日閲覧。
  14. ^ Urgent security alert for Fedora 41 and Rawhide users” (英語). www.redhat.com. 2024年3月29日閲覧。
  15. ^ a b XZ Utilsに悪意のあるコードが挿入された問題(CVE-2024-3094)について”. JPCERT/CC (2024年4月1日). 2024年4月14日閲覧。
  16. ^ CVE-2024-3094”. security-tracker.debian.org. 2024年3月30日閲覧。
  17. ^ Arch Linux - News: The xz package has been backdoored”. archlinux.org. 2024年3月30日閲覧。
  18. ^ Urgent security alert for Fedora 41 and Fedora Rawhide users” (英語). www.redhat.com. 2024年3月30日閲覧。
  19. ^ All about the xz-utils backdoor | Kali Linux Blog” (English). Kali Linux (2024年3月29日). 2024年3月30日閲覧。
  20. ^ a b openSUSE addresses supply chain attack against xz compression library” (英語). openSUSE News (2024年3月29日). 2024年3月30日閲覧。
  21. ^ cve-details”. access.redhat.com. 2024年3月30日閲覧。
  22. ^ CVE-2024-3094” (英語). Amazon Web Services, Inc.. 2024年3月30日閲覧。
  23. ^ Arch Linux - News: The xz package has been backdoored”. archlinux.org. 2024年3月30日閲覧。
  24. ^ Disclosed backdoor in xz releases - FreeBSD not affected”. 2024年3月30日閲覧。
  25. ^ What we know about the xz Utils backdoor that almost infected the world” (英語). Ars Technica (1 April 2024). 1 April 2024時点のオリジナルよりアーカイブ1 April 2024閲覧。
  26. ^ Greenberg, Andy. “The Mystery of 'Jia Tan,' the XZ Backdoor Mastermind”. Wired. オリジナルの3 April 2024時点におけるアーカイブ。. https://web.archive.org/web/20240403141041/https://www.wired.com/story/jia-tan-xz-backdoor/ 3 April 2024閲覧。. 

外部リンク

[編集]