Linux上のXZバックドアとオープンソースソフトウェアの重要性

自由に閲覧可能なコードと監視の目が、世界的なセキュリティ・インシデントを食い止めた

The XZ backdoor could have broken Linux security.

技術的な問題を抱えた一人のプログラマーが、ほとんどのLinuxディストリビューションに含まれるUZ Utilsデータ圧縮ライブラリに追加されていたバックドアを発見し、世界的なセキュリティ・インシデントを食い止めた。この発見は、DebianやRedhatのようなメジャーなディストリビューションがこの悪質なコードを彼らのリリースに導入しようとする直前に間に合った。これは、オープン・ソース・ソフトウェアがデジタル・セキュリティの維持に不可欠であることを示している。


何が起きたのか?

座ってシートベルトを締めてください。

2024年3月、マイクロソフト社員のアンドレアス・フロイントは、Debian-sidが抱えるパフォーマンスの問題を調べていた。彼は、Debian-sid が大量の SSH 接続を生成し、CPU リソースを異常に消費していることに気づいた。さらに調査を進めると、彼はこの問題をOpenWall Projectに報告し、 さらに調査を進めるために多くのソフトウェアベンダがこの問題を取り上げました。

驚いたことに、フロイント氏はXZの最新バージョン5.6.0と5.6.1に隠されたコードを発見した。

これらのバージョンに含まれる変更は、攻撃者に完全な管理者アクセス権を与えるオペレーティング・システムのセキュリティを危うくする。

フロイント氏は、SolarWindsと同じようなこの大規模なサプライチェーン攻撃の発見について、「本当に多くの偶然が必要だった」とし、「ここでは非常に、非常に幸運だったとしか思えない」と述べた。

XZバックドア・コードが行うこと

XZ Utilsプロジェクトにこっそりと追加された悪質なコードは、リモートでSSH接続を行うための実行ファイルであるsshdをターゲットにしている。攻撃者が正しい暗号化キーにアクセスできれば、SSHログイン証明書にそれを追加し、プッシュし、バックドアされたデバイスを通して実行することができる。

圧縮ソフトウェアXZとSSHの間のリンクは、Debianや他のディストロのパッチによるもので、SSHとsystemdの間にリンクを作成する。SystemdはXZのLZMAライブラリとリンクしており、XZのバックドアからSSHアクセスまでの経路を作り出している。

このプロセスの正確なステップを説明する詳細なインフォグラフィックは、Thomas Rocciaによって作成された:

Roccia's infographic explaining the XZ backdoor aka CVE-2024-3094

このバックドアについて特に驚かされるのは、それがいかに洗練されたものであるかということと、攻撃を試みるのに十分なアクセス権を得るために、攻撃者が何年もかけてXZプロジェクトに自分自身を埋め込むためにとった手順である。この発見の余波で、脅威研究者の目は、Jian Tanという偽名を使った一人の主要な貢献者に集中している。

Jian Tanとは誰なのか?

現在のところ、Jian Tanという名前で活動しているユーザーの正体はわかっていない。しかし、研究者たちはいくつかの手がかりをつかんでいる。ユーザー名JiaT75で活動しているJian Tanは、2021年に初めてXZ Utilsのコードに取り組んでいるように見えた。XZはオープンソースのプロジェクトであり、誰でも改良やバグ潰しに協力することができるからだ。何年にもわたり、タンはプロジェクトへの小さな貢献を続け、プロジェクトの周りに築かれたコミュニティ内での評判と信頼を高めていった。

2022年5月、Dennis Ensという偽名を使った見知らぬユーザーが、最近のアップデートについて苦情を言い始め、これに続いてJigar Kumarという名前を使った別の見知らぬ人物が、XZ Utilsの主要開発者に、開発をより早く進めるために新しいメンテナ(オープンソース・プロジェクトのソースコードを構築・整理する人)を加えるよう働きかけた。この圧力により、最終的にジアン・タンがプロジェクトのメンテナーに加えられた。

2023年半ば、タンは公開されている脆弱性チェッカーを無効にするよう要求し、これによりバックドア・コードの導入が可能になった。

A screenshot of Tan's request to have ifunc disabled.

タンがGitHubに提出したifuncの無効化要求のスクリーンショット。

プロジェクトでの作業を続けた後、2024年2月、タン氏は悪意のあるバックドアを含むXZ Utils 5.6.0と5.6.1の最終バージョンのコミットを行った。

この長期にわたるソーシャル・エンジニアリング攻撃は、オープンソースコミュニティの信頼を獲得し、タン氏は攻撃を成功させるために必要なアクセス権を得た。投入された時間の長さとバックドア自体の技術レベルの高さから、一部のセキュリティ研究者は、このバックドアの背後には国家が支援する行為者がいると考えている。

XZの今後は?

XZ Utilsのウェブサイトは、主要開発者であるLasse Collinが完全に管理しており、Jian Tanはプロジェクトから完全に削除されている。プロジェクトのGitHubページはオンラインに戻り、Collin氏は現在リポジトリのレビューを行っており、これが完了したらこの事件に関する記事を公開する予定であると報告している。

発見された時点で、以下のLinuxディストリビューションがバックドアの影響を受けていることが確認されている:

MacOS 用パッケージマネージャHomebrew は 5.6.x を使っていましたが、XZ Utils 5.4.6 に戻しました。

お使いのデバイスにXZ Utilsのバックドア・バージョンがあるかどうかを確認したい場合は、ターミナルで “xz —version “を実行してください。バージョン5.6.0または5.6.1がインストールされている場合は、バージョン5.4.xに戻すことをお勧めします。

オープンソースは安全なソフトウェアを提供する唯一の方法である

我々は非常に幸運だった。もしXZ Utilsプロジェクトが個人でメンテナンスされていて、フロイントがサポートチケットを提出せざるを得なかったとしたら、私たちは今日、まったく違った立場にいたかもしれない。XZのバックドア事件は、なぜオープンソースソフトウェアの公開がセキュリティに大きなメリットをもたらすのかを示す完璧な例だ。誰もがソースコードのレビューにアクセスできるようにすることで、セキュリティ研究者に、この種の攻撃を恐ろしい事態になる前に発見するチャンスを与えることができるのだ。

オープンソース・ソフトウェアは、すべての人のセキュリティを向上させる:

  • セキュリティ・コードの公開レビューを許可することで、あらゆる専門知識や背景を持つ専門家から建設的な批評を受けることができる。
  • コミュニティは、クローズドソースの開発チームよりも早くバグや脆弱性を発見することができる。
  • 透明性によって信頼を高めることで、エンドユーザーは、自分自身とそのデータを保護するために選択した製品を信頼できることを知ることができる。

オープンソースソフトウェアは、すべてのデジタル・セキュリティにとって極めて重要な側面です。XZ Utilsプロジェクトは企業向け製品で使用されており、コミュニティによる精査がなければ、この内部攻撃は気づかれなかったかもしれない。クローズド・ソース・ソフトウェアでは、選ばれた人だけがソース・コードを見ることができるため、結果的にこのような変更を見落とす可能性が高くなる。

大手のハイテク企業には、コードを閲覧する開発者がチームに大勢いるが、一人の社員がジアン・タンのように悪意のあるコードを忍び込ませようとしている保証はない。オープンソースでは、より多くの人の目がコードに注がれる。つまり、強力なセキュリティ・プロトコルや繰り返されるコード・レビューに加えて、より多くの人の目がより多くの問題を発見できるのだ。リーナスの法則によれば十分な人の目があれば、すべてのバグは浅い。

Tutaでは、暗号化プロトコルとクライアントコードのすべてをオープンソースで公開しています。私たちの暗号化は、暗号の専門家によって開発されテストされているだけでなく、すべてのセキュリティ研究者がテストしレビューできるようになっています。信頼は勝ち取るものであり、私たちのコードを完全にオープンソースで公開することで、Tutaが最高のメールセキュリティを提供していることを証明しています。

安全に暗号化をお楽しみください。