トップQs
タイムライン
チャット
視点

XZ Utils

データ圧縮ソフトウェア ウィキペディアから

Remove ads

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

概要 作者, 開発元 ...

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

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

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

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

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

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

Remove ads

実装

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

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

ちょうど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へ
Remove ads

開発と採用

要約
視点

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

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

特に、配布されている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英語版実装は統合されていない。[9]

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

サプライチェーン攻撃

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

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

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

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

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

Remove ads

関連項目

参考文献

外部リンク

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads