セキュリティ · 1 min read · Feb 04, 2026

サイレントアタックの脆弱性により、5億台のAndroidスマートフォンが無反応になる可能性

Table Of Contents

  • サイレントアタック : Jelly BeanからLollipopまでのAndroidスマートフォンにおけるMediaserverの脆弱性が無反応にする(更新)
  • サイレントアタック
  • 概念実証

サイレントアタック : Jelly BeanからLollipopまでのAndroidスマートフォンにおけるMediaserverの脆弱性が無反応にする(更新)

TrendMicro Labsの研究者たちは、Androidデバイスにおいて奇妙な脆弱性を発見しました。この脆弱性が悪用されると、デバイスは無反応になります。ここでの「無反応」とは、脆弱性によって悪用されたAndroidスマートフォンが無反応になり、画面が無反応のままで通話を行ったり受けたりできなくなることを意味します。

Trend Micro Labsのウェブサイトによると、この脆弱性はAndroid 4.3 Jelly BeanからAndroid 5.1.1 (Lollipop)までのすべてのAndroidスマートフォンおよびタブレットに存在します。Trendは、現在のAndroid Mバージョンが攻撃に対して脆弱であるかどうかは明らかにしていません。

Android 4.3からAndroid 5.1.1 (Jelly BeanからLollipop)までのバージョンは、流通しているAndroidスマートフォンのほぼ半分で使用されているため、約5億台のAndroidスマートフォンがこの脆弱性に対して脆弱であることを意味します。

サイレントアタック

この脆弱性は、デバイスにインストールされた悪意のあるアプリを介して、またはPoCコードをホストする特別に作成されたウェブサイトを介して悪用される可能性があります。

最初の手法は、被害者がMKVファイルを埋め込んだアプリをインストールした場合、長期的な影響をAndroidデバイスに与える可能性があります。このようなアプリがAndroidスマートフォンが起動するたびに自動起動するように登録されている場合、悪用がトリガーされ、デバイスがクラッシュします。

2番目の手法では、Androidスマートフォンの所有者がコードをホストする不正なウェブサイトを訪問するか、デバイスがそのようなウェブサイトを訪れることで悪用がトリガーされます。

Trend Microの研究者によると、脆弱性はmediaserverサービスにあります。このサービスは、Androidデバイス上のメディアファイルをインデックスするために使用されます。

攻撃者がAndroidデバイスに不正なビデオファイルを送信すると、mediaserverサービスは、.mkv拡張子のファイルで使用されるMatroskaコンテナを使用してこのビデオを処理できません。

不正なMKVファイルを処理できないため、サービスがクラッシュし、デバイスが無反応になります。

この脆弱性は、mediaserverサービスがMKVファイルを解析する際に整数オーバーフローが発生することによって引き起こされます。音声データを解析する際に、バッファの外のメモリを読み取ったり、NULLアドレスにデータを書き込んだりします。

以下のソースコードは、frameworks/av/media/libstagefright/matroska/MatroskaExtractor.cppファイルに見つかったもので、脆弱性を詳細に示しています:

865 size_t offset = 1; 866 size_t len1 = 0; 867 while (offset < codecPrivateSize && codecPrivate[offset] == 0xff) {//codecPrivateはmkvファイルによって制御される 868 len1 += 0xff; 869 ++offset; 870 } 871 if (offset >= codecPrivateSize) { 872 return ERROR_MALFORMED; 873 } 874 len1 += codecPrivate[offset++]; 875 876 size_t len2 = 0; 877 while (offset < codecPrivateSize && codecPrivate[offset] == 0xff) { 878 len2 += 0xff; 879 ++offset; 880 } 881 if (offset >= codecPrivateSize) { 882 return ERROR_MALFORMED; 883 } 884 len2 += codecPrivate[offset++]; 885 886 if (codecPrivateSize < offset + len1 + len2) {//len1またはlen2が0xffffffffの場合、整数オーバーフローが発生した 887 return ERROR_MALFORMED; 888 } 889 890 if (codecPrivate[offset] != 0x01) { 891 return ERROR_MALFORMED; 892 } 893 meta->setData(kKeyVorbisInfo, 0, &codecPrivate[offset], len1);//ここでクラッシュ

概念実証

概念実証(PoC)アプリはTrend Microによって提供され、以下に再現されています。これは、攻撃がどのように機能するかを示すために不正なMKVファイル(res/raw/crash.mkv)を含んでいます。アプリが起動されると、mediaserverサービスはクラッシュし続けます。

サイレントアタック : Jelly BeanからLollipopまでのAndroidスマートフォンにおけるMediaserverの脆弱性が無反応にする

図1. 脆弱性がトリガーされた後にmediaserverサービスが継続的に再起動する

これにより、デバイスは完全に無反応になり、応答しなくなります。つまり:

  • 着信音、テキスト音、通知音が聞こえなくなります。ユーザーは着信やメッセージの通知に気づかず、通話を受けることさえできません。双方はお互いの声を聞くことができません。

  • UIが非常に遅く反応するか、完全に無反応になる可能性があります。電話がロックされている場合、解除できません。

この脆弱性は、昨日報告したStagefright攻撃に非常に似ています。Stagefright攻撃も、Android OSエコシステムがメディアファイルを処理する特定の方法によってトリガーされます。唯一の違いは、Stagefright攻撃の脆弱性はほぼすべてのAndroidスマートフォンに影響を与えますが、サイレントアタックの脆弱性はJelly BeanからLollipopまでのバージョンにのみ影響を与え、両方の脆弱性がメディアファイルを処理する方法にあります。

Trend Micro Labsは、2015年5月にGoogle(Androidエンジニアリングチーム)にこの脆弱性について通知したと述べていますが、現在のところ、Androidエンジニアリングチームによってこの脆弱性を修正するためのパッチはAndroidオープンソースプロジェクト(AOSP)コードに発行されていません。

TechwormはGoogleにこの脆弱性についてコメントを求めましたが、Googleの広報担当者はメールで次のように返信しました。

「研究者の報告に感謝します。これはAndroidのセキュリティを強化するのに役立ちます。私たちのチームは潜在的な悪用を注意深く監視していますが、実際の悪用の証拠は見られません。これが実際に悪用された場合、ユーザーに対する唯一のリスクはデバイス上のメディア再生の一時的な中断です。したがって、応答しないアプリケーションを単にアンインストールするか、ブラウザをハングさせるウェブサイトに戻らないことで問題を解決できます。さらに、将来のAndroidバージョンで修正を提供します。」

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。