Androidの脆弱性「Fake ID」の危険性:正規アプリインストール後の改ざんが可能に

http://blog.trendmicro.co.jp/archives/9642

Android は、これらの署名をどう割り当てるのでしょうか。Android端末にインストールされたすべてのアプリには、アプリのすべての情報を集めた「PackageInfo」と呼ばれるクラスが作成されます。「PackageInfo」には、「signatures」と呼ばれるプロパティが含まれており、アプリに重要な役割を担っています。同じ「signatures」を持っていた場合、アプリの更新パッケージとして別のアプリが認識されたり、2つのアプリが同じ仕組みを持っているものとして、情報を相互に共有することが可能になります。そして、Androidソースコードにハードコードされた署名と、アプリのプロパティ「signatures」内の署名を比較し、Android がそのアプリに特権を与えるかどうかを決定できる特別な場合がいくつかあります。

アプリが Android端末にインストールされると、Android のプラットフォームは、そのアプリの証明書ファイルを使用して、証明書チェーンを作成し、「PackageInfo」の「signatures」を作成します。しかし、この脆弱性により、Android は証明書チェーンの信頼性を検証せず、署名証明書の「保有者(Subject)」と「発行機関(Issuer)」の一致を確認するだけに留まります。残念ながら、Subject および Issuer は平文の文字列タイプとなっており、不正なユーザはこれらの情報を簡単に偽造できます。