「バグの発見が修正よりはるかに速い」:GoogleがLinuxセキュリティ向上のためフルタイム開発者2名を支援

Table of Contents

「バグの発見が修正よりはるかに速い」:GoogleがLinuxセキュリティ向上のためフルタイム開発者2名を支援

インタビューLinux とオープンソース コードのセキュリティを懸念して、Google はカーネルのセキュリティに取り組むフルタイムの開発者 2 名を支援しています。

このインターネットの巨人は、外部のバイナリをダウンロードするのではなく、独自のリポジトリからコードをビルドしています。しかし、Linuxにコードが追加されるペースを考えると、これは容易なことではありません。Googleのオープンソースセキュリティチームリーダーであるダン・ロレンク氏は、The Registerに対し、そのアプローチと、便利であるにもかかわらず、ビルド済みのバイナリを使用しない理由について語りました。

しかし、まず最初に、Google がフルタイムで支援している 2 名は Gustavo Silva で、彼の仕事にはバッファ オーバーフローのリスクのいくつかのクラスを排除することやカーネルの自己保護が含まれます。また、Nathan Chancellor は Clang/LLVM コンパイラのバグを修正し、コンパイラの警告を改善することも含まれます。

二人とも既にLinux Foundationで活動しているが、何が新しいのだろうか?「グスタボはLinux Foundationで数年前からLinuxカーネルの開発に携わっています」とロレンツ氏は語る。「実は、私たちも何年も前からLinux Foundation内でLinuxカーネルのスポンサーを務めてきました。主な変化は、Linuxカーネルについてもっと積極的に議論し、他の企業の参加を促している点です。これは既に機能しているモデルであり、私たちはこれを拡大し、フルタイムの仕事にしたいと考えている貢献者を見つけ、そのための資金を提供しようとしています。」

Googleの資金提供が他のLinuxユーザーに利益をもたらすのはオープンソースの性質であり、Google自身の利益にもなります。LinuxはGoogleにとってどれほど重要なのでしょうか?「Linuxは極めて重要です。GoogleはLinuxからスタートしました。私たちはあらゆる場所でLinuxを使っています」とロレンツ氏は言います。

そうだとすれば、なぜGoogleはLinux Foundationの「ゴールド」会員(年間10万ドル)しか維持できないのだろうか。一方、Microsoft、Intel、Facebook、Red Hatといった企業は年間50万ドルを寄付する「プラチナ」会員なのだ。「その点についてはよく分からない。我々も会員となっているサブ財団は数十ある」と彼は付け加えた。GoogleはAWSよりも優位に立っている。AWSは「シルバー」会員(年間2万ドル)に過ぎない。

ロレンツ氏は、Linuxを含むGoogle社内で使用しているオープンソースコードのセキュリティを確保するためにGoogleが講じている対策の一部について説明しました。「私たちが使用するオープンソースコードにおいて心がけていることの一つ、そして誰にでも使用を推奨していることの一つは、自分でビルドできるようにすることです。ビルドは必ずしも簡単ではありませんが、いざという時のために、自分でビルドできると知っておくことは、戦いの半分を勝ち取ったようなものです。」

私たちが使用するすべてのオープンソースは、社内リポジトリから私たち自身で構築することを要求しています。

当社が使用するオープンソースはすべて、社内リポジトリから自社で構築することを義務付けています。これは、パッチが必要になった場合に対応できるということを証明するためであり、また、出所を明確に把握し、より確実な出所を確保するためです。厳密にはフォークですが、常に最新の状態に保っている[公開]リポジトリのコピーにすぎません。当社が携わるプロジェクトでは、パッチを長期にわたって保持することはほとんどありません。メンテナンスが大変な作業になるからです。ただし、必要であれば可能です。

「私たちは大部分を独自のLinuxカーネルで構築していますが、それがLinuxのモデルです。Linuxではこのようなやり方は珍しいことではありませんが、他の多くのプロジェクトでは奇妙なことになっています。」

その結果、Google は、Linux ディストリビューションのバイナリ イメージをダウンロードし、パッケージ マネージャーを使用して必要なものをインストールするという、ほとんどの Linux ユーザーが享受している利便性を失うことになります。

Linuxのセキュリティ維持における課題は何でしょうか?「多くのプロジェクトよりもはるかに優れています」とロレンツ氏は言います。「Linuxには、階層化されたレビュアーによる、十分に文書化されたプロセスがあります。課題は、Linuxカーネルが巨大でソフトウェアであり、すべてのソフトウェアにバグがあるということです。ソフトウェアが増えれば増えるほど、バグも増えます。もう一つの課題は、バグの発見が非常に上手くなったことです。静的解析やファジングも大きく進歩し、バグの発見速度は修正速度をはるかに上回っています。次の課題は、バグを修正する方法を見つけることです。」

「バグ発見を止めたくはありませんが、誰も見る時間がないバグを発見したのでは、問題全体を本当に解決しているとは言えません。」

これは、「キーボードをもっと使う」という理由の一部ですが、すでにこれに取り組んでいる 2 人の開発者を後援しても、解決策にはほど遠いです。

誰も見る時間がないバグを見つけたら、問題全体を解決しているとは言えません。

ロレンツ氏は、そのような人材は多くないため、それでもなお価値があると述べている。「先週、Pythonインタープリタに関する発表を行いました。今後1年間、CPythonにフルタイムで取り組む人材を1人追加しました。概算では、Pythonインタープリタにフルタイムで取り組む人材の数は50%増加するでしょう。」Linuxセキュリティに取り組むフルタイム開発者の状況も同様かもしれないと彼は言う。

リーナス・トーバルズ氏がカーネルリリースにおける大量の新規コードについて定期的にコメントしている中、この問題にどう対処すればいいのだろうか?「創造性を発揮する必要がある」とロレンス氏はThe Regに語った。「Google全体、そして業界全体における大規模なセキュリティ対策への基本的なアプローチは、様々な種類の問題を技術的に解決することです。発見したバグは修正する必要がありますが、同時に、様々な種類のバグを修正する方法も考えなければなりません。」

南極のペンギン

開発者の雑談をサイドチャネルとして利用することで、リリース前にLinuxカーネルのセキュリティ修正が発見される

続きを読む

一例として、Linuxカーネルに使用されているC言語などのシステム言語で書かれたソフトウェアを長年悩ませてきたバッファオーバーフロー問題が挙げられます。言語を変える?「Rust、Go、Swiftといった、全く新しい方法で動作する全く新しいプログラミング言語が今や存在しています」と彼は言います。「これらの言語を使うことで、メモリ安全性に関する様々なバグを技術的に排除してきたのです。」

MicrosoftもWindowsに関して同様の考えを抱いているが、変化は容易ではない。GoogleはカーネルコードにRustを採用する、あるいはコードをRustで書き直す計画を進めているのだろうか?「検討中です」とロレンツ氏は明かす。「前回のアップデートはLinux Plumber'sカンファレンスで、Rustに必要な要素についてのセッションがありました。これはAndroidチームのGoogleエンジニアが担当しました。…まだ十分に進んでいないので、うまくいくかどうかはまだ分かりません。」

課題の規模と新しいカーネルコードの大量流入を考えると、セキュリティ面は優位に立っていると言えるでしょうか? ロレンク氏は次のように述べています。「私たちは負けているとは思いません。大きな進歩を遂げています。リリースごとに規模は大きくなっていますが、同時に改善も進めています。」

負けてはいないが、勝ってもいない。®

Discover More