トレンドマイクロは、Android端末の標準コンポーネント「Mediaserver」に存在する脆弱性を新たに確認しました。この脆弱性を利用することにより、攻撃者は、Mediaserver プログラムが標準として備えるパーミッションと同等のパーミッションで任意のコードを実行することが可能になります。
今回の脆弱性「CVE-2015-3842」は、Android のバージョン2.3 から 5.1.1 に影響を与えます。Googleは、「Android Open Source Project (AOSP)」を通じて、この脆弱性に関する詳細な情報と修正プログラムを公開しました。なお、2015年8月17日時点、この脆弱性を利用した実際の攻撃は確認されていません。
この脆弱性が確認される直前にも、Android の Mediaserver コンポーネントに存在する深刻な脆弱性が複数確認されています。「CVE-2015-3823」は携帯端末を無限に再起動させ、「ANDROID-21296336」は端末を動かなくさせる可能性があります。また、「Stagefright」として知られる「CVE-2015-3824」は「マルチメディア・メッセージング・サービス(Multimedia Messaging Service、MMS)」を介して不正プログラムをインストールするために利用されました。
■どのように脆弱性を利用するか
今回の脆弱性は、Mediaserver プログラムのコンポーネント「AudioEffect」に存在します。このコンポーネントは、クライアント(通常はアプリ)から送信される未確認の変数を使用します。攻撃を開始するために、攻撃者はアプリをユーザにインストールさせます。このアプリはパーミッションを必要としないため、ユーザにセキュリティ上問題がないと思わせます。
図1:どのようなパーミッションも必要としない PoC のアプリ
この脆弱性は、「pReplyData」および「pCmdData」のバッファサイズの確認に誤りがあることに起因します。「pReplyData」と「pCmdData」のバッファサイズ、およびバッファ「pCmdData」自体はすべてクライアントから提供されるパラメータです。Mediaserver コンポーネントは、これらのバッファを使用するため、バッファ「pCmdData」からサイズを読み込みます。Mediaserver コンポーネントは、「pReplyData」および「pCmdData」のバッファサイズがこのサイズより大きいと仮定します。しかし、バッファ「pCmdData」から読み込まれるサイズよりも小さい、クライアントから提供される「pReplyData」のバッファサイズを作成することができます。これがヒープオーバーフローの原因です。
弊社では、脆弱性を抱える Android のバージョン 5.1.1 のソースコードファイルを使用しました。図2 では、この脆弱性を抱えたファイルが「EffectBundle.cpp」であることがわかります。
図2:ヒープオーバーフローが発生する箇所
脆弱性を抱えるもう 1つのファイルは「EffectReverb.cpp」です。
図3:ヒープオーバーフローが発生する箇所
■PoC の実証
弊社は、Nexus 6 の Android 5.1.1(LMY47Z)の画像を使用して、「Proof-of-concept(PoC、概念実証型エクスプロイト。実際に有効な攻撃ができることを実証している攻撃コード)」の実証を行いました。弊社は、ヒープ領域のバッファ「pReplyData」をオーバフローさせることにより、Mediaserver コンポーネントをクラッシュさせるアプリを作成しました。図4 は、Java で記述した PoC のソースコードの一部です。
図4:オブジェクトから「mNativeAudioEffect」を取得
図5 は、C++ で記述した PoC のソースコードです。Java によって呼び出されます。
図5:不正なコードを Mediaserver に送信
この PoC では、アプリが実行されていると、Mediaserver コンポーネントはランダムな関数でクラッシュします。Mediaserver コンポーネントがクラッシュしなければ、PoC のアプリは終了し、再起動する可能性があります。
図6 は、クラッシュレポートのログの一部です。
図6:クラッシュレポートのログ
■想定される攻撃のシナリオ
この攻撃は完全に制御可能です。つまり、不正アプリは攻撃の開始と終了時期を決定できます。攻撃者は、Mediaserver プログラムが標準として備えるパーミッションと同等のパーミッションでコード実行が可能です。Mediaserver コンポーネントは、写真撮影や MP4ファイルの読み込み、動画の撮影といったメディアに関する作業を多く実行するため、ユーザのプライバシーが危険にさらされる可能性があります。Android のカスタマイズバージョンであっても、Mediaserverコンポーネントが変更されていない端末は影響を受けます。
ユーザが直面する問題は、攻撃が発生した時に原因を特定するのが難しいことでしょう。弊社の PoC の実証では、アプリを実行して攻撃しました。このような攻撃は検知するのが容易で、直感で確認することができます。アプリだけでの攻撃は可能ですが、しかし現実的には、容易に検出されるアプリは攻撃に利用されません。不正なアプリは、他の不正プログラムと同様、できる限り正規のように装い、動的に読み込ませる技術を利用して、数日後や数カ月後に継続的または断続的に攻撃を実行するまで身を潜めます。
■トレンドマイクロの対策
トレンドマイクロのモバイル端末向け総合セキュリティ製品「ウイルスバスター モバイル」(個人向け)、「Trend Micro Mobile Security」(法人向け)では、この脆弱性を利用し、上述の攻撃のシナリオを実行する脅威を検出し、攻撃の初期から一般のユーザを保護します。Androidユーザは、セーフモードで再起動し不正アプリをアンインストールすることもできます。しかし、端末に手を加えるのに慣れていないユーザにとっては、この方法は難しく感じるかもしれません。
また、端末機器メーカは、製品に定期的に修正プログラムを適用し、脆弱性を利用する攻撃からユーザを保護するようにして下さい。
■脆弱性情報公開までのタイムライン
弊社は、今回の脆弱性を Google に報告しています。以下はその時系列です。
- 6月19日:脆弱性および関連する PoC を Androidセキュリティチームに報告
- 6月19日:Androidセキュリティチームは、非常に深刻な脆弱性と認識し、「AndroidID-21953516」を割り当て
- 7月24日:Androidセキュリティチームは「CVE-2015-3842」を割り当て
- 8月1日:Androidセキュリティチームは AOSP で修正プログラムを公開
参考記事:
- 「MediaServer Takes Another Hit with Latest Android Vulnerability」
by Seven Shen (Mobile Threat Response Engineer)
翻訳:品川 暁子(Core Technology Marketing, TrendLabs)