「XZ Utils」のバックドア問題–オープンソースのセキュリティを考える
今回は「「XZ Utils」のバックドア問題–オープンソースのセキュリティを考える」についてご紹介します。
関連ワード (セキュリティ等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、ZDNet Japan様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
すべての始まりは、Microsoftの主任ソフトウェアエンジニアであるAndres Freund氏が、「Debian Linux」ベータ版のSSHリモートセキュリティコードの実行速度が遅い理由に関心を持ったことだった。Freund氏が詳しく調べたところ、問題が明らかになり、xzデータ圧縮ライブラリーのチーフプログラマー兼メンテナーだったJia Tanと名乗る人物がコードにバックドアを仕掛けていたことが分かった。その目的は、攻撃者が「Linux」システムを乗っ取れるようにすることだ。
近年は、悪意あるハッカーがソフトウェアに不正なコードを挿入する事例が非常に多くみられる。一部のオープンソースコードリポジトリー、たとえば人気の「JavaScript」パッケージマネージャーである「Node Package Manager」(npm)や、同様に人気の高い「Python」ソフトウェアリポジトリー「Python Package Index」(PyPI)などは、仮想通貨(暗号資産)マイニングマルウェアやハッキングマルウェアをホストしたことが知られている。
オープンソースのマルウェアプログラムもあり、たとえば「Sapphire Stealer」は、ユーザーIDやパスワードなどの機密情報を探して盗もうとする。確かに、Linuxや同OSと密接に関連するユーティリティーで不正なコードが大量に書かれてきたが、Linux内にマルウェアをうまく隠せた者はいなかった。今回が初めてだ。
興奮して我を忘れる前に、知ってほしいことがある。不正なxzコードは、安定版のLinuxディストリビューションには現れていない。「Fedora」「Debian」「openSUSE」「Ubuntu」などの最先端のベータ版ディストリビューションを使用している場合は気にかけた方がいいが、そうでなければ大丈夫だ。
だが、誤解しないでほしい。Linuxはすんでのところで危機を回避したにすぎない。もしこの不正なコードが、皆が毎日使用するLinuxシステムに到達していたら、それに気づくかどうかに関係なく、大惨事になっていただろう。
皮肉なことに、今回のxzをめぐる騒動はオープンソースを非難する口実として利用されているが、実際には、オープンソースだったからこそ攻撃が失敗した。AmazonのオープンソースプログラムオフィスのプリンシパルエンジニアであるMark Atwood氏は次のように指摘する。「攻撃が失敗したのは、オープンソースだったからだ。この攻撃を非オープンソースに仕掛けるとしたら、攻撃者は2年をかけて、工作員がソフトウェア開発請負業者に雇われるように仕向け、その工作員を内部に潜入させて、誰にも気づかれないようにしていただろう」
Atwood氏がなぜそう言えるのかというと、それが事実だからだ。たとえば、2023年に中国のハッカーグループが「Microsoft Online Exchange」に侵入した具体的な手口はまだ分かっていない。Freund氏のおかげで、xzがハッキングされた手口については、多くのことが明らかになった。Endor Labsの共同創設者で最高技術責任者(CTO)を務めるDimitri Stiliadis氏はこう指摘する。「幸運だったのは、誰もが見て理解できるオープンソースソフトウェアが攻撃の標的だったことだ。同様の攻撃がクローズドソースのコンポーネントに対して行われた場合、それを知る方法はあるだろうか」
そのとおりだ。
まだ分かっていないのは、誰がどんな目的でこの攻撃を仕掛けたのかということだ。別の中国のハッキンググループが関わっているとの憶測が飛び交っているが、結局のところ、情報に基づいた推測という域を出ない。
たとえば、このマルウェアは国際政治が関係しているのではなく、高性能のLinuxシステムに仮想通貨マイナーを仕込む非常に手の込んだ試みだったのかもしれない。現在のBitcoinの価値は1コインあたり6万5000ドル前後で推移しているため、金銭欲は動機として十分に考えられる。
Jia Tanを名乗った人物が誰であれ、多大な時間と労力を費やしてマルウェアを仕込んだことは分かっている。Tanの暗躍は2021年に始まった。男性か女性か不明なこの人物は、偽アカウントによる自作自演でxzプロジェクトを徐々に掌握。Tanと仲間はその後、バックドアに感染した新しいプログラムをLinuxディストリビューションに迅速に組み込む活動を開始した。
その段階で、Freund氏がコードを詳しく調べて企てが発覚した。現在は、XZの元のメンテナーだったLasse Collin氏がプロジェクトの管理権を取り戻して、コードをクリーンアップしている。
憶測では、Tanと仲間たちがxzの過去のバージョンにマルウェアを仕込んだとも言われているが、それはなさそうだ。
xzは氷山の一角にすぎず、他にも多くのオープンソースマルウェアプログラムがLinuxに潜んでいるのでは、と懸念する声もある。しかし、Open Source Initiativeの共同創設者であるEric S. Raymond氏は次のように語る。「エクスプロイトが発見されたとき、まだ見つかっていないエクスプロイトが大量にあるに違いないと考えるのは、用心深く慎重な行為に思える。しかし、実際にそうなのかは分からないし、たとえそうだったとしても、そこから実用的なアドバイスは生まれないだろう」
では、何かできることはないのだろうか。たくさんある。
このトラップドアが仕込まれたマルウェアが発見される前に、Open Source Security Foundation(OpenSSF)が、安全かつ責任あるオープンソースソフトウェアの使用に関するポリシーを採択するよう提案していた。
今回の件を受けて、オープンソースソフトウェアのサプライチェーン企業Chainguardの共同創設者で最高経営責任者(CEO)のDan Lorenc氏は、この攻撃で表面化した不備について振り返るとともに、オープンソースサプライチェーン全体で一層綿密な防御を構築することを提案した。「執拗な脅威が消滅することはなく、魔法のように阻止することもできないが、継続的に防御を強化して攻撃をより困難にしていくことはできる」
Lorenc氏は正しい。同氏はまた、「私たちは信じられないほど幸運だった」とも語っている。
オープンソースはその性質上、プロプライエタリーな方法よりも安全性が高い可能性がある。しかし、より安全となるのは、使用するコードを厳しく丁寧にチェックして、本当に安全であることを確かめた場合だけだ。オープンソースというだけでコードが安全だと考えるのは、最悪の希望的観測だ。望んだからといってオープンソースやLinuxが安全になるわけではない。それは懸命な努力によってのみ実現する。