XZ Utilsのバックドア

本記事では、XZ Utilsのバックドアについて述べる。 2024年3月29日、Linuxユーティリティであるxzのバージョン5.6.0と5.6.1に、悪意を持って仕掛けられたバックドアの発見が報告された。このバージョンは2024年2月に「Jia Tan」という名前を使用したアカウントによってリリースされ、ソフトウェア開発者のAndres Freundによってバックドアが発見された。 xzは多くのLinuxディストリビューション内に存在するにもかかわらず、発見された地点では、バックドアが含まれるバージョンはまだ広く本番環境のシステムには導入されていなかった。しかしながら、主要なディストリビューションの開発バージョン内には存在した。 このバックドアは、影響を受けるLinuxシステム上において、特定のEd448秘密鍵を持つ攻撃者によるリモートコード実行を可能にする。この脆弱性には、CVE番号CVE-2024-3094 が割り振られ、CVSSスコアは最高スコアの10.0が割り当てられた。 Microsoftの社員でPostgreSQLの開発者の一人だったAndres Freundは、Debian Sidで発生していたパフォーマンスリグレッションの調査を行う中で、バックドアを発見した。Freundは、SSH接続を行うと異常に高いCPU使用率が発生し、メモリデバッグツールであるValgrindのエラーも引き起こしていることに気が付いた。Freundはこの発見をOpenwallプロジェクト（英語版）のセキュリティーメーリングリストに報告すると、多くのソフトウェア開発者の注目を呼んだ。このバックドアは、連携して動作する複数の段階で構成するなど、攻撃者はコードが把握されないように努めていた。 汚染されたバージョンがOSに取り込まれると、systemdライブラリを悪用してOpenSSHのSSHサーバーデーモンの動作を改変し、攻撃者が管理者権限を獲得できるようになる。Red Hatの分析によると、このバックドアは「悪意のある者がsshdの認証を破り、リモートでシステム全体への不正アクセスを可能にする」という。 その後の調査で、XZ Utilsにバックドアを仕掛ける活動は、Jia Tan、そしてJiaT75と名乗るユーザーが、約3年をかけてプロジェクト内で信頼される地位を得るための努力の結晶であることが分かった。Jia Tanは設立者と主要メンテナーに対して、プロジェクトの支配権を引き渡すよう自作自演とみられるアカウントを用いて圧力をかけた。その後、XZ Utilsの共同メンテナーの地位を手に入れたことで、バックドアを仕込んだバージョン5.6.0と、OSのソフトウェアテストの中で起こる明らかに異常な動作を修正したバージョン5.6.1に署名することができた。 多重アカウントと疑われるユーザー名には、「Jigar Kumar」「krygorin4545」「misoeater91」などが含まれる。「Jia Tan」という名前も、バージョン5.6.0および5.6.1の作成者名である「Hans Jansen」も、活動の中で使われた偽名であると疑われている。どちらも数年という短い活動期間以前には、ソフトウェア開発において公の場に姿を現したことは全くない。 このバックドアは、その巧妙さと、犯人が信頼される地位を得るために長期間にわたって高度な作戦保全を実践していたという事実が注目された。米国のセキュリティ研究者Dave Aitelは、ロシア対外情報庁の代理として活動していると考えられている、持続的標的型攻撃ハッカーであるAPT29（英語版）に起因するパターンに合致することを示唆している。ジャーナリストのトーマス・クラバーンは、国家的活動家か、あるいは相当なリソースを持つ非国家的活動家である可能性を示唆した。 悪意のあるコードは、XZ Utilsソフトウェアパッケージの5.6.0および5.6.1に含まれていることが確認されている。このエクスプロイトは、SSHサーバーの特定のサードパーティ製パッチが使用されない限りは、休眠状態のままである。しかし適切な状況下では、この干渉によって攻撃者がsshd認証を破り、リモートからシステム全体に不正アクセスできる恐れがある。この仕組みは、悪意のあるバイナリコードを含む2つの圧縮されたテストファイルで構成されている。これらのファイルはGitリポジトリに含まれているが、展開してプログラムに注入しない限り、休止状態のままである。このコードはglibc の IFUNCと呼ばれる仕組みを使い、OpenSSHのRSA_public_decryptという既存の関数を悪意のあるバージョンに置き換えている。OpenSSHは通常liblzmaをロードしないが、いくつかのLinuxディストリビューションで使用されている一般的なサードパーティのパッチにより、libsystemdをロードするようになり、libsystemdはlzmaをロードするようになる。GitHubにアップロードされたリリースのtarファイルには、build-to-host.m4の改変版が含まれており、liblzmaへの実際のインジェクションを実行するスクリプトの展開を行う。この改変されたm4ファイルはgitリポジトリには存在せず、メンテナーがgitとは別にリリースしたtarファイルからしか入手できなかった。このスクリプトがインジェクションを実行するのは、glibcとGCCを使用し、dpkgまたはrpmでビルドされたx86-64 Linuxシステム上のみであると思われる。 米CISAはセキュリティ勧告を公布し、影響を受けたデバイスを以前のバージョンに戻すよう促した。Red Hat、SUSE、Debianを含むLinuxソフトウェアベンダーは、影響を受けたパッケージを以前のバージョンに巻き戻した。GitHubはxzリポジトリのミラーを無効化し、その後復旧させた。 カノニカルはUbuntu 24.04 LTSとその派生OSのベータリリースを1週間延期し、ディストリビューションの全パッケージのバイナリを全てリビルドすることを選択した。Ubuntuの安定版は影響を受けなかったが、アップストリームのバージョンは影響を受けた。カノニカルは、追加パッケージのコンパイル中にこのバックドアの影響を受けていないことを、元のリリース期限までに保証できなかったためこのような予防措置を取った。 2024年5月30日、バックドアが取り除かれたバージョン5.6.2が公開され、本問題には一つの区切りがつけられた。 コンピュータ科学者のAlex Stamosは、「これは、あらゆるソフトウェア製品に仕掛けられたバックドアの中で、最も広範かつ効果的なものであった可能性がある」と評し、バックドアが発見されないままであれば、「SSHを実行する世界中の何億台ものあらゆるコンピュータへのマスターキーを、その作成者に与えていただろう」と指摘した。さらに、この事件は、サイバーインフラの重要な部分を無給のボランティアに依存させたことによって計画を実行できた可能性に関する議論も巻き起こした。 ^ この脆弱性は、安全なバージョンに巻き戻すことによって、実質的に発見から1時間以内に修正された。 ^ この名称がグループ名、個人名、個人のペンネームのいずれであるかは不明。 ^ Debianの開発者向けバージョン（不安定版）。 ^ “Remove the backdoor found in 5.6.0 and 5.6.1 (CVE-2024-3094).”. GitHub. 2024年6月19日閲覧。 ^ Corbet, Jonathan. “A backdoor in xz”. LWN. 1 April 2024時点のオリジナルよりアーカイブ。2 April 2024閲覧。 ^ “CVE-2024-3094”. National Vulnerability Database. NIST. 2 April 2024時点のオリジナルよりアーカイブ。2 April 2024閲覧。 ^ Gatlan. “Red Hat warns of backdoor in XZ tools used by most Linux distros” (英語). BleepingComputer. 29 March 2024時点のオリジナルよりアーカイブ。29 March 2024閲覧。 ^ Akamai Security Intelligence Group (1 April 2024). “XZ Utils Backdoor – Everything You Need to Know, and What You Can Do”. 2 April 2024時点のオリジナルよりアーカイブ。2 April 2024閲覧。 ^ a b c d e James. “xz-utils backdoor situation (CVE-2024-3094)” (英語). GitHub. 2 April 2024時点のオリジナルよりアーカイブ。2 April 2024閲覧。 ^ “Beware! Backdoor found in XZ utilities used by many Linux distros (CVE-2024-3094)”. Help Net Security (29 March 2024). 29 March 2024時点のオリジナルよりアーカイブ。29 March 2024閲覧。 ^ a b “oss-security - backdoor in upstream xz/liblzma leading to ssh server compromise”. www.openwall.com. 1 April 2024時点のオリジナルよりアーカイブ。2024年4月3日閲覧。 ^ a b c d “What we know about the xz Utils backdoor that almost infected the world” (英語). Ars Technica (1 April 2024). 1 April 2024時点のオリジナルよりアーカイブ。1 April 2024閲覧。 ^ “Red Hat, CISA Warn of XZ Utils Backdoor” (英語). Decipher (29 March 2024). 29 March 2024時点のオリジナルよりアーカイブ。29 March 2024閲覧。 ^ a b “Malicious backdoor spotted in Linux compression library xz” (英語). The Register. 1 April 2024時点のオリジナルよりアーカイブ。1 April 2024閲覧。 ^ a b c “Urgent security alert for Fedora 41 and Fedora Rawhide users” (英語). Red Hat. 29 March 2024時点のオリジナルよりアーカイブ。29 March 2024閲覧。 ^ “Watching xz unfold from afar” (31 March 2024). 6 April 2024時点のオリジナルよりアーカイブ。6 April 2024閲覧。 ^ “Timeline summary of the backdoor attack on XZ Utils” (3 April 2024). 10 April 2024時点のオリジナルよりアーカイブ。7 April 2024閲覧。 ^ 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閲覧。.  ^ “Malicious xz backdoor reveals fragility of open source”. The Register. 8 April 2024時点のオリジナルよりアーカイブ。8 April 2024閲覧。 ^ “Reported Supply Chain Compromise Affecting XZ Utils Data Compression Library, CVE-2024-3094” (英語). CISA (29 March 2024). 29 March 2024時点のオリジナルよりアーカイブ。29 March 2024閲覧。 ^ “SUSE addresses supply chain attack against xz compression library”. SUSE Communities. SUSE. 29 March 2024時点のオリジナルよりアーカイブ。29 March 2024閲覧。 ^ Salvatore, Bonaccorso (29 March 2024). "[SECURITY] [DSA 5649-1] xz-utils security update". debian-security-announce (Mailing list) (英語). 2024年3月29日時点のオリジナルよりアーカイブ。2024年3月29日閲覧。 ^ “Important information regarding xz-utils (CVE-2024-3094)”. about.gitlab.com. 1 April 2024時点のオリジナルよりアーカイブ。2024年5月31日閲覧。 ^ “Noble Numbat Beta delayed (xz/liblzma security update)” (英語). Ubuntu Community Hub (2024年4月3日). 10 April 2024時点のオリジナルよりアーカイブ。2024年4月10日閲覧。 ^ “Ubuntu 24.04 Beta Delayed Due to Security Issue”. OMG! Ubuntu (3 April 2024). 8 April 2024時点のオリジナルよりアーカイブ。10 April 2024閲覧。 ^ "Response to backdoor incident". GitHub. 2024年7月8日閲覧。 ^ “The Story Behind The XZ Backdoor Is Way More Fascinating Than It Should Be”. Techdirt (8 April 2024). 10 April 2024時点のオリジナルよりアーカイブ。12 April 2024閲覧。 ^ “How half-a-second of suspicious activity led an engineer to prevent a massive cyberattack” (英語). EL PAÍS English (10 April 2024). 12 April 2024時点のオリジナルよりアーカイブ。12 April 2024閲覧。 ^ Roose, Kevin (3 April 2024). “Did One Guy Just Stop a Huge Cyberattack?”. The New York Times. オリジナルの4 April 2024時点におけるアーカイブ。. https://web.archive.org/web/20240404000115/https://www.nytimes.com/2024/04/03/technology/prevent-cyberattack-linux.html 4 April 2024閲覧。  ^ “How one volunteer stopped a backdoor from exposing Linux systems worldwide” (英語). The Verge (2 April 2024). 4 April 2024時点のオリジナルよりアーカイブ。4 April 2024閲覧。 XZ Utils 公式ウェブサイト Andres Freund's report to the Openwall oss-security mailing list