ソフトウェア

XZ Utilsにバックドア攻撃が行われるまでのタイムラインまとめ


2024年3月29日に、圧縮ツールの「XZ Utils」に、悪意のあるバックドアが仕込まれていたことが明らかになりました。どのようにバックドアが仕掛けられたのかについて、Googleのエンジニアであるラス・コックスさんが時系列順にまとめました。

research!rsc: Timeline of the xz open source attack
https://research.swtch.com/xz-timeline


XZ Utilsおよび設置されていたバックドアについては下記の記事で解説しています。

Red HatやDebianなどLinuxディストリビューションの組込み圧縮ツール「XZ Utils」に悪意のあるバックドアが仕掛けられていたことが発覚 - GIGAZINE


XZ Utilsへの攻撃を行った「Jia Tan」という名前の攻撃者は2021年後半ごろから数年に渡ってXZ Utilsへの熱心なコントリビューターとして活動し、最終的にはコミットアクセスおよびメンテナシップを付与されました。Jia Tanはその権限を利用して慎重に隠されたバックドアをXZ Utilsへ設置し、ターゲットシステム上で任意のコマンドを実行できるようにしました。

◆2021年10月29日
Jia Tanが最初の無害なパッチをxz-develメーリングリストに送信しました。

◆2021年11月29日~2022年04月19日
Jia Tanはこの期間中、いくつもの無害なパッチを送信しています。

◆2022年4月22日
「Jigar Kumar」という名前の人物がJia Tanのパッチが配信されないことについての苦情メールを送信。

◆2022年5月19日
XZ Utilsのメンテナであるラッセ・コリン氏が遅さを謝罪しました。「私のリソースがあまりにも限られており、長期的には何かを変える必要がある」としてJia Tanへの権限委譲をほのめかしました。

◆2022年5月27日・2022年6月7日
Jigar Kumarがパッチの遅れについての苦情メールを送信。「新しいメンテナが現れるまで何も進みません。現在のメンテナは興味を失っておりもうメンテナンスを行うつもりがありません」と述べました。

◆2022年6月8日
コリン氏は「興味を失ったわけではありませんが、主に長期にわたる精神的健康上の問題が原因で、私のケア能力はかなり制限されています」と反論した上で、「最近、私はXZ UtilsでJia Tanと少し仕事をしましたが、おそらく将来的には彼がより大きな役割を果たすことになる」とJia Tanを高く評価していることを伝えました。

◆2022年6月10日
コリン氏がgitメタデータの作成者がJia Tanである最初のコミットをマージ。

◆2022年6月14日
Jugar Kumarが「現在のスピードでは今年5.4.0がリリースされるかどうかは疑わしいものだ。メンテナを変更するのに5.4.0まで待つ必要はありません。リポジトリが必要とする行為をなぜ遅らせる必要があるのでしょうか?」と再び圧力をかけるメールを送信しました。

◆2022年6月21日
Dennis Ensと名乗る人物が「あなたの精神的健康問題については残念ですが、自分自身の限界を認識することが重要です。これが投稿者全員の趣味のプロジェクトであることは理解していますが、コミュニティはそれ以上のことを望んでいます」と述べ、XZ for JavaかXZ for Cのどちらかのメンテナシップを他人に移譲することを提案しました。

◆2022年6月22日
Jigar Kumarが「進展はありますか?最近のコミットがあるみたいですが、なぜ自分でコミットできないのでしょうか?」とコリン氏にメールで圧力をかけました。


◆2022年6月29日
コリン氏が「Jia Tanは実質的にすでに共同メンテナだ」と述べた上で、「XZ Utilsにおいてメンテナシップの変更が進行中です」とメールしました。

◆Jia Tanがメンテナに就任
この期間のどこかでJia Tanがメンテナンス権限を取得しました。

なお、Jigar Kumar氏とDennis Ens氏はともに「nameNNN@mailhost」という形式のメールアドレスを使用しており、さらにこのメールアドレスはインターネットの他のどの場所にも現れていなかったとのこと。今回時系列の分析を行ったコックス氏は「おそらくこの2人はコリン氏にJia Tanにもっとコントロールを与えるよう促すために作られた偽物だったと思われる」と述べています。

◆2022年9月27日~
Jia Tanが5.4.0のリリース概要を説明するなど、メンテナとしての活動を開始。

◆2023年6月22日
Hans Jansenと名乗る人物が起動時に高速CRC関数を選択するために「GNU indirect function」機能を使用するパッチを送信しました。この変更はグローバル関数テーブルが読み取り専用で再マップされる前にバックドアコードがグローバル関数テーブルを変更するためのフックを提供するものです。このパッチはコリンの手が加えられた後、Jia Tanによってマージされました。

◆2023年7月7日
Jia Tanは「ifuncはアドレスサニタイザーと互換性がない」としてoss-fuzzビルド中のifuncサポートを無効化しました。この変更自体は無害な可能性が高いものの、後でifuncを使用するための基礎となりました。

◆2024年1月19日
Jia TanがウェブサイトをGitHub Pagesへ移動し、XZ Uitlsのウェブページを制御できるようにしました。

◆2024年2月23日・攻撃開始
Jia Tanはいくつかのバイナリテスト入力ファイル内にバックドアバイナリコードを隠してマージしました。バイナリテスト入力ファイルの多くは16進数エディタを使用して手動で作成されており、じっくりとはレビューされません。Jia Tanはこれを利用したとのこと。

◆2024年2月24日
Jia Tanがv5.6.0をタグ付けしてビルドし、バックドアを追加するbuild-to-host.m4を含むxz-5.6.0.tar.gzを公開しました。このm4ファイルはソースリポジトリに存在しないものの、他の多くの正規ファイルもパッケージ化の際に追加されるため、このこと自体は疑わしいものではありません。ただし、スクリプトはバックドアを追加するために変更されていました。

また同日、Gentooのバグ報告へ5.6.0のクラッシュが報告されました。ただしこのバグはバックドアのバグではなく、Hans Jansenによるifuncの変更によって引き起こされたバグの可能性が高いとのこと。

◆2024年2月26日・28日
Debianがxz-utils 5.6.0-0.1およびxz-utils 5.6.0-0.2を不安定版に追加しました。

◆2024年2月28日
Jia Tanはプロセス単位のアクセス制御機構であるLandlockのサポートをチェックするためのプログラムにタイプミスを追加し、常にLandlockのサポートがないと判定されるようにしました。

◆2024年2月29日
GitHubでliblzmaのlibsystemdへのリンクを停止するプルリクエストが送信されました。今回のバックドアはliblzmaが入り口となっており、この変更によって攻撃が防止されるため、攻撃者のスケジュールが早められた可能性があるとのこと。

◆2024年3月4日
RedHatディストリビューションにおいて今回のバックドアの入り口となっているliblzmaの_get_cpuidでValgrindエラーが発生し始めました。Linuxディストリビューションがこのエラーについて深く掘り下げる前に修正する競争でした。


◆2024年3月5日
libsystemdへのリンクを停止するプルリクエストがマージされ、liblzmaが削除されました。ディストリビューションがアプローチを完全に破壊する前にliblzmaにバックドアを導入するという別の競争が始まりました。

同日、Jia Tanが2つのifuncバグ修正をコミットしました。この2つの修正は本当のifuncバグに対する正当な修正の模様です。

◆2024年3月8日
Jia TanがValgrindの修正と称する内容をコミットしました。「方向性は間違っていたものの効果的」とコックス氏は分析しています。

◆2024年3月9日
Jia Tanが更新されたバックドアファイルをコミットし、攻撃コードを含む2つのテストファイルを変更しました。また、Jia Tanはv5.6.1をビルドし、新しいバックドアを含むxz 5.6.1ディストリビューションを公開しました。

◆2024年3月20日
コリン氏がカーネル内のxz圧縮コードの管理者にJia Tanを追加するパッチをLinuxカーネルメーリングリストに送信しました。コリン氏が悪意のある行為を行ったという兆候はなく、単純に単独のメンテナとしての自分への参照を修正しただけとのこと。

◆2024年3月25日
かつてifuncのコードを更新したHans Jansenが戻ってきて、xz-utilsを5.6.1に更新するためにDebianにバグを報告しました。2022年の「圧力キャンペーン」の時と同様に、インターネットの他の場所に存在しない「name###@mailhost」という形式のメールアドレスを持つユーザーが多数擁護の投稿を行いました。

◆2024年3月28日
Jia Tanはxz-utilsを5.6.1にアップデートするためにUbuntuのバグを報告しました。

◆2024年3月28日・攻撃発覚
アンドレス・フロイント氏がバグを発見し、Debianとdistros@openwallに非公開で通知しました。RedHatはCVE-2024-3094を割り当てました。Debianは5.6.1をロールバックし、5.6.1+really5.4.5-1をリリースしました。

◆2024年3月29日
フロイント氏は「過去数週間にバックドアを発見した」と警告をoss-security@openwallに投稿し、バックドアの存在を公開しました。

またRedHatはバックドアをFedora RawhideおよびFedora Linux 40ベータ版で出荷したことを公開しました。

◆2024年3月30日
DebianはDebian安定版を使用してビルドマシンを再構築しました。

◆フォーラム開設中
本記事に関連するフォーラムをGIGAZINE公式Discordサーバーに設置しました。誰でも自由に書き込めるので、どしどしコメントしてください!Discordアカウントを持っていない場合は、アカウント作成手順解説記事を参考にアカウントを作成してみてください!

• Discord | "XZ Utilsのバックドア攻撃みたいな例は他のソフトウェアでも発生していると思う?" | GIGAZINE(ギガジン)
https://discord.com/channels/1037961069903216680/1225011071434362972

この記事のタイトルとURLをコピーする

・関連記事
Red HatやDebianなどLinuxディストリビューションの組込み圧縮ツール「XZ Utils」に悪意のあるバックドアが仕掛けられていたことが発覚 - GIGAZINE

日本とアメリカの当局が「中国政府のハッカーによってCisco製ルーターなどのネットワークにバックドアが仕掛けられている」と警告 - GIGAZINE

Windows・macOS・Linuxを標的にするバックドアマルウェア「SysJoker」が報告される - GIGAZINE

TikTok親会社を解雇された元幹部が「中国共産党がデータにアクセスするためのバックドアがTikTokに仕込まれていた」と主張 - GIGAZINE

メッセージアプリのバックドア義務化は政府の監視を強化し人権侵害につながると欧州人権裁判所が判断 - GIGAZINE

in ソフトウェア, Posted by log1d_ts

You can read the machine translated English article here.