Android端末の94%に影響する脆弱性「Stagefright」、MMS以外でも攻撃可能

セキュリティ企業「Zimperium zLabs」は、2015年7月下旬、Android端末に存在する脆弱性を確認しました。「Stagefright」として知られるこの脆弱性を利用することにより、攻撃者は「マルチメディア・メッセージング・サービス(Multimedia Messaging Service、MMS)」を介して不正プログラムを携帯端末にインストールすることが可能です。この脆弱性を利用した攻撃は実行可能性が高いため、大きな注目を集めました。

この脆弱性の影響を受けるのは、Android のバージョン 4.0.1 から5.1.1 です。これは現在使用されている全Android端末の 94.1% に相当します。

トレンドマイクロも、独自にこの脆弱性を確認していました。本稿では、この脆弱性の詳細を説明します。

■脆弱性の解析
弊社が以前報告した脆弱性と同様に、今回の脆弱性も Android OS の標準コンポーネント「mediaserver」に存在します。mediaserver は、オープン形式のメディアファイルを処理するコンポーネントです。

脆弱性を抱えるバージョンの mediaserver は、不正な MP4ファイルを正しく処理することができません。結果として、ヒープオーバフローが生じ、ヒープ領域の情報が上書きされます。これによって、コード実行が可能となり、端末上にアプリがダウンロードされる可能性があります。

この脆弱性の根本原因は、MP4ファイルを解析した時の整数オーバフローです。これにより、バッファ外のメモリに情報が書き込まれます。特に、mediaserver が「tx3g」のフラグが付いたデータを解析した時に発生します。「tx3g」は通常、テキスト形式の字幕に使用されます。

影響を受けるコードは、frameworks/av/media/libstagefright/MPEG4Extractor.cpp で確認できます。

■「Proof-of-concept(PoC、概念実証型エクスプロイト)」の実証
弊社では、mediaserver を攻撃するために実行される可能性のある 3つのシナリオを検証しました。検証のためにコマンド「adb shell top | grep mediaserver」をプロセスに使用しました。結果として mediaserver の「プロセス識別番号(Process Identification Number、PIN)」が変更されるため、プロセスが破壊し、再起動するのが確認できました。

シナリオ1:アプリからの攻撃

アプリからどのようにこの脆弱性が利用されるかを実証します。特別に細工した MP4ファイルは、mediaserver のヒープ領域を破壊、もしくは悪用します。ここでは破壊のみですが、攻撃者は特定のデータブロックを構築して、ヒープ領域に書き込み、実行フローを制御することも可能です。

図1:破壊された mediaserver のデバッグログ出力
図1:破壊された mediaserver のデバッグログ出力

シナリオ2:URL からの攻撃

弊社は、シナリオ1 と同じ MP4ファイル(ファイル名「mp4.mp4」)を図2 のように HTMLファイルに埋め込み、Webサーバにアップロードしました。Android 5.1.1 に内蔵の WebView(Twitterアプリで使用)で Webサイトにアクセスすると、シナリオ1 と同様の結果となりました。

図2:MP4ファイルが埋め込まれている HTMLコード
図2:MP4ファイルが埋め込まれている HTMLコード

また、モバイル版 Chromeブラウザでは、<video>タグが埋め込まれたビデオの先行読み込みや自動再生は無効になっているはずですが、この制約がどういうわけか回避されており、この不正なファイルは、Webサイトを表示しただけで読み込まれ、mediaserver のヒープオーバフローを生じさせました。

シナリオ3:MMSメッセージからの攻撃

大きな注目を集めたのがこのシナリオです。弊社は、不正な MP4ファイルを MMSメッセージに添付して対象とする携帯端末に送信しました。テストに使用したのは、Android 5.1.1 搭載の Nexus 6 です。この端末では、MMSメッセージを受信しただけで、mediaserver が 2度クラッシュしました。この攻撃方法は、ユーザの介入を必要としないため、特に危険です。ファイルを送信するだけで、脆弱性を抱える端末を攻撃することが可能になります。

図3:MMSメッセージに添付された不正な MP4ファイル
図3:MMSメッセージに添付された不正な MP4ファイル

検証の結果として、この脆弱性は非常に影響力が大きいことが証明されたと言えます。攻撃者は、この脆弱性を利用して効果的に制御し、攻撃の開始と終了時期を決定します。mediaserver はマルチメディアに関連した以下の作業を処理します。

  • MP4ファイルの起動および読み込み
  • MPEG4ストリームのデコードおよびエンコード
  • 写真撮影
  • 動画、音声、スクリーンの記録
  • SDカードからの画像、動画の読み込みおよび書き込み
  • SDカードへの画像、動画の読み込みおよび書き込み

攻撃者は、mediaserver が標準として持つパーミッションと同様のパーミッションで自身のコードを実行することができるようになります。

■被害にあわないためには
この脆弱性の脅威についてユーザとして対策できることは、あまり多くありません。修正プログラムはすでに Google から提供されていますが、その適用可能時期は 端末メーカやキャリアによって異なります。自身が利用する端末への修正適用可能時期について端末メーカもしくはキャリアへ問い合わせるべきでしょう。また、カスタマイズされた Android のバージョンでも mediaserver を変更していない場合、この脅威にさらされます。

攻撃者側は、脆弱性攻撃コードを含む MP4ファイルにアクセスさせるだけで攻撃が成立します。特に MMSメッセージが攻撃経路となった場合には受信しただけで脆弱性が発動するため、この脅威による攻撃の発生に気付くことさえできない可能性があります。MMSメッセージの自動取得を無効にすることで若干のリスクが緩和できますが、ユーザは自身で着信を確認し、その都度 MMSメッセージの危険性を判断した上で、取得、開封する必要が生じます。

MMSメッセージ以外でも、不正な MP4ファイルをホストした URL へ誘導しアクセスさせる攻撃手法などが考えられます。メールや Webサイト上の書き込みなどに含まれる URL は、アクセス前にその正当性をよく検討することが必要です。

■トレンドマイクロの対策
モバイル環境での総合セキュリティ対策として、弊社の個人利用者向け「ウイルスバスター モバイル」、法人利用者向け「Trend Micro Mobile Security」は、こうした脅威に対する保護層を追加することができます。特に、攻撃に利用される不正サイトへのアクセスをブロックすることにより、脆弱性への攻撃を未然に防ぐことが可能です。

■脆弱性情報公開までのタイムライン
弊社は、今回の脆弱性に関して、責任をもって Google に報告しています。以下はその時系列です。

  • 5月19日:Androidセキュリティチームに PoC と共に脆弱性を報告
  • 5月22日:Androidセキュリティチームは、この脆弱性に「ANDROID-21336907」を割り当て、非常に深刻な脆弱性と位置付け
  • 5月26日:Androidセキュリティチームは、この脆弱性に「CVE-2015-3824」を割り当て
  • 7月28日:修正プログラムを提供できることを確認、Androidセキュリティチームは公開スケジュールについて弊社と合意

弊社では引き続き、この脆弱性を利用した新たな攻撃について監視を行います。新たな情報があった場合には本ブログなどを通じ情報発信してまいります。

参考記事:

 翻訳:品川 暁子(Core Technology Marketing, TrendLabs)