わたしはGoogle Chromeが成功するものとは決めてかかってはいないが、同社は新しいブラウザ――いや、アプリケーション環境に関する素晴らしいアイデアをたくさん持っている。彼らはこれらのアイデアを優れたコードに変えたのだろうか。
世の中は「Chrome」の話題で持ち切りだ。これは、Webブラウザを超える存在を目指すGoogleの新しいWebブラウザだ。Chromeは多くの点でエキサイティングなプログラムだが、何よりも興味深いのは、ブラウザのセキュリティをめぐる彼らの試みである。
わたしは、Chromeのすべてのセキュリティ機能を詳細に検討するつもりはない。例えば、Incognitoモードやブラックリスト機能などは便利だが、必ずしも斬新な機能というわけではない。わたしが興味を持ったのはそのアーキテクチャだ。
Chromeのセキュリティ機能について知りたいのであれば、マンガ版の解説を読むか、Chrome開発チームがカリフォルニア大学バークレー校、スタンフォード大学、ワシントン大学の研究者らと共同で作成した論文「The Security Architecture of Chromium」を読むといいだろう。「Chromium」というのはChromeのベースとなっているアプリケーションフレームワークであるようだ。
Googleは、Chromeをほかのブラウザよりも本格的なアプリケーション環境にしようとした。その方法は、最新のOS上で動作するアプリケーションが備えているのと同じ防護機能の一部をブラウザアーキテクチャに組み込むというものだ。基本的に、Chrome内の個々のページ(タブ)は、独立したプロセスとしてサンドボックス内で動作するようになっている。悪質なプログラムによるダメージを最小限に抑えるために、各プロセスには制限が設けられている。同ブラウザは2つのコンポーネントで構成されている。特権付きブラウザカーネル、そしてサンドボックス内で動作するレンダリングエンジンである。レンダリングエンジンは、ファイルのパーシングやJavaScriptの実行など、脆弱性の影響を受けやすい処理の多くを実行する。
「アプリケーションプラットフォームとしてのブラウザ」というアイデアは、特に目新しいものではない。Appleは長い間、SafariはiPhone向けのアプリケーション開発プラットフォームであると宣伝していたが、このアイデアは多くの人々に受け入れられなかった。それにAppleは、Safariのセキュリティだけに限らず、セキュリティ全般をあまり得意としていない。Googleはセキュリティ分野では実績がないが、正しいアイデアを持っているようだ。
この点に関してGoogleの大胆さに驚いているのはわたしだけではない。Microsoftのロバート・ヘンシング氏は、Googleのアプローチの多くはMicrosoftがIEのプロテクトモードとその関連機能でやろうとしたことを踏襲したものだが、Googleはそれだけにとどまらず、各タブをプロセスとして独立させたと指摘している。Chromeに関するヘンシング氏のブログ記事には、GoogleがサンドボックスをWindowsに実装した方法について簡単な説明が記載されている。より詳しい説明はこちらにある。
しかしこれらの説明を読むと、1つの興味深い事実が浮かび上がる。それはGoogleがサンドボックスを実装するのにWindows独自のセキュリティ機能(CreateRestrictedToken、Jobオブジェクト)を利用したということだ。これらの機能に相当するものは、GoogleがChromeを提供しようと考えているLinuxやMacなどのプラットフォームには基本的に存在しない。(わたしの知る範囲では)Windows版が現時点で利用可能な唯一のChromeバージョンである。彼らは、どうやってほかのプラットフォームにサンドボックスを実装するつもりなのだろうか。
攻撃の影響範囲を制限する、あるいは攻撃対象範囲を縮小することを狙った、こういったアーキテクチャ面での改善は大いに評価できるが、Googleが所期の狙いを達成したのかどうかは不明だ。Chromeが一般向けにリリースが開始された9月2日、セキュリティ研究コミュニティーは早くも、Googleの採用した手法を明らかにし、深刻な問題が起きる可能性を指摘した。今後、時間が経過するのに従って、さらにこういった問題が報告されるものと予想される。
ChromeがクラッシュするというバグをFull-Disclosureが報じたとき、わたしは最初、嘲笑を禁じ得なかった。「β版のブラウザがクラッシュするなど、当たり前ではないか」と思ったのだ。しかし、ほかの人々が指摘するように、Googleが提供するものはほとんどすべてがずっとβ版のままであることを考えれば、同社のβ版はほかの企業のβ製品よりも厳しい精査を受けるべきだ。一方、Chromiumアーキテクチャのおかげで、クラッシュするのは1つのタブだけで、ブラウザ全体ではないと指摘する人もいる。はたしてそうだろうか。
わたしはこのバグのコンセプト実証プログラムを試してみた。ブラウザはきちんと再起動したが(「Whoa! Google Chrome has crashed. Restart now?」というメッセージがクラッシュ時に表示された)、わたしには各ページが再ロードされているように見えた。これはブラウザ全体がクラッシュしたことを意味する。おそらくGoogleは、この報告に対してコメントをするだろう。
もう1つの興味深い報告は、ChromeがAppleのSafariと同じ「じゅうたん爆撃」の脆弱性を抱えているというZDNetの記事だ(この問題を指摘したのはセキュリティ研究者のアビブ・ラフ氏である)。デモの中に表示された大きなボタンをクリックすると、Chromeのダウンロードフォルダにファイル(「Free Coupwns!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.jar」という名前)が保存される。わたしの場合、このフォルダはデフォルトで「c:\temp」になっていた。ZDNetによると、このファイルがデスクトップに保存されたと報告したユーザーもいるということなので、おそらくChromeはデスクトップをダウンロード先に設定することもあるのだろう。このコンセプト実証プログラムは、ジェイル/サンドボックスがファイルシステムへのアクセスを阻止するという一般的認識を覆すものである。
さらにZDNetの報道によると、Chromeのユーザーエージェント文字列は「AppleWebKit/525.13」である。わたしの場合、Chromeのユーザーエージェントのフル文字列は「Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13」となっている。Appleはこれより少し後のバージョンで、じゅうたん爆撃バグを修正した。このように旧バージョンを利用するといったバカげたことは、オープンソースではよくあることだ。
これらの事実は、アーキテクチャはセキュリティバグを軽減できるが、除去することはできないことを示すものだ。とはいえ、ブラウザのアーキテクチャ変更は、セキュリティ面で大きなプラスとなるものであり、わたしはGoogleがそれを試みたことに拍手を送りたい。彼らは、当初目指していた目標を実際に達成したのだろうか――それはゼロデイハッキングだけでは分からない。Chromeは、ユーザーがわざわざインストールしてまで使いたくなるほど優れたブラウザになるのだろうか――それは容易なことではない。
Google ChromeはMicrosoft追撃の最終兵器になるか
Google Chrome初心者のためのワンポイントアドバイス
「V8」エンジンに込めた高速化の願い、Google Chromeの狙いとは
Google Chromeを使ってみた――「かくあるべき」ブラウザの姿
Google、「Mac版Chromeはなぜ遅れるのか」を弁明Editorial items that were originally published in the U.S. Edition of “eWEEK” are the copyrighted property of Ziff Davis Enterprise Inc. Copyright (c) 2011. All Rights Reserved.