Androidのパーサー差異に起因する新たな欠陥「GhostMap」が公開されました。実行可能コードも権限も持たない細工されたAPKによって、端末をsystem_serverの永続的なクラッシュループに陥らせることが可能です。
研究者Alecsandru Cătălin Daj氏のチームは、2026年8月5日付のセキュリティパッチを適用したAndroid 17搭載のPixel 10でこの不具合を再現しました。Android 10以降でも再現を確認しています。
調査の発端は2026年8月12日です。この日、あるバンキング型ドロッパーがインストール中にBitdefenderの解析用エミュレーターをクラッシュさせました。パッカーがAPKの内部構造を書き換えていたためです。
この書き換えにより、パッケージを解析するAndroidのコンポーネントが破綻しました。Bitdefenderは、作成者が意図的にこの現象を狙った形跡は確認していません。この種のドロッパーはAndroidで繰り返し見られる脅威で、Google Play上のAnatsaドロッパーもその一例です。
根本原因は、2つのネイティブライブラリがZIPエントリのメタデータについて異なる解釈をしていることです。libziparchiveでは、uncompressed_lengthの境界チェックは圧縮方式がkCompressStoredの場合にのみ実行されます。
一方、libandroidfwではkCompressDeflatedかどうかで処理が分岐し、それ以外の方式値はすべて無圧縮(stored)として扱われます。ZIPの方式フィールドは16ビット幅のため、無圧縮でもdeflateでもない値をエントリに設定できます。こうしたエントリは、一方のライブラリでは検証をすり抜け、もう一方では宣言されたサイズどおりにマッピングされます。
その結果、APKが過大なサイズでmmapされます。Bitdefenderの記録では、8,408バイトのファイルが約16MBにわたってマッピングされていました。余分な領域を裏付けるものが何もないため、カーネルはこれを許可します。実際のファイル末尾を超えて最初に読み込んだ時点で、SIGBUS(BUS_ADRERR)が発生します。
ストリーミング読み込みでは、__memcpy_aarch64_simd経由で_FileAsset::read内でフォールトが起きます。エントリ全体を読み込む場合は、宣言された長さのバッファを確保してmemcpyを呼び出す_FileAsset::ensureAlignmentのアラインコピー中にフォールトします。メモリ破壊は起きません。これはオーバーリードであり、コード実行ではありません。
影響は、不正なエントリをどのプロセスが解析するかによって変わります。マニフェストが不正であればインストーラーがクラッシュします。起動時にコアサービスが読み込むリソースが不正であれば、system_serverがクラッシュします。
Zygoteがこれを再起動しても、サービスは同じファイルを再び読み込み、再度クラッシュします。Bitdefenderは数秒間隔でのサイクルを記録しており、ある記録では110回に達しました。
セーフモードでも解決しません。クラッシュはフラグが設定された後、有効になる前に発生するためです。復旧には通常、初期化(ファクトリーリセット)が必要です。ADBによる削除が可能なのは、USBデバッグがあらかじめ有効だった場合に限られ、しかも最初のフルカーネル再起動より前に限られます。
Bitdefenderは、ほかの悪用シナリオも説明しています。不正なアイコンを使えば、ランチャーや設定アプリが描画時にクラッシュするため、マルウェアをアンインストールできなくなる可能性があります。
また、細工されたAPKによって、getPackageArchiveInfo()を呼び出すセキュリティスキャナーをクラッシュさせることも考えられます。JavaのCatch(catch (Throwable))では、ネイティブのSIGBUSを止められません。
これらはあくまで仮定のシナリオであり、Bitdefenderは実環境での悪用を確認していません。Master Key(CVE-2013-4787)やJanus(CVE-2017-13156)といった、パーサー差異を突く一連の脆弱性と同じ系統に属します。レガシーなv1署名パッケージについては、Janusのリスクも引き続き重要です。
Bitdefenderは2026年8月20日と25日にこの問題をGoogleに報告しました。Googleは最初の報告を「修正せず(再現不可)」としてクローズしました。2件目の報告については、セキュリティアップデートの対象外と判断し、機能担当チームに引き継いでいます。
Googleは2016年11月に、より影響の小さい亜種であるCVE-2016-6724を修正しました。GhostMapには修正が提供されていません。Bitdefender Mobile Securityは、この不正構造をAndroid.Riskware.Ghostmap.rAとして検出します。
Androidではサードパーティ製アプリによるインストールのブロックが認められていないため、警告が出た場合はユーザー自身が対処する必要があります。防御側はAndroidセキュリティ情報に含まれるDoS修正も確認し、サイドローディングを制限すべきです。
ANY.RUNを利用する1万6,000以上のSOCチームに加わり、脅威調査を効率化して手作業を減らしましょう。チーム向けの詳細を見る
翻訳元: https://cyberpress.org/ghostmap-android-vulnerability-exploits/