鱧技術

hamo_daisukiの技術メモ

xzの悪用後のフォローアップ質問

DistroWatch Weekly, Issue 1065, 8 April 2024 より抜粋
Questions and Answers (by Jesse Smith)(元記事

xzの悪用後のフォローアップ質問

先週、我々はxz圧縮ソフトウェアにおける悪用について報告した。この問題は早期に発見され、広まることはありませんでしたが、その深刻さに多くの人々が注目し、疑問を投げかけました。以下に、それらの質問のいくつかを取り上げます。

Auditing-the-source asks: 完全に監査されているディストリビューションはありますか?コードの全行がチェックされるような?

DistroWatch answers: どの Linux ディストリビューションも、一行ごとに完全に監査されているとは思えません。Red Hat Enterprise LinuxSUSE Linux Enterpriseのように、認証プログラムの一部として、かなり徹底的にチェックされているディストリビューションはあります。そして、Trisquel GNU/Linuxのような、完全に自由(フリーソフトウェア)なディストリビューションもあります。BSDの世界では、OpenBSDのコードは、おそらく、ほとんどのオープンソースプロジェクトよりも 注意深く監視されてきたことでしょう。しかし、本格的なディストリビューションは、何億行ものコードを含んでおり、 継続的に手作業で一行一行監査することは現実的ではありません。

とはいえ、多くの主要なオープンソース・プロジェクトは、新しいコードが提出されたときに査読を行っています。多くのパッケージメンテナーは、新しいバージョンのソフトウェアにどのような新しいコードが含まれているかをチェックしています。Linuxカーネルのような主要なプロジェクトに入るコードは、バグ、脆弱性、後退など、問題を探すために複数の人によってくまなくチェックされるのが一般的です。そのため、コードベース全体が定期的なレビューを受けることはないかもしれないものの、エコシステムに入る変更は通常チェックされます。

Worried-about-more-backdoors asks:  Linuxの重要なパッケージには、他にどんなバックドアがあるのだろうと猜疑的になっています。xz問題のような他の問題がある可能性について教えてください。

DistroWatch answers: 覚えておくべきことは、xzの悪用は何年もかけてゆっくりと行われたということです。新しい開発者が既存のプロジェクトを引き継ぎ、作者が将来脆弱になる可能性のあるコードを少しずつ挿入し、そして悪用を開始するためには、多くの調整が必要だった。このような複数年にわたるゆっくりとした作業の後、悪用は2カ月以内に発見され、パッチが適用された。これは、危険なバージョンのxzが固定リリース・ディストリビューションに入る前であり、いくつかのローリングリリース・ディストリビューションに入る前であった。この脆弱性を導入したユーザーはごくわずかで、そのようなユーザーは最先端を行く人たちでした(Arch Linuxユーザー、Debian Unstableをテストしている人たち、Fedora Rawhideユーザー)。ベータテスターやローリングリリースで常にアップデートを行う人以外で、この脆弱性をインストールする危険性がある人はほとんどいませんでした。

この悪用策を練り上げ、アップストリームプロジェクトを操作するためには何年もの作業が必要であり、ほとんどのディストリビューションが悪意のあるバージョンをパッケージ化する前に、この悪用策はすぐに摘発さ れましたから、バックドアを作ろうとする他の(成功した)試みが野放しになっている可能性は低いと言えるでしょう。

Checking-for-viruses asks:Linuxの各種ディストリビューションは、xzバックドアのような問題を防ぐためにアンチウイルスを同梱するようになるのでしょうか?

DistroWatch answers:理由はいくつかありますが、第一に、テストと監査プロセスがバックドアを素早く発見しました。オープンソースの監査プロセスは期待通りに機能したので、別のチェックは必要ないと考えられます。

第二に、アンチウイルスは信頼性が低く(誤検知や実際の問題の見落とし)、多くのリソースを消費する傾向があります。

第三に、アンチウイルスは検索対象を決める必要があります。言い換えれば、(既知の、あるいは疑わしい)問題を検出する訓練が必要です。アンチウィルス・プログラムは、xzのような脆弱性に類する問題を探しださなくてはいけません。そのためには、アンチウイルスを常に最新の状態に保つ必要があります。つまり、ダウンロード元のリポジトリアンチウイルスを実行するメリットはほとんどありません。

別の言い方をすれば、もしLinuxコミュニティが脆弱性について知っており、アンチウィルスにそれを検出して除去することを教えることができるなら、さっさと悪意のあるパッケージをリポジトリから除去し、良いバージョンに置き換えればよいのです。しかし、もし私たちが悪意のあるパッケージとその振る舞いについて知らなければ、アンチウイルスソフトウェアを訓練できません。

アンチウィルス・スキャナーは、状況によっては役に立つこともありますが、ユーザーが吟味されたリポジトリからプログラムをダウンロードする場合には、あまり高価を発揮しません。アンチウィルス・スキャナーは、信頼できないサードパーティのソースからプログラムをダウンロードしているユーザーにも、ほとんど役に立ちません。

On-the-lookout asks: オープンソースはこのようなものから我々を守るはずじゃなかったんですか?

DistroWatch answers: 私たちがxzについて話しているのは、チェックがうまくいったからです。誰かがxzの問題に気づき、調査し、(関係するすべてのソフトウェアがオープンソースであるおかげで)問題を特定することができました。数日以内に、すべての主要なディストリビューションはこの問題を認識し、エクスプロイトされたバージョンのxzをパッケージ化しないようにするか、リポジトリで置き換えられました。

作成に1年以上かかった今回の問題は、主要なディストリビューションのリリースに入る前、固定リリースのディストリビューションに入る前、そしてエクスプロイトが機能しそうなディストリビューションにインストールされる前に発見され、対策された。(xzエクスプロイトは、ディストリビューションがxzバージョン5.6以降、OpenSSHサーバー、systemdを実行している必要がありました)。OpenSSHサービスを実行しているopenSUSE Tumbleweedユーザ以外では、影響を受ける人はほとんどいないでしょう。

簡単に言えば、関係するコンポーネントオープンソースの性質と、実施されたテストプロセスが功を奏したということです。xzエクスプロイトは、xzプロジェクトを危険にさらし、エクスプロイトを導入するために何カ月も費やしたにもかかわらず、Linuxコミュニティにはほとんど影響を与えなかった。これは、オープンソースの実践が失敗したという事例ではなく、オープンソースのテストと監査が非常にうまく機能しているという輝かしい例なの です。完璧ではないが、非常にうまくいっていることを示しています。あなたがベータ・テスターでない限り、あなたのコンピューターにxzエクスプロイトがインストールされたことはないでしょうから、あなたは守られていたといって良いでしょう。