連載
» 2016年06月07日 05時00分 公開

Androidセキュリティ技術の最前線(4):Androidアプリマーケットを守る「不正アプリ抽出技術」総解説 (2/4)

[森達哉(早稲田大学),@IT]

マーケットの分析により、何が得られるのか?

 それでは、これらのマーケットから情報を収集・解析することで、何が得られるのだろうか? 図1は、マーケットから収集できる情報を示している。図のように、マーケットから収集可能な情報は「アプリ本体」(APKファイル、第2回参照)と「メタデータ」に大別される。さらにメタデータは、「アプリ開発者が提供する情報」と、「アプリ利用者が生成する情報」に分けられる。

 図1 マーケットで収集可能な情報 図1 マーケットで収集可能な情報

 マーケットから得られるこれらの情報を活用し、マーケット上の大量のアプリを包括的に分析することで、個々のアプリの分析では得られない全体的な傾向や、必要なセキュリティ上の対策を浮き彫りにすることができる。では、マーケットから取得したデータを分析することでどのような情報や知見が得られるのか、以下で具体的に見ていこう。

APKファイルを解析して得られるもの

 第2回で、個々のAPKファイルを解析し、マルウェア判定や脆弱(ぜいじゃく)性の検知を行う技術を紹介した。マーケットを対象にしたアプリ解析では、こうした解析技術を大規模な“アプリ群”に適用し、共通する傾向や特徴を抽出することで、セキュリティ・プライバシー対策上の有用な知見を発見することを目指す。以下に、マーケットを対象としたAPKファイル解析によって得られる情報の例を示す。

1.コード再利用の発見

 McAfeeのIsrael J. Mojica氏らのチームが2014年に発表した研究において、Google Playから収集した20万8601個のAPKファイルを解析した結果、全アプリのクラスのうち、18.75%がAndroid APIのベースクラスからの継承であることや、84.23%のクラスは2つ以上のアプリで利用されていること、1万7109個のアプリは完全に他のアプリのコピーであることが報告された。

 この研究により、開発者はAndroidアプリの開発に当たって、しばしばコードを再利用することで生産性を高めていることが定量的に示された。しかし、コードの再利用は生産性を高めると同時に、再利用されたコードの品質によっては、脆弱性の原因となったり、アプリの信頼性を低下させたりすることがある。従って、こうしたコードの再利用を発見することで、信頼性の低いアプリを抽出できる可能性がある。

参考文献、リンク

A large scale empirical study on software reuse in mobile apps』,I. J. Mojica他,IEEE Softwarevol. 31,no. 2,pp. 78–86,2014年3月

2.サードパーティーライブラリの利用状況の把握

 Androidアプリの開発では、さまざまなサードパーティーライブラリが利用される。こうしたサードパーティーライブラリの中には、ユーザーのプライバシー情報を収集し、ネットワークに送信するものもある。そのような特徴を持つサードパーティーライブラリが使用されたアプには、意図しない個人情報漏えいのリスクがある。

 また、ライブラリに脆弱性が含まれる場合、そのライブラリを利用するアプリ全体に脆弱性が生まれる場合がある。例えば、ワシントン州立大のRavi Bhoraskar氏らのチームが2014年に発表した研究では、「Facebook SDK」を利用した認証を行うAndroidアプリを公式マーケットから200個抽出して解析した結果、12の開発者による13個のアプリに、認証の脆弱性が存在することが判明した。

参考文献、リンク

Brahmastra: Driving apps to test the security of third-party components』,R. Bhoraskar他,Proceedings of the 23rd USENIX Conference on Security Symposium,pp. 1021–1036,2014年

3.公開鍵証明書を用いたマルウェア検出

 APKファイルには、アプリのデジタル署名を検証するための公開鍵証明書が同梱されている。Android OSはAPKファイルのインストール時にデジタル署名を検証し、失敗した場合にはインストールを実行しない。

 Androidアプリの署名で用いられるこの公開鍵証明書は、PKIの認証局に相当する証明書発行機関で署名されている必要はない。従って、アプリ開発者は公開鍵証明書の発行者や主体者として、任意の情報を設定することが可能である。また、公開鍵証明書は、開発者固有のフィンガープリント情報を含むことが少なくない(公開鍵そのものなど)。

 従って、公開鍵証明書から得られる情報に基づいてアプリをグルーピングすることにより、特定の性質を持つアプリの集合を抽出することができる。例えば、セキュアブレインの西田雅太氏らは2012年、マルウェア検体の多くは同じ証明書によって署名されていると発表している。つまり、あるマルウェアの署名に使われた証明書を特定することで、その証明書で署名された他のアプリ群をマルウェア候補として検出できるのである。

参考文献、リンク

Android Malware Heuristics』,西田雅太他

4.Webセキュリティの検証

 Androidアプリの多くはWebと連携する。Androidで標準的に提供される「WebView」ライブラリは、Webサイトを表示するためのブラウザ機能をアプリに提供するものであり、Webサービスとインタラクティブに連携したアプリを開発するのに便利な仕組みである。

 スタンフォード大学のPatrick Mutchler氏らのチームが2015年に発表した研究では、Google Playから収集した約117万個のアプリを解析したところ、約99万8000万個(85%)のアプリが何らかの形でWebViewを利用していることが分かった。また、それらのモバイル/Webアプリの約28%が、Webに由来する脆弱性を少なくとも1つは持つことが明らかになった。

参考文献、リンク

A Large-Scale Study of Mobile Web App Security』,P. Mutchler他,Proceedings of the Mobile Security Technologies Workshop(MoST),2015年5月

5.類似アプリの検出

 第3回でも触れたように、Androidプラットフォームでは「リパッケージ」が容易であるため、正規アプリの海賊版や、悪性コードを追加したマルウェアが生成されやすい。マーケットからこうした海賊版を検出するための技術はいろいろあるが、ここでは筆者らが開発した「AppRaiser」を紹介しよう。

 AppRaiserは、マーケットに存在する大規模なアプリ群から、類似したアプリを抽出・分類するシステムである。このシステムは、まずAPKファイルに含まれる全てのリソースファイルに対してハッシュ値を計算し、類似したハッシュ値の集合を持つアプリを検出する。

 次に、検出した類似アプリのペアについてコードの解析を行い、類似性および差分に関する分析を行う。コードがほとんど同じ場合は「クローン(海賊版)」である。コードに差分があり、悪質な挙動を行うコードが追加されている場合はリパッケージによる「アドウェア」や「マルウェア」の可能性がある。また、特段悪質なコードは含まないがコードに一定の差異が認められる場合は、同じ開発者が一部のコードを再利用して開発した「関連アプリ」として分類できる。

 このAppRaiserを、公式マーケットから収集した約130万個のアプリと、サードパーティーマーケットから収集した7万4000個のアプリに適用した結果、公式マーケットで検出された類似アプリのうち、約80%は「関連アプリ」であることが分かった。一方、サードパーティーマーケットで検出された類似アプリの50%は、「クローン(海賊版)」であった。また、サードパーティーマーケットで検出されたクローンアプリのオリジナルは、いずれも公式マーケットで配布されたアプリであった。さらに、クローンアプリの76%はマルウェアあるいはアドウェアと判定された。

 このように、マーケットに存在する大量のアプリを解析することにより、能率的にクローンアプリやマルウェア、アドウェアを検出することができる。

Copyright © ITmedia, Inc. All Rights Reserved.

編集部からのお知らせ

8月8日10時30分〜16時30分の間、システムメンテナンスのため記事の一部表示や資料のダウンロードができなくなります。ご理解のほどよろしくお願いいたします。

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。