Androidの脆弱性「Fake ID」の危険性:正規アプリインストール後の改ざんが可能に

米国のセキュリティ企業「Bluebox」の研究チーム「Bluebox Labs」は、2014年7月29日(米国時間)、不正アプリを正規アプリに偽装する可能性のある脆弱性を発見したことを報告しました。「Fake ID」と呼ばれるこの脆弱性は、アプリが正規のものであることを証明するための証明書の確認に関係しています。この脆弱性において特に注意すべき点は、Android のバージョン2.1(Eclair)からバージョン4.4(KitKat)までのプラットフォームを搭載したすべての Android端末に影響を与えることです。

■証明書と署名
インストールする Android端末用アプリは、公開リリース前に「署名」されることが必要です。アプリに「署名」するためには、証明書を使用します。SSL証明と同様、Android端末用アプリの証明書は、信頼された認証機関が発行します。この証明書は、Android がアプリを識別するための「パッケージ署名」として使用されます。この署名により、アプリをリリースした後の修正の整合性を保証し、攻撃者からの偽の修正プログラムによる改ざんを防ぎます。

Android は、これらの署名をどう割り当てるのでしょうか。Android端末にインストールされたすべてのアプリには、アプリのすべての情報を集めた「PackageInfo」と呼ばれるクラスが作成されます。「PackageInfo」には、「signatures」と呼ばれるプロパティが含まれており、アプリに重要な役割を担っています。同じ「signatures」を持っていた場合、アプリの更新パッケージとして別のアプリが認識されたり、2つのアプリが同じ仕組みを持っているものとして、情報を相互に共有することが可能になります。そして、Android のソースコードにハードコードされた署名と、アプリのプロパティ「signatures」内の署名を比較し、Android がそのアプリに特権を与えるかどうかを決定できる特別な場合がいくつかあります。

「Bluebox Labs」では、この署名システムがどう機能するかを 2つの例で示しました。1つは、「近距離無線通信(NFC)」に関連するファイルを指定した署名を持つ支払関連のアプリです。このアプリは、NFC に「セキュア・エレメント(SE)」を搭載したモバイル端末へのアクセスが可能でした。もう 1つは、Adobe の Flashプラグインといった webview のプラグインとして機能するアプリです。このアプリは Adobe の署名を持っていました。

■証明書チェーンの不具合
アプリが Android端末にインストールされると、Android のプラットフォームは、そのアプリの証明書ファイルを使用して、証明書チェーンを作成し、「PackageInfo」の「signatures」を作成します。しかし、この脆弱性により、Android は証明書チェーンの信頼性を検証せず、署名証明書の「保有者(Subject)」と「発行機関(Issuer)」の一致を確認するだけに留まります。残念ながら、Subject および Issuer は平文の文字列タイプとなっており、不正なユーザはこれらの情報を簡単に偽造できます。

■脆弱性を利用した攻撃
この脆弱性は、アプリの「信頼性」に関係しているため、サイバー犯罪者は、不正なアプリを作成して、疑いを持たれずに個人情報にアクセスすることが可能になります。例えば、NFC に関連する支払には、しばしば「Google Wallet」が使用されます。もし、不正なアプリに NFC の特権が付与された場合、この不正なアプリは Google Wallet のアカウント情報を収集し、指定された支払先アカウントを変更して、ユーザから金銭を窃取できるようになります。

また、WebKit のプラグインに関連するパーミッションと必要な署名を不正なアプリが持っていた場合、アプリはその特権を悪用することができます。このアプリは、ユーザがブラウザアプリを使って Webサイトを閲覧したり、webview のコンポーネントを必要とするアプリを使用するたびに、WebKit のプラグインのプロセスとして自動的に実行されます。この不正なアプリは、ブラウザ内、もしくは webview を使用するアプリ内で、コンポーネントプロセスとして働くため、アプリの情報をほぼ完全に管理できます。そして、ユーザの個人情報や銀行口座、Eメールの詳細情報など、関連するすべての情報にアクセスして送出し、改ざんすることが可能になります。

■Androidユーザの大半に影響
前述したように、更新プログラムが適用されていない各製造元企業の Android端末がこの脆弱性の影響を受けます。Google によると、2014年8月現在、全Android端末の約82% に、「Fake ID」の影響を受けるプラットフォームが搭載されています。影響を受けるAndroidのユーザ数は、昨年確認された脆弱性「マスターキー」に影響を受けたユーザ数に匹敵します。

Google は、この脆弱性に対する更新プログラムをすでに公開しています。しかし、Android には OSアップデートが端末ベンダーに依存することから生ずる「OS断片化」問題があり、すべてのユーザの Android端末が直ちにこの脆弱性から保護されるわけではありません。自身の端末に適用可能な更新バージョンが公開され次第、ユーザは Android端末のバージョンを更新して下さい。

また、Google は次のように発表しています。「Google は、公式アプリストア「Google Play」に提出されたすべてのアプリ、また Google Play 以外のアプリストア上のアプリで、 Google が検証したアプリの中で(中略)この脆弱性を利用した攻撃があった証拠は見つかっていません」

トレンドマイクロでは、ユーザを保護するために、この脆弱性を利用した可能性のある脅威や攻撃を監視しています。弊社の製品をご利用のお客様は、「ウイルスバスター モバイル for Android」「Trend Micro Mobile Security」により守られています。この脆弱性を利用したアプリは、「ANDROIDOS_FAKEID.A」として検出されます。

協力執筆者:Veo Zhang

参考記事:

  • The Dangers of the Android FakeID Vulnerability
    by Simon Huang (Mobile Security Engineer)
  •  翻訳:品川 暁子(Core Technology Marketing, TrendLabs)