Forristalは、アプリを分解、修正、再組み立てすることで、開発者の署名が変更されたと説明しました。 新しい署名はGoogleマップを使用するライセンスが付与されていないため、拒否されました。 彼らの新しいクエスト。 署名を変更せずにコードを変更します。
Forristalは、Androidが署名済みアプリを検証するときに発生する詳細な一連のイベントを順を追って説明しました。 各レイヤーは、コードモデルが改ざんされていないことを確認し、パッケージ全体のデジタル署名で終わる前のレイヤーを検証します。 彼はあらゆる段階でシステムを攻撃しようとしましたが、ほとんど運がありませんでした。
「APK、JAR、およびZIP形式は基本的に同じです」とForristal氏は述べています。 「JARとAPKには追加のコンポーネントがあります。」 彼の最終的な成功には、ZIP形式の活用が含まれていました。 既存の有効なファイルと同じ名前の「邪悪な」ファイルを挿入すると、検証者は有効なファイルにサインオフしましたが、「邪悪な」ファイルが起動されました。
どうして? Androidはベリファイアと実際のインストーラーで異なるZIPファイル管理コードを使用しているためです。 「ZIPファイルの解析の不一致がこのエラーの原因です」とForristal氏は説明します。 「実際、Androidコードベースには 8つの 個別のZIPファイル解析実装があります。」
サンドボックスから
「私はこのトリックを長続きさせた」とフォリスターは言った。 「さあ、それを素晴らしいものにしましょう。」 iOSと同様、Androidは各アプリを独自のサンドボックスで実行するため、アプリは別のアプリに属するリソースにアクセスできません。 「サンドボックスに入る唯一の方法は、同じ開発者によって署名されることです」と彼は説明しました。 「それがアップデートを可能にするものです。」
「システム全体として、同じ概念に同意しています」と彼は続けた。 「システムサンドボックスは、他のすべてのサンドボックスを強制します。すべての設定を制御します。ルートではなく、すべてのデータ、アプリ、パスワード、設定があります。残りは何ですか?システムは非常に強力です。」 システムサンドボックスにアクセスするアプリは通常、プラットフォームメーカーによって署名されます。 「プラットフォームに署名したアプリを手に入れてちょっとしたトリックをするだけで、システムレベルのアクセスが必要になりました。FourSquareマップよりも格好いいです」
サードパーティのVPNはプラットフォーム署名が必要であり、ボーナスとして、システムサンドボックスへのアクセスを既に要求していることがわかりました。 Forristalは、「邪悪な」コードをサードパーティのVPNに挿入するために使用した3つの簡単なコマンドを表示し、「ユーバーハッキングツール」について冗談を言っています。 結果? 完全なシステムレベルのアクセス権を持つトロイの木馬。
簡単な悪用
Forristal氏は、マスターセキュリティ技術者のSaurik(Jay Freeman)がこの概念を次のレベルに引き上げました。 彼のCydia ImpactorツールはOSXおよびWindowsで実行され、エクスプロイトを自動化します。 「デバイスを接続します」と、Forristal氏は述べています。 」
Forristal氏は、デバイスのプロセッサタイプは問題ではないと指摘しました。 この攻撃は、ASLR(アドレスシステムレイアウトのランダム化)またはDEP(データ実行防止)の影響を受けません。 彼はAndroidの4世代で動作する1つのバージョンを作成しましたが、必要なのはJavaの知識だけです。 「理解しやすく、悪用しやすいため、これをBlack Hatに提出しました」とForristal氏は述べています。
より多くのマスターキー
Forristalは、「マスターキー」と見なされる可能性のある最近発見された他の多くのバグを駆逐しました。 Authenticated Attributesという機能のコードを調べると、Blueboxの研究者はコメントアウトされ、「TODO」とマークされた行を見つけました。 コードが欠落しているため、ファイルをどのように変更しても検証に合格します。 多くのファイルがこの機能を使用していません、とForristalは述べています。 「証明書が見つかった場合、証明書ファイルをコピーして貼り付け、開発者の身元を引き受けることができます。認証属性を使用してアプリに署名した場合、身元を明かすことができます。」 このバグは、Blueboxが報告する前に修正されたため、信用されません。
中国の研究者によって報告された「隠れたトロイの木馬」攻撃は、Androidの複数のZIPファイルパーサーを悪用するいくつかの可能な方法の1つにすぎません。 これらの攻撃は、あるパーサーユーザーが整数に署名し、他のユーザーが符号なし整数を使用するという事実を利用します。
「1つのファイルを置き換えることすらありません」とForristal氏は熱狂しました。 「このトリックを使用して、まったく異なるZIPファイルをフィードすることができます。1つは検証され、もう1つは実行されます。このスペースでのいくつかのトリックとヒントは、このアプローチにさらに大きな力を示す可能性があります」
この手法を使用したマルウェアはすでに実在していますが、ここで説明したようなトロイの木馬化されたファイルをGoogle Playに取り込むこと はできません 。 常に公式の精査に合格したアプリのみをインストールすれば、 おそらく 安全です。 それでも、安全のために、利用可能なAndroidアップデートをすぐにインストールしてください。