パスワードを忘れた? アカウント作成
13476337 submission
Android

正規アプリの署名を維持したまま内容を改変できるAndroidの脆弱性「Janus」

タレコミ by headless
headless 曰く、
正規のAndroidアプリの署名を維持したまま内容を改変できるというAndroidの脆弱性「Janus」を発見者のGuardSquareが解説している(GuardSquareのブログ記事BetaNewsの記事The Registerの記事)。

Androidのアプリケーションパッケージ(APK)ファイルはZIPファイルであり、ZIPエントリの外側に任意のデータを挿入できる。しかしJAR署名スキームではZIPエントリのみを使用して署名の整合性を確認するため、ZIPエントリの外にデータが挿入されても署名は有効のままとなる。一方、Dalvik実行可能ファイル(DEX)は末尾に任意のデータを追加できる。そのため、DEXファイルの末尾にAPKファイルをつなげて1つのファイルにすることでDEXファイルとしてもAPKファイルとしても有効なファイルとなり、署名も維持される。

AndroidランタイムはAPKファイルからDEXファイルを抽出して実行するが、ファイルの種類を識別する際にDEXヘッダーを見つけるとDEXファイルとして実行してしまうのだという。Androidでは署名が異なるAPKファイルでインストール済みアプリをアップデートすることはできないが、悪意あるDEXファイルを正規のAPKファイルと組み合わせることで、正規のアップデートとしてインストールさせることが可能となる。こういったAPKファイルがGoogle Playで配布されることはないものの、ユーザーをだましてインストールさせることで、高い権限を持つシステムアプリを置き換えたり、バンキングアプリを偽物に置き換えたりといった攻撃が可能だ。

Android 5.0以降がJanusの影響を受けるが、Android 7.0以降で利用可能なAPK署名スキームv2ではAPKファイル全体が署名の検証対象になるため、v2署名を使用したアプリは影響を受けない。GuardSquareではこの問題を7月31日にGoogleへ報告しており、12月のAndroidセキュリティアップデートCVE-2017-13156として修正されている。
この議論は、 ログインユーザだけとして作成されたが、今となっては 新たにコメントを付けることはできません。
typodupeerror

未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー

読み込み中...