Skip to main content

XZ バックドア CVE-2024-3094

著者:
blog/feature-XZ_Backdoor

2024年3月31日

0 分で読めます

2024年3月29日、Linuxのソフトウェアライブラリliblzmaにバックドアを仕込むことでLinuxディストリビューションを介して複数のオペレーティングシステムにアクセスを試みる高リスクな投資と長期間に及ぶキャンペーンが悪意ある行為者によって実施され、その成功が目前とされました。しかし、好奇心旺盛なエンジニアが一つの不具合に気づいたのです。

現在知られている影響を受ける上流のソフトウェアと提案されている対応策:

Asset

Compromised version

Safe versions

CVE

xz

5.6.0 - 5.6.1

Downgrade to 5.4.6

CVE-2024-3094

liblzma

5.6.0 - 5.6.1

Downgrade to 5.4.6

CVE-2024-3094

XZとは?

XZ、別名XZ Utilsは、圧縮および解凍機能のためのコマンドラインインターフェースを提供し、Debian、Ubuntuなど多くのLinuxディストリビューションにバンドルされていることが多いです。

// Example usage of XZ for context:
$ xz llm_rag_context.json

// Results in a new compressed file on disk:
$ ls -al llm_tag_context.json.xz
.rw-r--r--   81k lirantal 31 Mar 10:29   -N  llm_tag_context.json.xz

Liblzmaとは?

Liblzma は、LZMA圧縮・解凍アルゴリズムを実装するソフトウェアライブラリで、 xz CLIプログラムなど、LZMA圧縮・解凍アルゴリズムを使用する他のプログラミング言語用のソフトウェアバインディングを提供します。

CVE-2024-3094 とは?

CVE-2024-3094は、2024年3月29日に公開され、liblzma パッケージにおいて重大性スコアは10.0です。

CVEレポートは、セキュリティリスクをliblzmaソフトウェアライブラリ内に発見された悪意のあるコードに起因しているとしています。このコードはライブラリのコードとインターフェースする際にデータの改変を可能にし、結果としてデータの完全性を損ない、より甚大な影響を引き起こす原因となりました。

XZ バックドアの影響は?

SSH プロトコルとそれに伴うLinux上のツールセットは、ホスト間の遠隔アクセスを可能にします。XZバックドアがデータの傍受と改変を許し、また一部のLinuxディストリビューションでSSHプログラムにliblzmaが利用可能になっているため、CVE-2024-3094に起因する影響の一つとして、sshd プログラムにおける認証バイパスが考えられます。

簡単に言うと、RSAキーを持っている人は、開かれておりバックドアが設置されたSSHサーバーに遠隔から認証することができます。

現在、XZバックドアによってリモートコード実行が可能になると推測されています。しかし、liblzmaに埋め込まれたバックドアコードを分析し、関与した悪意のある行為者に関連するすべての貢献をたどるための調査が現在も進行中です。

コンテクストを理解するためのタイムフレーム:

  • 悪意のあるビルドファイルは、2024年2月24日にDebianのxz-utilsに追加されました。

  • xz-utilsのターボールのバージョン5.6.0が2024年2月24日にリリースされ、バージョン5.6.1が2024年3月9日にリリースされました。

  • バージョン 5.6.0 は、2024年2月27日にFedoraに追加されました。

XZ バックドアの物語

2024年3月29日には重大なセキュリティ侵害が報告されました。Openwallのoss-securityメーリングリストに貢献するAndres Freundが、広く使用されているXZ utilsパッケージの一部である liblzmaライブラリ内の潜在的な妥協を公開しました。

これが発覚したのは、Freundがsshdプロセスによる異常に高いCPU使用率に気づき、それがより詳細な調査を促すことになった後のことです。

この問題の核心は、liblzmaのバージョン5.6.0および5.6.1内に組み込まれた悪意ある圧縮テストファイルにあります。これらは、tarファイルのconfigureスクリプトを変更することでバックドアを確立することを目的としていました。このエクスプロイトは通常の条件下では休眠状態にありますが、SSHサーバーの特定のパッチを使用しているシステムで活性化し、sshd 認証を回避して許可されていないリモートシステムへのアクセスを可能にします。

以下のスクリーンショットは、OpenwallのOSS-Securityメーリングリストに送られたAndresのXZマルウェア分析から取られました:

A screenshot demonstrating the impact of a backdoor that slows down the ssh program.

この洗練されたエクスプロイトは、GNU Cライブラリ(一般にglibcとして知られている)のIFUNCメカニズムを利用して、crc64_resolveメソッドのリゾルバを追加します。これにより、OpenSSH内のRSA_public_decrypt 関数を侵害されたものと置き換えるための監査フックをインストールします。通常、OpenSSHはliblzmaを必要としません。しかし、このエクスプロイトは、サードパーティのパッチが原因でlibsystemdがロードされ、それによって影響を受けるliblzma ソフトウェアライブラリが後からロードされる、チェーンローディングのシナリオを利用しています。この文章を書いている時点で、このバックドアはsystemdの通知を有効にするためにこのパッチを適用するLinuxディストリビューションの一部にのみ影響を与えており、 sshdのみが影響を受けます。

この攻撃の特に陰険な側面は、GitHubでホストされているtarリリースに修正された build-to-host.m4ファイルが導入されたことで、これはGitリポジトリには存在せず、したがってソースコントロールでその起源まで遡ることができませんでした。

このM4ビルドファイルは、特定のシステム上でのビルドプロセス中に悪意のあるコードを抽出し、注入します:glibcGCCを使用し、dpkg またはrpmを介してビルドされたx86-64 Linux プラットフォーム、これらはDebianとRed Hat Linuxディストリビューションで人気のあるパッケージビルドツールです。

この侵害の影響でGitHubは、利用規約違反でXZ utilsをホストしているリポジトリをアーカイブしました。バックドアの起源に関する調査は、xzプロジェクトのメンテナーであるJia Tanを指摘していますが、この行為が意図的だったのか、またはメンテナーのアカウントが侵害されたのかは依然として不明です。このメンテナーアカウントの実際の身元はまだ特定されていません。

このサプライチェーン攻撃は、Debian 13unstable、Fedora Rawhide、Fedora 40、Kali Linux、OpenSUSE Tumbleweedを含むいくつかのLinuxディストリビューションに影響を与え、Arch Linuxはユーザーに迅速な更新を促しています。特に、安定したリリース更新プロトコルに従っているほとんどのディストリビューションは、古い影響を受けていないXZバージョンを使用しているため、被害を免れました。また、FreeBSDは事前に発生したXZバージョンを含むおかげで、そして攻撃がLinuxのglibcを対象としていたため、影響を受けていません。その一方で、例えばFedoraやDebianから利用可能な最新の更新を使用してコンテナイメージのデプロイメントを自動化した場合、脆弱性のあるXZプログラムを配布してしまうことになります。

CVE-2024-3094として追跡され、最高の可能なCVSSスコア10で評価されたこの事件は、サプライチェーンのセキュリティの重要性と、オープンソースへの貢献の信頼と検証を取り巻く複雑さを浮き彫りにしています。

被害を取り消すために:XZ クリーンアップオペレーション

この話の展開を受けて、XZ UtilsライブラリのオリジナルメンテナであるLasse Collinは、ソフトウェアライブラリのビルド設定に対するソースコードの修正を急いでコミットしました。このコードの差分は、悪意のある行為者が自分たちのバックドアキャンペーンを実行するために行った、ずる賢く入念な作業を示しています。ドット(.)文字がビルドツールで失敗を引き起こし、セキュリティサンドボックスを無効にし、セキュリティコントロールをバイパスする原因となりました。

Lasse Collin git commit to revert the CMake build tool security bypass.

Snykを使用してXZの脆弱性を検出する方法

無料でSnykを使用してXZの脆弱性を検出する方法はいくつかあります。Snyk CLIを利用して、プロジェクトをローカルでテスト可能です。

  • アプリケーションの場合、Snyk CLIから snyk test --unmanaged を実行して、リポジトリ内の未管理の依存関係を比較し、個々のパッケージとその脆弱性を検出します。

  • コンテナの場合、サポートされているオペレーティングシステムのパッケージがXZの脆弱なバージョンに依存しているかどうかを検出するには、snyk container testを実行します。

すべてのGitリポジトリ内のプロジェクトを対象にスキャンを実行し、使用しているすべての直接および推移的な依存関係のレポートを提供することもできます。 

このレポートからは、XZに依存しているかどうか、および依存関係グラフ内のいくつのパスで使用されているかがわかります。すべてのプロジェクトを対象に、"CVE-2024-3094" を検索することもできます。 

サプライチェーンのセキュリティとオープンソースの接点

XZのバックドア事件は、オープンソースコミュニティやサイバーセキュリティコミュニティに波紋を広げ、オープンソースソフトウェアの信頼性や常に存在するサプライチェーン攻撃のリスクについての議論や懸念を引き起こしました。この事件は、SolarWindsの侵害やnpmやPyPIなどのソフトウェアレジストリで発見されたさまざまな悪意のあるパッケージを思い起こさせます。これは、グローバルなサイバーセキュリティに深刻な影響を与えるサプライチェーンの脆弱性のパターンを強調しています。

GitHubハンドルJiaT75として知られるJia Tanや、Jigar Kumar、Dennis Ensなどの関連する人物は、多くのLinuxディストリビューションで使用されている重要なソフトウェアユーティリティであるXZ Utilsに悪意のあるコードを埋め込むための洗練された数年にわたるキャンペーンを行ってきました。最初は穏やかな貢献から始め、プロジェクトのメンテナーに直接圧力をかけてコミットアクセスを獲得するという手法を用い、使用された戦術は狡猾でした。オープンソースコミュニティに固有の信頼と協力の性質を悪用するために、技術的および社会的なエンジニアリング技術を利用しました。

Jia TanがXZ Utilsに関与する背景は、libarchiveなど他のプロジェクトでの不審な活動から始まり、CVE-2024-3094の発見に至るまでの計画的な行動を複雑に描写しています。これらの行動は、テストインフラストラクチャの作成や、ifunc実装の誤用を通じて悪意の意図を曖昧にする意図的な試みを含め、計画的な思考と操作の冷酷なレベルを示しています。

この事件は、オープンソースソフトウェアの信頼性とセキュリティの持続可能性に関する重要な問題を提起しています。オープンソースの本質であるそのオープンさとコミュニティの貢献への依存性は、悪意のある行為者が侵入して害を与える意図を持つ場合、そのアキレス腱となります。この事件は、メンテナーがしばしば自らの時間と専門知識を提供してプロジェクトを安全かつ最新の状態に保つという膨大な圧力の中で、直面する重大なストレスとメンタルヘルスの課題も浮き彫りにします。

過去の事件との類似性、例えば大規模なSolarWindsの侵害や公共のソフトウェアリポジトリでの毒入りパッケージの継続的な流入といったものは無視できません。各事件は共通の要素を共有しており、それは信頼の悪用と現代のソフトウェア供給チェーンの複雑さです。これらの事件は、サイバー敵対者の洗練された手法と、私たちがますます依存するデジタルインフラストラクチャの固有の脆弱性を強力に思い起こさせます。

CVE-2024-3094や歴史的な先例を考慮すると、オープンソースコミュニティや広範なテクノロジー産業は、ソフトウェア開発や配布に関するセキュリティプラクティスを再評価し、強化する必要があります。これには、貢献の厳格な審査の強化、メンテナー向けのより堅牢な検証プロセスの実施、そしてセキュリティのベストプラクティスに関するより大きな協力の育成が含まれます。加えて、オープンソースプロジェクトの持続可能な資金提供モデルが急務です。これにより、メンテナーがソフトウェアを効果的にセキュリティ強化するためのリソースとツールを確保できます。

この事件やそれに類似する事件の余波を乗り越える際には、オープンソースの精神とセキュリティの必要性のバランスについて、オープンで批判的な議論を行うことが重要です。オープンソースソフトウェアやより広範なデジタルエコシステムの強靱性は、それを破壊しようとする者に対抗し、防御を強化するための私たちの集合的な能力に依存しています。

Jia Tanとは?それは個人なのか、それとも国家がスポンサーとなっているのか?他にどのようなプロジェクトに妥協し、バックドアを仕掛けた可能性があるのか?セキュリティの研究者や開発者は、Jia TanのGitのコミット活動、起源、タイムゾーンなどの足跡を積極的に追跡し、それらの情報をかき集めてパズルのピースを組み立てようとしています。

SBOM(ソフトウェア部品表)がCVE-2024-3094を緩和するのにどのように役立つか

  • ソフトウェア部品表(SBOM)は、トランジティブ依存関係を含め、ソフトウェアコンポーネントとバージョンについての可視性を提供します。

  • SBOMは、すべての影響を受けるプロジェクトが修正されることを確認するために、是正措置の進捗状況を追跡するのに役立ちます。

  • 更新された後、SBOMは必要なパッチや修正が正常に適用されたことを示すために使用できます。

次に何をすべきか?

  • Cybersecurity & Infrastructure Security Agency (CISA)によるtこのレポートのガイダンスに従って、CVE-2024-3094のアップデートを実施してください。

  • SnykのSBOMチェッカーを使用して、SBOMをテストしてください。

  • Dark Readingの最新情報をチェックしてみてください。