Android に標準搭載されたブラウザの脆弱性について

9月 18, 2014 Sophos Press Release

※この記事は本社サイト 「Naked Security」掲載の記事を翻訳したものです※
by Paul Ducklin on September 1, 2014
この記事に関する最新の更新情報は Naked Security 掲載記事をご確認ください。

~深刻なプライバシー侵害が発生する恐れあり、対策方法~

独立系セキュリティ研究者の Rafay Baloch 氏が Android のブラウザアプリに存在するセキュリティバグについての報告しました。このバグによって、他の Web サイトのデータを盗み出すことが可能になります。

同氏は、Metasploit でこのバグを「深刻なプライバシー侵害を引き起こすもの」と評しており、極めてショッキングなバグであることを説明するためのビデオを今後作成することになっています。

では、一体どのようなバグであり、私たちはどのように問題を回避すればよいのでしょうか?

同一生成元ポリシー

Web のセキュリティは、同一生成元ポリシー (Same Origin Policy) と呼ばれる異なるドメイン間でのアクセスを禁止する仕組みを活用しています。

大ざっぱな説明ですが、同一生成元ポリシーにより、サイト X からブラウザに読み込まれた情報にアクセスできるのは、サイト X の Web コンテンツ (JavaScript など) に限定できます。

たとえば、IFRAME やインラインフレームを使用すると、サイト Y はサイト X のコンテンツを簡単に取り込むことができます。

つまり、攻撃者は、攻撃者が用意した コンテンツと、セッション cookie などの重要なデータを含むユーザー自身の コンテンツを組み合わせてブラウザに表示させる Web ページを簡単にユーザーに送信できます。

攻撃者が Web コードで 実行できない ことは、ユーザーが別のユーザーに送信した情報を手に入れることです。

このブラウザでは、たとえば、Facebook のウィジェットを表示するときに、攻撃者とユーザーのコンテンツを混在させて表示される恐れがあります。

しかし、このような混在した形での表示はセキュリティ上許容されません。許可してしまうと、サイバー犯罪者は簡単に JavaScript をページに埋め込み、ユーザーによって提供されるコンテンツ (ログイン cookie など) からプライベートなデータを取り出すことができてしまいます。そして、盗み出されたデータはサーバーに送信され、さらに悪用されることになります。

Rafay Baloch 氏は、IFRAME にある別のサイトのコンテンツを吸い上げ、IFRAME の外部にある JavaScript を使用して、Document Object Model (DOM) データをその IFRAME から読み出す方法を発見しました。

皮肉なことに、NUL つまり 「ゼロ」文字から始める URL テキストを使用して JavaScript コールバックを登録する方法でこの操作を実行しています。

NUL は、JavaScript のテキスト文字列で使用される文字の 1 つですが、通常は C における文字列の最後を示します。

恐らく、Android Browser が URL が不審であるかどうかを検証するときに、NUL 文字を見つけるとリスクのあるコンテンツをチェックしなくなるのでしょう。

しかし、その URL を実際に処理すると、タブやスペースをスキップするように NUL バイトを無視しています。

良いニュースと悪いニュース

良いニュースは、単に ブラウザ と呼ばれる Android ブラウザアプリについて Google 社は今後廃止する意向を示していることです。

そのまま利用することも新たにインストールすることもできますが、Android 4.4 (KitKat) はデフォルトでは利用できなくなります。

悪いニュースは、古いバージョンの Android (恐らく 4.4 以前のすべてのバージョン) に、ブラウザが組み入れられていることです。

そしてブラウザ (Android Browser) は今後開発されることはないため、スマートフォンを提供しているベンダーがこのブラウザをリプレースするためのファームウェアアップデートを提供しない限り、このバグは放置される恐れがあります。

しかし、スマートフォンベンダーがファームウェアアップデートを定期的に行っている場合、Android 4.4 にすでにアップデートされており、このバグは解消されているでしょう。

対策

Android ブラウザをインストールしている場合、使用しないでください。

インストールされているかどうかは、 「設定」 → 「アプリ」 → 「すべて」にアクセスして、ブラウザのアイコンが表示されているかどうかを確認してください。

ブラウザは、オペレーティングシステムの一部として組み込まれているため、通常は削除できないでしょう。 「設定」 → 「アプリ」 → 「ダウンロード済み」にはブラウザは表示されていません。

「アプリ」 → 「すべて」ページで「ブラウザ」をタップすると、「無効にする」ボタンが表示されます (通常のアプリでは、「アンインストール」ボタンが表示されます)。

これにより、危険なブラウザアプリを使用できなくなり、危険な状況を回避できます。

BYOD (私物デバイスの持ち込み) プログラムの一環として Android デバイスを管理されているのでしたら、モバイルデバイス管理 (MDM) 製品を利用して、ブラウザアプリの利用をリモートから禁止し、そのリスクを排除できます。

もちろん、ユーザーには別のブラウザを提供する必要がありますが、MDM ソフトウェアを使用するとそれも簡単に実施できます。

Firefox、Chrome および Dolphin などを代替のブラウザとして利用できます。

今のところ、これらのブラウザには上記のバグは存在しません。