JP5736335B2 - アプリケーション解析装置、アプリケーション解析システム、およびプログラム - Google Patents

アプリケーション解析装置、アプリケーション解析システム、およびプログラム Download PDF

Info

Publication number
JP5736335B2
JP5736335B2 JP2012062120A JP2012062120A JP5736335B2 JP 5736335 B2 JP5736335 B2 JP 5736335B2 JP 2012062120 A JP2012062120 A JP 2012062120A JP 2012062120 A JP2012062120 A JP 2012062120A JP 5736335 B2 JP5736335 B2 JP 5736335B2
Authority
JP
Japan
Prior art keywords
application
permission
file
log
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012062120A
Other languages
English (en)
Other versions
JP2013196310A (ja
Inventor
秀明 川端
秀明 川端
隆将 磯原
隆将 磯原
竹森 敬祐
敬祐 竹森
歩 窪田
歩 窪田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
KDDI Corp
Original Assignee
KDDI Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by KDDI Corp filed Critical KDDI Corp
Priority to JP2012062120A priority Critical patent/JP5736335B2/ja
Publication of JP2013196310A publication Critical patent/JP2013196310A/ja
Application granted granted Critical
Publication of JP5736335B2 publication Critical patent/JP5736335B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Description

本発明は、アプリケーションの機能を解析するアプリケーション解析装置およびアプリケーション解析システムに関する。また、本発明は、本アプリケーション解析装置としてコンピュータを機能させるためのプログラムにも関する。
汎用OS(オペレーティングシステム)を用いたオープンプラットフォームを採用する、スマートフォンと呼ばれる携帯情報端末が普及している。また、スマートフォンに搭載される汎用OSとして、端末で管理される情報や機能を利用するための命令や関数の集合であるAPI (Application Program Interface)が豊富に用意されているAndroid(登録商標)が注目を集めている。本明細書では一例として、Android(登録商標) OSを搭載したスマートフォン等の端末について記載する。
Android(登録商標)では、アプリケーションが利用する機能群や情報群はパーミッションとして定義されている。パーミッションは、アプリケーションを実行可能な端末内の機能・情報の利用や設定の変更に係る権限である。アプリケーションのインストール時に、アプリケーションが使用するパーミッションがユーザに通知(宣言)され、ユーザによってインストールの可否が判断される。アプリケーションがインストールされた後、アプリケーションは、インストール時にユーザに通知したパーミッションにより許可されている範囲内で動作する。このような、パーミッションに基づいてアプリケーションの動作に制限を与える機構により、アプリケーションの不正な動作が防止される。なお、実際の動作時には使用しないパーミッションをインストール時に宣言することも可能である。
Google(登録商標) Playと呼ばれるWebサイトでは多数のアプリケーションが販売されている。このWebサイトの機能の1つに自動アップデート機能がある。自動アップデート機能とは、アプリケーションの開発者が、公開している自身のアプリケーションを更新した際に、そのアプリケーションをインストールしているユーザの端末において、アプリケーションが自動で更新される機能である。ただし、開発者がアプリケーションを更新した際に、アプリケーションが利用するパーミッションが増えていれば、上記の自動アップデート機能による更新時に、ユーザによる確認を行うための処理が行われ、ユーザが承諾しない限り、ユーザの端末にインストールされているアプリケーションが更新されることはない。
上記の自動アップデート機能の仕組みを悪用して攻撃を行う手法がある。この手法では、以下のようにして攻撃が行われる。アプリケーションが初めて公開される際に、過剰にパーミッションが付与されたアプリケーションが公開される。ユーザの端末にアプリケーションがインストールされた後、アプリケーションは不正な動作を行わず、ユーザの信頼を得る。そして、アプリケーションを更新する際に開発者が、当初に過剰に付与されたパーミッションを利用する処理に関する不正なコードを埋め込む更新を行う。自動アップデート機能による更新時には、アプリケーションが利用するパーミッションは増えていないので、ユーザによる確認は行われず、ユーザの端末にインストールされているアプリケーションが更新される。その後、不正なコードが埋め込まれたアプリケーションが、最初のインストール時に宣言したパーミッションを使用してユーザの端末上で不正な動作を行う。
上記の手法による攻撃を抑制するためには、アプリケーションに過剰にパーミッションが付与されているか否かを確認することが有効である。非特許文献1には、アプリケーションを逆アセンブル(逆コンパイル)して得たソースコードに基づいて、アプリケーションに対して過剰にパーミッションが付与されているか否かを確認する手法が提案されている。この手法では、アプリケーションが呼び出すAPIと、そのAPIの実行に必要となるパーミッションとを対応付けた表を予め用意しておき、アプリケーションのソースコードを解析して検出したAPIに対応付けられているパーミッションを表から検索することが行われている。
Adrienne Porter Felt, Erika Chin, Steve Hanna, Dawn Song, David Wagner,"Android Permissions Demystified," 18th ACM Conference on Computer and Communications Security, Oct. 2011.USA
しかし、逆アセンブルに耐性があるネイティブライブラリを含むアプリケーションの解析を行う場合、ネイティブライブラリをアセンブルできないため、アプリケーションが呼び出すAPIを完全には抽出することができない。つまり、アプリケーションに付与されているパーミッションを完全には確認することができない。
本発明は、上述した課題に鑑みてなされたものであって、アプリケーションに対してパーミッションが適切に付与されているか否かを判定することができるアプリケーション解析装置、アプリケーション解析システム、およびプログラムを提供することを目的とする。
本発明は、上記の課題を解決するためになされたもので、アプリケーションの機能を実現する実行ファイルと、アプリケーションに付与されたパーミッションを示す第1のパーミッション情報を含むマニフェストファイルとを含むアプリケーションファイルを記憶する記憶部と、前記アプリケーションファイルを実行することで前記アプリケーションを起動する起動部と、前記アプリケーションが処理を行う際に必要なパーミッションが前記アプリケーションに付与されているか否かを判定する第1のコードを含むOSのプログラムに対して、前記アプリケーションに付与されているパーミッションを示す第2のパーミッション情報をログに出力する第2のコードを追加することにより修正された前記OSのプログラムを前記アプリケーションの動作中に実行するログ出力部と、前記アプリケーションファイルに含まれる前記マニフェストファイルから前記第1のパーミッション情報を抽出する抽出部と、前記マニフェストファイルから抽出された前記第1のパーミッション情報と、前記ログに出力された前記第2のパーミッション情報とを比較する比較部と、を備えたことを特徴とするアプリケーション解析装置である。
また、本発明のアプリケーション解析装置において、前記ログ出力部は、前記アプリケーションが処理を行う際に必要なパーミッションが前記アプリケーションに付与されているか否かを判定する、OSのアプリケーションフレームワークで提供されているAPI(Application Program Interface)の第1のコードを含むOSのプログラムに対して、前記アプリケーションに付与されているパーミッションを示す第2のパーミッション情報をログに出力する第2のコードを追加することにより修正された前記OSのプログラムを前記アプリケーションの動作中に実行することを特徴とする。
また、本発明のアプリケーション解析装置において、前記ログ出力部は、前記アプリケーションが処理を行う際に必要なパーミッションに対応するグループIDが前記アプリケーションに付与されているか否かを判定する第1のコードを含むOSのプログラムに対して、前記アプリケーションに付与されているパーミッションを示す第2のパーミッション情報をログに出力する第2のコードを追加することにより修正された前記OSのプログラムを前記アプリケーションの動作中に実行することを特徴とする。
また、本発明のアプリケーション解析装置において、前記ログ出力部は、前記アプリケーションが処理を行う際に必要なパーミッションに対応するグループIDが前記アプリケーションに付与されているか否かを判定する、OSのカーネルで提供されている関数の第1のコードを含むOSのプログラムに対して、前記アプリケーションに付与されているパーミッションを示す第2のパーミッション情報をログに出力する第2のコードを追加することにより修正された前記OSのプログラムを前記アプリケーションの動作中に実行することを特徴とする。
また、本発明のアプリケーション解析装置において、前記第2のコードは前記第1のコードの中に追加されていることを特徴とする。
また、本発明のアプリケーション解析装置において、前記ログ出力部は、前記アプリケーションが処理を行う際に必要なパーミッションが前記アプリケーションに付与されているか否かを判定し、ファイルの読み出しまたはファイルの書き込みを行う、OSのカーネルで提供されている第1の関数の第1のコードと、前記第1の関数が呼び出される前に呼び出される、前記カーネルで提供されている第2の関数の第2のコードとを含むOSのプログラムに対して、前記アプリケーションに付与されているパーミッションを示す第2のパーミッション情報をログに出力する第3のコードを追加することにより修正された前記OSのプログラムを前記アプリケーションの動作中に実行することを特徴とする。
また、本発明のアプリケーション解析装置において、前記第3のコードは前記第2のコードの中に追加されていることを特徴とする。
また、本発明のアプリケーション解析装置において、前記第3のコードは、前記アプリケーションが処理を行う際に必要なパーミッションに対応するグループIDが前記アプリケーションに付与されている場合に、前記アプリケーションに付与されているパーミッションを示す第2のパーミッション情報をログに出力するコードであることを特徴とする。
また、本発明のアプリケーション解析装置において、前記第3のコードは、前記第2の関数が呼び出されたときに指定された引数がファイルの書き込みを示している場合に、前記アプリケーションに付与されているパーミッションを示す第2のパーミッション情報をログに出力するコードであることを特徴とする。
また、本発明は、第1の装置と、第2の装置とを備え、前記第1の装置は、アプリケーションの機能を実現する実行ファイルと、アプリケーションに付与されたパーミッションを示す第1のパーミッション情報を含むマニフェストファイルとを含むアプリケーションファイルを記憶する記憶部と、前記アプリケーションファイルを実行することで前記アプリケーションを起動する起動部と、前記アプリケーションが処理を行う際に必要なパーミッションが前記アプリケーションに付与されているか否かを判定する第1のコードを含むOSのプログラムに対して、前記アプリケーションに付与されているパーミッションを示す第2のパーミッション情報をログに出力する第2のコードを追加することにより修正された前記OSのプログラムを前記アプリケーションの動作中に実行するログ出力部と、前記アプリケーションファイルおよび前記ログを前記第2の装置へ送信する送信部と、を有し、前記第2の装置は、前記アプリケーションファイルおよび前記ログを前記第1の装置から受信する受信部と、前記アプリケーションファイルに含まれる前記マニフェストファイルから前記第1のパーミッション情報を抽出する抽出部と、前記マニフェストファイルから抽出された前記第1のパーミッション情報と、前記ログに出力された前記第2のパーミッション情報とを比較する比較部と、を有することを特徴とするアプリケーション解析システムである。
また、本発明は、第1の装置と、第2の装置とを備え、前記第1の装置は、アプリケーションの機能を実現する実行ファイルと、アプリケーションに付与されたパーミッションを示す第1のパーミッション情報を含むマニフェストファイルとを含むアプリケーションファイルを記憶する記憶部と、前記アプリケーションファイルを実行することで前記アプリケーションを起動する起動部と、前記アプリケーションが処理を行う際に必要なパーミッションが前記アプリケーションに付与されているか否かを判定する第1のコードを含むOSのプログラムに対して、前記アプリケーションに付与されているパーミッションを示す第2のパーミッション情報をログに出力する第2のコードを追加することにより修正された前記OSのプログラムを前記アプリケーションの動作中に実行するログ出力部と、前記アプリケーションファイルに含まれる前記マニフェストファイルから前記第1のパーミッション情報を抽出する抽出部と、前記マニフェストファイルから抽出された前記第1のパーミッション情報および前記ログを前記第2の装置へ送信する送信部と、を有し、前記第2の装置は、前記第1のパーミッション情報および前記ログを前記第1の装置から受信する受信部と、前記第1のパーミッション情報と、前記ログに出力された前記第2のパーミッション情報とを比較する比較部と、を有することを特徴とするアプリケーション解析システムである。
また、本発明は、第1の装置と、第2の装置と、第3の装置とを備え、前記第1の装置は、アプリケーションの機能を実現する実行ファイルと、アプリケーションに付与されたパーミッションを示す第1のパーミッション情報を含むマニフェストファイルとを含むアプリケーションファイルを記憶する記憶部と、前記アプリケーションファイルを実行することで前記アプリケーションを起動する起動部と、前記アプリケーションが処理を行う際に必要なパーミッションが前記アプリケーションに付与されているか否かを判定する第1のコードを含むOSのプログラムに対して、前記アプリケーションに付与されているパーミッションを示す第2のパーミッション情報をログに出力する第2のコードを追加することにより修正された前記OSのプログラムを前記アプリケーションの動作中に実行するログ出力部と、前記アプリケーションファイルを前記第2の装置へ送信し、前記ログを前記第3の装置へ送信する第1の送信部と、を有し、前記第2の装置は、前記アプリケーションファイルを前記第1の装置から受信する第1の受信部と、前記アプリケーションファイルに含まれる前記マニフェストファイルから前記第1のパーミッション情報を抽出する抽出部と、前記マニフェストファイルから抽出された前記第1のパーミッション情報を前記第3の装置へ送信する第2の送信部と、を有し、前記第3の装置は、前記ログを前記第1の装置から受信し、前記第1のパーミッション情報を前記第2の装置から受信する第2の受信部と、前記第1のパーミッション情報と、前記ログに出力された前記第2のパーミッション情報とを比較する比較部と、を備えたことを特徴とするアプリケーション解析システムである。
また、本発明は、第1の装置と、第2の装置と、第3の装置とを備え、前記第1の装置は、アプリケーションの機能を実現する実行ファイルと、アプリケーションに付与されたパーミッションを示す第1のパーミッション情報を含むマニフェストファイルとを含むアプリケーションファイルを記憶する第1の記憶部と、前記アプリケーションファイルを実行することで前記アプリケーションを起動する起動部と、
前記アプリケーションが処理を行う際に必要なパーミッションが前記アプリケーションに付与されているか否かを判定する第1のコードを含むOSのプログラムに対して、前記アプリケーションに付与されているパーミッションを示す第2のパーミッション情報をログに出力する第2のコードを追加することにより修正された前記OSのプログラムを前記アプリケーションの動作中に実行するログ出力部と、前記ログを前記第3の装置へ送信する第1の送信部と、を有し、前記第2の装置は、前記アプリケーションファイルを記憶する第2の記憶部と、前記アプリケーションファイルに含まれる前記マニフェストファイルから前記第1のパーミッション情報を抽出する抽出部と、前記マニフェストファイルから抽出された前記第1のパーミッション情報を前記第3の装置へ送信する第2の送信部と、を有し、前記第3の装置は、前記ログを前記第1の装置から受信し、前記第1のパーミッション情報を前記第2の装置から受信する受信部と、前記第1のパーミッション情報と、前記ログに出力された前記第2のパーミッション情報とを比較する比較部と、を備えたことを特徴とするアプリケーション解析システムである。
また、本発明は、アプリケーションの機能を実現する実行ファイルと、アプリケーションに付与されたパーミッションを示す第1のパーミッション情報を含むマニフェストファイルとを含むアプリケーションファイルを記憶する記憶部と、前記アプリケーションファイルを実行することで前記アプリケーションを起動する起動部と、前記アプリケーションが処理を行う際に必要なパーミッションが前記アプリケーションに付与されているか否かを判定する第1のコードを含むOSのプログラムに対して、前記アプリケーションに付与されているパーミッションを示す第2のパーミッション情報をログに出力する第2のコードを追加することにより修正された前記OSのプログラムを前記アプリケーションの動作中に実行するログ出力部と、前記アプリケーションファイルに含まれる前記マニフェストファイルから前記第1のパーミッション情報を抽出する抽出部と、前記マニフェストファイルから抽出された前記第1のパーミッション情報と、前記ログに出力された前記第2のパーミッション情報とを比較する比較部と、としてコンピュータを機能させるためのプログラムである。
本発明によれば、アプリケーションファイルに含まれるマニフェストファイルから抽出された第1のパーミッション情報と、アプリケーションがパーミッションを必要とする処理を行う際にログに出力された第2のパーミッション情報とを比較することによって、アプリケーションに対してパーミッションが適切に付与されているか否かを判定することができる。
本発明の一実施形態によるアプリケーション解析装置の構成を示すブロック図である。 本発明の一実施形態によるアプリケーション解析装置の動作の手順を示すフローチャートである。 本発明の一実施形態におけるアプリケーションフレームワークのクラスのコードを示す参考図である。 本発明の一実施形態におけるカーネルのコードを示す参考図である。 本発明の一実施形態におけるカーネルのコードを示す参考図である。 本発明の一実施形態におけるマニフェストファイルの内容を示す参考図である。 本発明の一実施形態におけるアプリケーションログの内容を示す参考図である。 本発明の一実施形態によるアプリケーション解析システムの構成を示すブロック図である。 本発明の一実施形態によるアプリケーション解析システムの構成を示すブロック図である。 本発明の一実施形態によるアプリケーション解析システムの構成を示すブロック図である。 本発明の一実施形態によるアプリケーション解析システムの構成を示すブロック図である。
以下、図面を参照し、本発明の実施形態を説明する。本明細書および図面では、便宜上、必要に応じてandroid(登録商標)という文字列を*andrd*という文字列で代用し、Android(登録商標)という文字列を*Andrd*という文字列で代用し、java(登録商標)という文字列を*jv*という文字列で代用し、linux(登録商標)という文字列を*ln*という文字列で代用している。すなわち、*andrd*という文字列はandroid(登録商標)という文字列と等価であり、*Andrd*という文字列はAndroid(登録商標)という文字列と等価であり、*jv*という文字列はjava(登録商標)という文字列と等価であり、*ln*という文字列はlinux(登録商標)という文字列と等価である。
図1は、本発明の一実施形態によるアプリケーション解析装置の構成を示している。本実施形態のアプリケーション解析装置は、OS にAndroid(登録商標)を実装したスマートフォン等の装置として構成されている。図1に示すようにアプリケーション解析装置は、記憶部10、アプリケーション起動部11、アプリケーション12、パーミッション情報抽出部13、ログ出力部14、パーミッション解析部15を有する。
記憶部10は、OSのプログラムや、解析対象のアプリケーションの実行ファイルを含むパッケージファイル(アプリケーションファイル)、アプリケーション解析装置が使用する各種データ等を記憶する。Android(登録商標)では、パッケージファイルの形式でアプリケーションが公開されている。パッケージファイルは、例えば拡張子が.apkのファイルであり、命令列(実行コード)を含む実行ファイル(例えば拡張子が.dex)、アプリケーションが利用するパーミッション(権限)が定義されたマニフェストファイル(例えば拡張子が.xml)、アプリケーションが利用する画像ファイル(例えば拡張子が.jpg)等を含む。
アプリケーション起動部11は、記憶部10に格納されているパッケージファイルを実行することにより、アプリケーション12を起動する。アプリケーション12は、パッケージファイルに含まれる実行ファイルの実行コードに従って、アプリケーションの処理として規定された各種の処理を行う。パーミッション情報抽出部13は、パッケージファイルに含まれるマニフェストファイルから、解析対象のアプリケーションに付与されたパーミッションの情報(第1のパーミッション情報)を抽出する。
ログ出力部14は、アプリケーション12がパーミッションを必要とする処理を実行する際に、OSの機能を利用して、アプリケーション12にそのパーミッションが付与されていることを示す情報(第2のパーミッション情報)をログに出力する。パーミッション解析部15は、パーミッション情報抽出部13がマニフェストファイルから抽出した情報と、ログに出力された情報とを比較し、アプリケーション12に過剰にパーミッションが付与されているか否かを判定する。
パーミッション情報抽出部13がマニフェストファイルから抽出した情報は、アプリケーションに付与されているパーミッションを示している。アプリケーションに付与されているパーミッションは、アプリケーションの動作時に実際に使用されるパーミッションを含むほか、現状のアプリケーションでは使用されないパーミッション(アプリケーションの更新後に使用される可能性があるパーミッション)を含みうる。
一方、ログに出力された情報は、アプリケーションの動作中に実際に使用されたパーミッションを示している。したがって、パーミッション情報抽出部13が抽出した情報と、ログに出力された情報とを比較して一致したパーミッションは、アプリケーションの動作時に実際に使用されるパーミッションであり、一致しなかったパーミッションは、現状のアプリケーションでは使用されず、過剰に付与されたパーミッションである。したがって、アプリケーションに対してパーミッションが適切に付与されているか否かを判定することができる。
本実施形態のOSのプログラムでは、OSのアプリケーションフレームワークで提供されている既存のクラスを定義しているコード、あるいはOSのカーネルのコードに対して、アプリケーション12に付与されているパーミッションに関する情報をログに出力するコードが追加されている。つまり、本実施形態のOSのプログラムは、ログ出力部14の動作を規定したコードを含む。
OSのソースプログラムのうちアプリケーションフレームワークのコードとカーネルのコードとの少なくとも一方に対して、ログ出力部14の動作を規定するコードが追加されることで、OSのソースプログラムが修正され、修正されたソースプログラムがアセンブル(コンパイル)されることで、修正されたOSの実行プログラム(実行ファイル)が生成される。このようにして生成されたOSの実行プログラムがアプリケーション解析装置にインストールされている。アプリケーション解析装置においてOSが起動することでログ出力部14が起動し、アプリケーション12の動作中に、上記の追加されたコードを実行することで、ログ出力部14は、アプリケーション12に付与されているパーミッションに関する情報をログに出力する。
アプリケーション起動部11、パーミッション情報抽出部13、パーミッション解析部15については、それらのコードをOSのプログラムに追加してもよいし、それらを含むアプリケーションを構成してもよい。
本実施形態のOSのプログラム(ログ出力部14のコードを含む)と、アプリケーション起動部11、パーミッション情報抽出部13、パーミッション解析部15のプログラムとをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータ(本実施形態のアプリケーション解析装置)に読み込ませ、実行させることにより、アプリケーション起動部11、パーミッション情報抽出部13、ログ出力部14、パーミッション解析部15は、各部に対して規定された処理を実行する。
ここで、「コンピュータ」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。
また、上述したプログラムは、このプログラムを記憶装置等に格納したコンピュータから、伝送媒体を介して、あるいは伝送媒体中の伝送波により他のコンピュータに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように、情報を伝送する機能を有する媒体のことをいう。また、上述したプログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能を、コンピュータに既に記録されているプログラムとの組合せで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
次に、本実施形態によるアプリケーション解析装置の動作を説明する。図2はアプリケーション解析装置の動作を示している。まず、パーミッション情報抽出部13は、記憶部10から解析対象のアプリケーションのパッケージファイルを読み出し、パッケージファイルに含まれるマニフェストファイルから、解析対象のアプリケーションに付与されたパーミッションの情報を抽出する(ステップS100)。
続いて、アプリケーション起動部11は記憶部10から解析対象のアプリケーションのパッケージファイルを読み出して実行し、アプリケーション12を起動する(ステップS105)。起動したアプリケーション12は各種の処理を行う。アプリケーション12が、ユーザの操作に応じて処理を実行する場合には、アプリケーション解析装置の管理者等の操作者が必要な操作を行う。
ログ出力部14は、アプリケーション12がパーミッションを必要とする処理を実行する際に、アプリケーション12にそのパーミッションが付与されていることを示す情報をログに出力する(ステップS110)。続いて、パーミッション解析部15は、パーミッション情報抽出部13がマニフェストファイルから抽出した情報と、ログに出力された情報とを比較し、両者の一致・不一致を検出する(ステップS115)。続いて、パーミッション解析部15は、ステップS115で比較を行った結果に基づいて、アプリケーション12に過剰にパーミッションが付与されているか否かを判定する(ステップS120)。
アプリケーション12に過剰にパーミッションが付与されている場合、パーミッション解析部15は、そのことを示す情報を出力する(ステップS125)。また、アプリケーション12に適切にパーミッションが付与されている場合、パーミッション解析部15は、そのことを示す情報を出力する(ステップS130)。ステップS125,S130における情報の出力は、記憶部10等の記憶装置に対する情報の保存でもよいし、表示部を使用した情報の表示でもよいし、他の装置に対する情報の送信でもよい。
過剰にパーミッションが付与されているアプリケーションは、自動アップデート機能を利用して悪性アプリケーションに変化する可能性がある。このようなアプリケーションをWebサイトから排除する等の対策を行うことによって、自動アップデート機能の仕組みを利用した攻撃の発生を防止することができる。
次に、OSのアプリケーションフレームワークのコード、OSのカーネルのコードに対して、ログ出力部14の動作を規定するコードを追加する具体的な例を説明する。
(1)OSのアプリケーションフレームワークのコードに対してコードを追加する例
アプリケーションフレームワークで提供されているクラスのうちPackageManagerServiceクラスが定義するAPIのコードに対してコードを追加する例を説明する。PackageManagerServiceクラスは、アプリケーションのインストールおよびアンインストールの管理を行ったり、アプリケーションに適切なパーミッションが付与されているか否かの判定を行ったりするAPI(メソッド)を定義しているクラスである。PackageManagerServiceクラスのAPIのうち、CheckUidPermissionが、アプリケーションに適切なパーミッションが付与されているか否かを判定するAPIである。本実施形態では、一例として、CheckUidPermissionのコードに対して、アプリケーションに付与されているパーミッションに関する情報をログに出力するコードが追加される。
図3はPackageManagerServiceクラスのコードを示している。PackageManagerServiceクラス全体のコードのうち、CheckUidPermissionのコード300に対してコード310,320が追加されている。アプリケーションは、CheckUidPermission を呼び出す際、2つの引数(第1引数、第2引数)を指定する。第1引数では要求されるパーミッションの名称(パーミッション名)が指定され、第2引数では呼び出し元のアプリケーションの識別子であるユーザID(uid)が指定される。コード310,320は、CheckUidPermission を呼び出す際に指定された第1引数と第2引数をログに出力することを示している。
コード310,320は、アプリケーションが要求したパーミッションを許可することを示すコード330,340の直前に挿入されている。したがって、アプリケーションが、許可されたパーミッションにより処理を実行する場合、コード310,320の処理が実行され、ログに情報が記録される。
(2)OSのカーネルのコードに対してコードを追加する例
カーネルでは、適切なグループID (gid)がアプリケーションに付与されているか否かを判定することにより、アプリケーションに適切なパーミッションが付与されているか否かを判定する機構がある。インストールの際、アプリケーションに付与されたパーミッションに応じた1以上のグループIDがアプリケーションに付与される。例えば、*andrd*.permission.CAMERA、*andrd*.permission.READ_LOGS、*andrd*.permission.WRITE_EXTERNAL_STORAGE、*andrd*.permission.ACCESS_CACHE_FILESYSTEM、*andrd*.permission.INTERNETという5つのパーミッションで制限された処理を行うには、それぞれcamera、log、sdcard_rw、cache、inetというグループIDが付与されている必要がある。
以下では、カーネルのコード、特にカーネルで提供されている関数のコードに対して、ログ出力部14の動作を規定するコードを追加する2種類の例を説明する。
(2−1)ファイルアクセスのパーミッションに関する判定を行う関数のコードに対してコードを追加する例
パーミッションを必要とする処理を行うカーネルの関数のコードには、関数を呼び出したアプリケーションに適切なグループIDが付与されているか否かを判定するコードが含まれる。例えば、アプリケーションのインストール時に、インターネットへの接続を制限するパーミッションである*andrd*.permission.INTERNETの使用が宣言され、ユーザによって許可されると、inetというグループIDがアプリケーションに付与される。その後、*andrd*.permission.INTERNETを必要とする関数がアプリケーションによって呼び出されると、呼び出したアプリケーションのグループIDが確認され、グループIDがinetであった場合のみ、その関数の実行が継続する。
本実施形態では、一例として、ソケットを生成するコードを含む関数であるinet_creatのコードに対して、アプリケーションに付与されているパーミッションに関する情報をログに出力するコードが追加される。inet_creat は、カーネルを構成するファイルであるnet/ipv4/af_inet.cで定義されており、処理の実行に*andrd*.permission.INTERNETを必要とする。
図4はinet_creatのコードを示している。関数を呼び出したアプリケーションに適切なグループID(inet)が付与されているか否かを判定するコード400の直後にコード410,420が追加されている。コード410は、inet_creatを呼び出したアプリケーションのユーザIDを取得するポインタの生成と初期化を行うことを示している。コード420は、使用されたパーミッション(*andrd*.permission.INTERNET)の名称(パーミッション名)と、ファイルを開いたアプリケーションのユーザIDとをログに出力することを示している。
コード400では、関数を呼び出したアプリケーションに適切なグループID(inet)が付与されていない場合、処理結果がリターンされるため、コード410,420の処理は実行されない。したがって、アプリケーションに適切なグループID(inet)が付与されており、アプリケーションが、許可されたパーミッションにより処理を実行する場合、コード410,420の処理が実行され、ログに情報が記録される。
(2−2)ファイルアクセスのパーミッションに関する判定を行う関数の実行に伴って実行される関数のコードに対してコードを追加する例
*andrd*.permission.READ_LOGSは、アプリケーションによるアプリケーションログの取得を制限しているパーミッションである。アプリケーションに対してこのパーミッションが付与されているか否かの判定は、アプリケーションログが保存されているファイルである/dev/log/mainのアクセス権限があるか否かを判定することにより行われる。ファイル毎にアクセス権限に応じたグループIDが付与されており、ファイルに付与されているグループIDと同じグループIDが付与されたアプリケーションのみがそのファイルへのアクセスを許可される。/dev/log/mainに付与されているグループIDはlogであり、logというグループIDがアプリケーションに付与されているか否かの判定が行われる。
このように、ファイルのアクセス権限があるか否かを判定することによりアプリケーションに適切なパーミッションが付与されているか否かを判定するパーミッションとして、*andrd*.permission.READ_LOGS のほか、*andrd*.permission.CAMERA、*andrd*.permission.WRITE_EXTERNAL_STORAGE、*andrd*.permission.ACCESS_CACHE_FILESYSTEM等がある。これらのパーミッションに関する判定のコードは、ファイルの読み出しを行う関数(read)およびファイルの書き込みを行う関数(write)のコード内にあり、これらの関数が実行される際に、パーミッションに関する判定が行われる。
本実施形態では、一例として、読み出し/書き込みを行う関数が実行される直前に必ず実行される関数であるdo_sys_openのコードに対して、アプリケーションに付与されているパーミッションに関する情報をログに出力するコードが追加される。do_sys_openは、ファイルを開くシステムコールを定義する関数であり、カーネルを構成するファイルであるfs/open.cで定義されている。
図5はdo_sys_openのコードを示している。ファイルのパスを指定してファイルを開くコード500の直後にコード510〜550が追加されている。コード510は、do_sys_openを呼び出したアプリケーションのユーザIDを取得するポインタの生成と初期化を行うことを示している。
コード520は、開いたファイルのグループIDがcameraである場合に、使用されたパーミッション(*andrd*.permission.CAMERA)の名称(パーミッション名)と、ファイルを開いたアプリケーションのユーザIDとをログに出力することを示している。コード530は、開いたファイルのグループIDがlogである場合に、使用されたパーミッション(*andrd*.permission.READ_LOGS)の名称(パーミッション名)と、ファイルを開いたアプリケーションのユーザIDとをログに出力することを示している。
コード540は、開いたファイルのグループIDがsdcar_rwであり、かつ、do_sys_openの引数であるflagsの値をO_ACCMODEでマスクした値がO_RDONLYでない場合に、使用されたパーミッション(*andrd*.permission.WRITE_EXTERNAL_STORAGE)の名称(パーミッション名)と、ファイルを開いたアプリケーションのユーザIDとをログに出力することを示している。コード550は、開いたファイルのグループIDがcacheである場合に、使用されたパーミッション(*andrd*.permission.ACCESS_CACHE_FILESYSTEM)の名称(パーミッション名)と、ファイルを開いたアプリケーションのユーザIDとをログに出力することを示している。
*andrd*.permission.WRITE_EXTERNAL_STORAGEは、SDカードへのファイルの書き込みを制限するパーミッションである。ファイルの読み出しとファイルの書き込みのどちらが行われる場合でも、ファイルを開くためにdo_sys_openが実行されるため、開くファイルのグループIDを特定しても、ファイルの書き込みを検出したことにはならない。そこで、コード540が示す処理では、do_sys_openが呼び出される際に指定される引数であるflagsの値からファイルの書き込みが検出される。
flagsの値とO_ACCMODEの値とのAND積をとることにより、ファイル読み込み専用の値であるO_RDONLY、ファイル書き込み専用の値であるO_WRONLY、ファイル読み書き用の値であるO_RDWRのいずれかの値を取得することができる。ファイルの書き込みを制限するパーミッションである*andrd*.permission.WRITE_EXTERNAL_STORAGEの使用を検出するために、コード540が示す処理では、ファイル読み出し専用の値であるO_RDONLY以外の値が取得された場合に、ユーザIDとパーミッション名とをログに出力する。
上記のように、アプリケーションが、許可されたパーミッションにより処理を実行する場合、コード510〜550の処理により、ログに情報が記録される。
do_sys_openのコードにコードを追加する代わりに、上記の(2−1)のように読み出し/書き込みを行う関数のコードにコードを追加することも可能である。読み出し/書き込みを行う関数のコードにコードを追加する場合には、読み出しに関するパーミッションの情報をログに出力するためのコードは読み出しを行う関数のコードに追加し、書き込みに関するパーミッションの情報をログに出力するためのコードは書き込みを行う関数のコードに追加する必要があるため、関数毎に別々のコードにコードを追加する煩雑さがある。一方、do_sys_openのコードにコードを追加する場合には、ファイルの読み出しに関するパーミッションとファイルの書き込みに関するパーミッションとの両方を同じdo_sys_openのコードに追加すればよいので、上記の煩雑さを低減することができる。
Android(登録商標)で用意されている多く(9割以上)のパーミッションに関する判定は、アプリケーションフレームワーク層で行われている。したがって、上記(1)のようにアプリケーションフレームワークのコードに対してコードを追加するだけでもよいが、アプリケーションで使用されるパーミッションの検出精度をより向上させるためには、上記(1)のようにアプリケーションフレームワークのコードに対してコードを追加すると共に、上記(2)のようにカーネルのコードに対してコードを追加することがより望ましい。
例えば、*andrd*.permission.CAMERA、*andrd*.permission.INTERNETに関する判定はアプリケーションフレームワーク層とカーネル層の両方で行われているため、アプリケーションフレームワークのコードに対してコードを追加するだけでも、アプリケーションにこれらのパーミッションが付与されていることを検出することが可能である。一方、例えば、*andrd*.permission.READ_LOGS、*andrd*.permission.WRITE_EXTERNAL_STORAGEに関する判定はカーネル層のみで行われるため、カーネルのコードに対してコードを追加することにより、アプリケーションにこれらのパーミッションが付与されていることを検出することが可能である。
次に、パーミッション情報抽出部13が、解析対象のアプリケーションに付与されたパーミッションの情報をマニフェストファイルから抽出する方法を説明する。以下では、一例として、aaptを用いた方法を説明する。Android(登録商標)のSDKでは、マニフェストファイルを抽出するツールとしてaaptが用意されている。例えば、「aapt d xmltree AAA.apk *Andrd*Manifest.xml」というコマンドを実行することによりマニフェストファイルを抽出することができる。「AAA.apk」は取得対象のパッケージファイルのファイル名である。アプリケーションに付与されたパーミッションは、マニフェストファイル内のuses-permissionタグ内の「*andrd*:name=」という文字列の直後に定義されている。
図6はマニフェストファイルの内容の一例を示している。コード600は、アプリケーションに付与されたパーミッションを定義している。パーミッション情報抽出部13は、パッケージファイルからマニフェストファイルを抽出し、マニフェストファイル内の文字列を解析し、アプリケーションに付与されたパーミッションの名称(パーミッション名)を示す文字列を抽出する。
次に、パーミッション解析部15が、アプリケーション12に付与されているパーミッションに関する判定を行う方法を説明する。ログには、ログ出力部14によって出力されたパーミッション名とユーザIDとの組合せが記録されている。パーミッション解析部15は、ログから、解析対象のアプリケーションのユーザIDと関連付けられているパーミッション名を抽出する。
アプリケーションが起動すると、図7に示すアプリケーションログが最初に出力される。アプリケーションログにはユーザID700が記録されている。パーミッション解析部15は、解析対象のアプリケーションを起動したときのアプリケーションログに記録されているユーザIDと同じユーザIDに関連付けられているパーミッション名を、ログ出力部が出力した情報を含むログから抽出する。
続いて、パーミッション解析部15は、マニフェストファイルから抽出されたパーミッション名と、ログから抽出されたパーミッション名との一致・不一致を確認する。マニフェストファイルから抽出された全てのパーミッション名について、ログから抽出されたパーミッション名と一致した場合には、パーミッション解析部15は、アプリケーション12に適切にパーミッションが付与されていると判定する。また、マニフェストファイルから抽出されたパーミッション名の中に、ログから抽出されたパーミッション名のいずれとも一致しないパーミッション名が含まれる場合、パーミッション解析部15は、アプリケーション12に過剰にパーミッションが付与されていると判定する。
上述したように、本実施形態によれば、パッケージファイル(アプリケーションファイル)に含まれるマニフェストファイルから抽出されたパーミッション名と、アプリケーションがパーミッションを必要とする処理を行う際にログに出力されたパーミッション名とを比較することによって、アプリケーションに対してパーミッションが適切に付与されているか否かを判定することができる。したがって、アプリケーションの自動アップデート機能を利用して悪性アプリケーションに変化するアプリケーションを検出することができる。
また、本実施形態によれば、逆アセンブルに耐性があるネイティブライブラリを含むアプリケーションについても、アプリケーションを起動して動作させれば、アプリケーションに付与されているパーミッションの情報を収集することが可能となる。このため、ネイティブライブラリを含むアプリケーションに対してパーミッションが適切に付与されているか否かを判定することができる。
また、本実施形態によれば、OSのアプリケーションフレームワークで提供されているクラスのAPIのうち、アプリケーションに適切なパーミッションが付与されているか否かを判定するAPIであるCheckUidPermissionのコードに対して、アプリケーションに付与されているパーミッションに関する情報をログに出力するコードが追加される。このため、多くのパーミッションに関して、アプリケーションに付与されているパーミッションに関する情報を取得することができる。
また、本実施形態によれば、OSのカーネルで提供されている関数のうち、ファイルアクセスのパーミッションに関する判定を行う関数のコード、あるいは、ファイルアクセスのパーミッションに関する判定を行う関数の実行に伴って実行される関数のコードに対して、アプリケーションに付与されているパーミッションに関する情報をログに出力するコードが追加される。このため、判定がカーネル層のみで行われるパーミッションに関しても、アプリケーションに付与されているパーミッションに関する情報を取得することができる。
次に、本実施形態の変形例を説明する。本実施形態によるアプリケーション解析装置の機能を複数の装置に分散させたアプリケーション解析システムを構成してもよい。図8はアプリケーション解析システムの第1の構成例を示している。
図8に示すアプリケーション解析システムはログ出力装置1a(第1の装置)とパーミッション解析装置2a(第2の装置)を有する。ログ出力装置1aは、OS にAndroid(登録商標)を実装したスマートフォン等の装置として構成され、パーミッション解析装置2aはPC等の装置として構成されている。
ログ出力装置1aは、記憶部10、アプリケーション起動部11、アプリケーション12、ログ出力部14、送信部20aを有する。パーミッション解析装置2aは、パーミッション情報抽出部13、パーミッション解析部15、受信部21aを有する。図8に示す構成のうち図1に示した構成に付与されている符号と同一の符号が付与されている構成は、前述した各構成と同一であるので、説明を省略する。
送信部20aは、記憶部10に格納されているパッケージファイルのコピーとログ(アプリケーションログを含む)をパーミッション解析装置2aへ送信する。受信部21aは、パッケージファイルとログをログ出力装置1aから受信し、パッケージファイルをパーミッション情報抽出部13へ出力し、ログをパーミッション解析部15へ出力する。
図9はアプリケーション解析システムの第2の構成例を示している。図9に示すアプリケーション解析システムはログ出力装置1b(第1の装置)とパーミッション解析装置2b(第2の装置)を有する。ログ出力装置1bは、OS にAndroid(登録商標)を実装したスマートフォン等の装置として構成され、パーミッション解析装置2bはPC等の装置として構成されている。
ログ出力装置1bは、記憶部10、アプリケーション起動部11、アプリケーション12、パーミッション情報抽出部13、ログ出力部14、送信部20bを有する。パーミッション解析装置2bは、パーミッション解析部15、受信部21bを有する。図9に示す構成のうち図1に示した構成に付与されている符号と同一の符号が付与されている構成は、前述した各構成と同一であるので、説明を省略する。
送信部20bは、パーミッション情報抽出部13が抽出した情報とログ(アプリケーションログを含む)をパーミッション解析装置2bへ送信する。受信部21bは、パーミッション情報抽出部13が抽出した情報とログをログ出力装置1bから受信し、パーミッション解析部15へ出力する。
図10はアプリケーション解析システムの第3の構成例を示している。図10に示すアプリケーション解析システムは、ログ出力装置1c(第1の装置)、パーミッション解析装置2c(第3の装置)、パーミッション抽出装置3c(第2の装置)を有する。ログ出力装置1cは、OS にAndroid(登録商標)を実装したスマートフォン等の装置として構成され、パーミッション解析装置2c、パーミッション抽出装置3cはPC等の装置として構成されている。
ログ出力装置1cは、記憶部10、アプリケーション起動部11、アプリケーション12、ログ出力部14、送信部20cを有する。パーミッション解析装置2cは、パーミッション解析部15、受信部21cを有する。パーミッション抽出装置3cは、パーミッション情報抽出部13、受信部22c、送信部23cを有する。図10に示す構成のうち図1に示した構成に付与されている符号と同一の符号が付与されている構成は、前述した各構成と同一であるので、説明を省略する。
送信部20cは、ログ(アプリケーションログを含む)をパーミッション解析装置2cへ送信し、記憶部10に格納されているパッケージファイルのコピーをパーミッション抽出装置3cへ送信する。受信部22cはパッケージファイルをログ出力装置1cから受信し、パーミッション情報抽出部13へ出力する。送信部23cは、パーミッション情報抽出部13が抽出した情報をパーミッション解析装置2cへ送信する。受信部21cは、ログをログ出力装置1cから受信し、パーミッション解析部15へ出力する。また、受信部21cは、パーミッション情報抽出部13が抽出した情報をパーミッション抽出装置3cから受信し、パーミッション解析部15へ出力する。
図11はアプリケーション解析システムの第4の構成例を示している。図11に示すアプリケーション解析システムは、ログ出力装置1d(第1の装置)、パーミッション解析装置2d(第3の装置)、パーミッション抽出装置3d(第2の装置)を有する。ログ出力装置1dは、OS にAndroid(登録商標)を実装したスマートフォン等の装置として構成され、パーミッション解析装置2d、パーミッション抽出装置3dはPC等の装置として構成されている。
ログ出力装置1dは、記憶部10、アプリケーション起動部11、アプリケーション12、ログ出力部14、送信部20dを有する。パーミッション解析装置2dは、パーミッション解析部15、受信部21cを有する。パーミッション抽出装置3dは、パーミッション情報抽出部13、送信部23c、記憶部24を有する。図11に示す構成のうち図1に示した構成に付与されている符号と同一の符号が付与されている構成は、前述した各構成と同一であるので、説明を省略する。また、受信部21c、送信部23cは、図10における受信部21c、送信部23cとそれぞれ同一である。
送信部20dは、ログ(アプリケーションログを含む)をパーミッション解析装置2bへ送信する。記憶部24は、解析対象のアプリケーションのパッケージファイルを記憶する。このパッケージファイルは、パーミッション情報抽出部13によって読み出されて使用される。
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
1a,1b,1c,1d・・・ログ出力装置、2a,2b,2c,2d・・・パーミッション解析装置、3c,3d・・・パーミッション抽出装置、10,24・・・記憶部、11・・・アプリケーション起動部、12・・・アプリケーション、13・・・パーミッション情報抽出部、14・・・ログ出力部、15・・・パーミッション解析部、20a,20b,20c,20d,23c・・・送信部、21a,21b,21c,22c・・・受信部

Claims (14)

  1. アプリケーションの機能を実現する実行ファイルと、アプリケーションに付与されたパーミッションを示す第1のパーミッション情報を含むマニフェストファイルとを含むアプリケーションファイルを記憶する記憶部と、
    前記アプリケーションファイルを実行することで前記アプリケーションを起動する起動部と、
    前記アプリケーションが処理を行う際に必要なパーミッションが前記アプリケーションに付与されているか否かを判定する第1のコードを含むOSのプログラムに対して、前記アプリケーションに付与されているパーミッションを示す第2のパーミッション情報をログに出力する第2のコードを追加することにより修正された前記OSのプログラムを前記アプリケーションの動作中に実行するログ出力部と、
    前記アプリケーションファイルに含まれる前記マニフェストファイルから前記第1のパーミッション情報を抽出する抽出部と、
    前記マニフェストファイルから抽出された前記第1のパーミッション情報と、前記ログに出力された前記第2のパーミッション情報とを比較する比較部と、
    を備えたことを特徴とするアプリケーション解析装置。
  2. 前記ログ出力部は、前記アプリケーションが処理を行う際に必要なパーミッションが前記アプリケーションに付与されているか否かを判定する、OSのアプリケーションフレームワークで提供されているAPI(Application Program Interface)の第1のコードを含むOSのプログラムに対して、前記アプリケーションに付与されているパーミッションを示す第2のパーミッション情報をログに出力する第2のコードを追加することにより修正された前記OSのプログラムを前記アプリケーションの動作中に実行することを特徴とする請求項1に記載のアプリケーション解析装置。
  3. 前記ログ出力部は、前記アプリケーションが処理を行う際に必要なパーミッションに対応するグループIDが前記アプリケーションに付与されているか否かを判定する第1のコードを含むOSのプログラムに対して、前記アプリケーションに付与されているパーミッションを示す第2のパーミッション情報をログに出力する第2のコードを追加することにより修正された前記OSのプログラムを前記アプリケーションの動作中に実行することを特徴とする請求項1に記載のアプリケーション解析装置。
  4. 前記ログ出力部は、前記アプリケーションが処理を行う際に必要なパーミッションに対応するグループIDが前記アプリケーションに付与されているか否かを判定する、OSのカーネルで提供されている関数の第1のコードを含むOSのプログラムに対して、前記アプリケーションに付与されているパーミッションを示す第2のパーミッション情報をログに出力する第2のコードを追加することにより修正された前記OSのプログラムを前記アプリケーションの動作中に実行することを特徴とする請求項1に記載のアプリケーション解析装置。
  5. 前記第2のコードは前記第1のコードの中に追加されていることを特徴とする請求項2〜請求項4のいずれか一項に記載のアプリケーション解析装置。
  6. 前記ログ出力部は、前記アプリケーションが処理を行う際に必要なパーミッションが前記アプリケーションに付与されているか否かを判定し、ファイルの読み出しまたはファイルの書き込みを行う、OSのカーネルで提供されている第1の関数の第1のコードと、前記第1の関数が呼び出される前に呼び出される、前記カーネルで提供されている第2の関数の第2のコードとを含むOSのプログラムに対して、前記アプリケーションに付与されているパーミッションを示す第2のパーミッション情報をログに出力する第3のコードを追加することにより修正された前記OSのプログラムを前記アプリケーションの動作中に実行することを特徴とする請求項1に記載のアプリケーション解析装置。
  7. 前記第3のコードは前記第2のコードの中に追加されていることを特徴とする請求項6に記載のアプリケーション解析装置。
  8. 前記第3のコードは、前記アプリケーションが処理を行う際に必要なパーミッションに対応するグループIDが前記アプリケーションに付与されている場合に、前記アプリケーションに付与されているパーミッションを示す第2のパーミッション情報をログに出力するコードであることを特徴とする請求項7に記載のアプリケーション解析装置。
  9. 前記第3のコードは、前記第2の関数が呼び出されたときに指定された引数がファイルの書き込みを示している場合に、前記アプリケーションに付与されているパーミッションを示す第2のパーミッション情報をログに出力するコードであることを特徴とする請求項7に記載のアプリケーション解析装置。
  10. 第1の装置と、第2の装置とを備え、
    前記第1の装置は、
    アプリケーションの機能を実現する実行ファイルと、アプリケーションに付与されたパーミッションを示す第1のパーミッション情報を含むマニフェストファイルとを含むアプリケーションファイルを記憶する記憶部と、
    前記アプリケーションファイルを実行することで前記アプリケーションを起動する起動部と、
    前記アプリケーションが処理を行う際に必要なパーミッションが前記アプリケーションに付与されているか否かを判定する第1のコードを含むOSのプログラムに対して、前記アプリケーションに付与されているパーミッションを示す第2のパーミッション情報をログに出力する第2のコードを追加することにより修正された前記OSのプログラムを前記アプリケーションの動作中に実行するログ出力部と、
    前記アプリケーションファイルおよび前記ログを前記第2の装置へ送信する送信部と、
    を有し、
    前記第2の装置は、
    前記アプリケーションファイルおよび前記ログを前記第1の装置から受信する受信部と、
    前記アプリケーションファイルに含まれる前記マニフェストファイルから前記第1のパーミッション情報を抽出する抽出部と、
    前記マニフェストファイルから抽出された前記第1のパーミッション情報と、前記ログに出力された前記第2のパーミッション情報とを比較する比較部と、
    を有することを特徴とするアプリケーション解析システム。
  11. 第1の装置と、第2の装置とを備え、
    前記第1の装置は、
    アプリケーションの機能を実現する実行ファイルと、アプリケーションに付与されたパーミッションを示す第1のパーミッション情報を含むマニフェストファイルとを含むアプリケーションファイルを記憶する記憶部と、
    前記アプリケーションファイルを実行することで前記アプリケーションを起動する起動部と、
    前記アプリケーションが処理を行う際に必要なパーミッションが前記アプリケーションに付与されているか否かを判定する第1のコードを含むOSのプログラムに対して、前記アプリケーションに付与されているパーミッションを示す第2のパーミッション情報をログに出力する第2のコードを追加することにより修正された前記OSのプログラムを前記アプリケーションの動作中に実行するログ出力部と、
    前記アプリケーションファイルに含まれる前記マニフェストファイルから前記第1のパーミッション情報を抽出する抽出部と、
    前記マニフェストファイルから抽出された前記第1のパーミッション情報および前記ログを前記第2の装置へ送信する送信部と、
    を有し、
    前記第2の装置は、
    前記第1のパーミッション情報および前記ログを前記第1の装置から受信する受信部と、
    前記第1のパーミッション情報と、前記ログに出力された前記第2のパーミッション情報とを比較する比較部と、
    を有することを特徴とするアプリケーション解析システム。
  12. 第1の装置と、第2の装置と、第3の装置とを備え、
    前記第1の装置は、
    アプリケーションの機能を実現する実行ファイルと、アプリケーションに付与されたパーミッションを示す第1のパーミッション情報を含むマニフェストファイルとを含むアプリケーションファイルを記憶する記憶部と、
    前記アプリケーションファイルを実行することで前記アプリケーションを起動する起動部と、
    前記アプリケーションが処理を行う際に必要なパーミッションが前記アプリケーションに付与されているか否かを判定する第1のコードを含むOSのプログラムに対して、前記アプリケーションに付与されているパーミッションを示す第2のパーミッション情報をログに出力する第2のコードを追加することにより修正された前記OSのプログラムを前記アプリケーションの動作中に実行するログ出力部と、
    前記アプリケーションファイルを前記第2の装置へ送信し、前記ログを前記第3の装置へ送信する第1の送信部と、
    を有し、
    前記第2の装置は、
    前記アプリケーションファイルを前記第1の装置から受信する第1の受信部と、
    前記アプリケーションファイルに含まれる前記マニフェストファイルから前記第1のパーミッション情報を抽出する抽出部と、
    前記マニフェストファイルから抽出された前記第1のパーミッション情報を前記第3の装置へ送信する第2の送信部と、
    を有し、
    前記第3の装置は、
    前記ログを前記第1の装置から受信し、前記第1のパーミッション情報を前記第2の装置から受信する第2の受信部と、
    前記第1のパーミッション情報と、前記ログに出力された前記第2のパーミッション情報とを比較する比較部と、
    を備えたことを特徴とするアプリケーション解析システム。
  13. 第1の装置と、第2の装置と、第3の装置とを備え、
    前記第1の装置は、
    アプリケーションの機能を実現する実行ファイルと、アプリケーションに付与されたパーミッションを示す第1のパーミッション情報を含むマニフェストファイルとを含むアプリケーションファイルを記憶する第1の記憶部と、
    前記アプリケーションファイルを実行することで前記アプリケーションを起動する起動部と、
    前記アプリケーションが処理を行う際に必要なパーミッションが前記アプリケーションに付与されているか否かを判定する第1のコードを含むOSのプログラムに対して、前記アプリケーションに付与されているパーミッションを示す第2のパーミッション情報をログに出力する第2のコードを追加することにより修正された前記OSのプログラムを前記アプリケーションの動作中に実行するログ出力部と、
    前記ログを前記第3の装置へ送信する第1の送信部と、
    を有し、
    前記第2の装置は、
    前記アプリケーションファイルを記憶する第2の記憶部と、
    前記アプリケーションファイルに含まれる前記マニフェストファイルから前記第1のパーミッション情報を抽出する抽出部と、
    前記マニフェストファイルから抽出された前記第1のパーミッション情報を前記第3の装置へ送信する第2の送信部と、
    を有し、
    前記第3の装置は、
    前記ログを前記第1の装置から受信し、前記第1のパーミッション情報を前記第2の装置から受信する受信部と、
    前記第1のパーミッション情報と、前記ログに出力された前記第2のパーミッション情報とを比較する比較部と、
    を備えたことを特徴とするアプリケーション解析システム。
  14. アプリケーションの機能を実現する実行ファイルと、アプリケーションに付与されたパーミッションを示す第1のパーミッション情報を含むマニフェストファイルとを含むアプリケーションファイルを記憶する記憶部と、
    前記アプリケーションファイルを実行することで前記アプリケーションを起動する起動部と、
    前記アプリケーションが処理を行う際に必要なパーミッションが前記アプリケーションに付与されているか否かを判定する第1のコードを含むOSのプログラムに対して、前記アプリケーションに付与されているパーミッションを示す第2のパーミッション情報をログに出力する第2のコードを追加することにより修正された前記OSのプログラムを前記アプリケーションの動作中に実行するログ出力部と、
    前記アプリケーションファイルに含まれる前記マニフェストファイルから前記第1のパーミッション情報を抽出する抽出部と、
    前記マニフェストファイルから抽出された前記第1のパーミッション情報と、前記ログに出力された前記第2のパーミッション情報とを比較する比較部と、
    としてコンピュータを機能させるためのプログラム。
JP2012062120A 2012-03-19 2012-03-19 アプリケーション解析装置、アプリケーション解析システム、およびプログラム Active JP5736335B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012062120A JP5736335B2 (ja) 2012-03-19 2012-03-19 アプリケーション解析装置、アプリケーション解析システム、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012062120A JP5736335B2 (ja) 2012-03-19 2012-03-19 アプリケーション解析装置、アプリケーション解析システム、およびプログラム

Publications (2)

Publication Number Publication Date
JP2013196310A JP2013196310A (ja) 2013-09-30
JP5736335B2 true JP5736335B2 (ja) 2015-06-17

Family

ID=49395195

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012062120A Active JP5736335B2 (ja) 2012-03-19 2012-03-19 アプリケーション解析装置、アプリケーション解析システム、およびプログラム

Country Status (1)

Country Link
JP (1) JP5736335B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6424441B2 (ja) * 2014-03-14 2018-11-21 株式会社リコー 複合機、情報処理方法、情報処理プログラム、および情報処理システム
JP2016206887A (ja) * 2015-04-21 2016-12-08 株式会社 ディー・エヌ・エー 情報処理装置、情報処理システム及び情報処理プログラム
KR101854975B1 (ko) * 2016-02-18 2018-05-04 라인 가부시키가이샤 패키지 파일에 대한 기능 확장 방법 및 시스템
JP6903901B2 (ja) 2016-11-28 2021-07-14 富士通株式会社 攻撃検知装置、攻撃検知プログラム及び攻撃検知方法
KR20230040158A (ko) * 2021-09-15 2023-03-22 삼성전자주식회사 설치 파일에 대한 권한을 분석하기 위한 전자 장치 및 그 동작 방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3939977B2 (ja) * 2001-12-20 2007-07-04 富士通株式会社 アクセス権矛盾検出装置および解析ルール作成装置
JP5228943B2 (ja) * 2009-01-27 2013-07-03 富士通株式会社 最小権限違反検出プログラム
JP2011233081A (ja) * 2010-04-30 2011-11-17 Kddi Corp アプリケーション判定システムおよびプログラム

Also Published As

Publication number Publication date
JP2013196310A (ja) 2013-09-30

Similar Documents

Publication Publication Date Title
US11379273B2 (en) Sharing extension points to allow an application to share content via a sharing extension
US11599348B2 (en) Container image building using shared resources
US9208328B2 (en) Security system and method for operating systems
US20150332043A1 (en) Application analysis system for electronic devices
JP6644001B2 (ja) ウイルス処理方法、装置、システム、機器及びコンピュータ記憶媒体
CN104008340B (zh) 病毒查杀方法及装置
US9460306B1 (en) System and method for controlling access of machine code to operating system resources
JP5802848B2 (ja) モバイル環境用のトロイの木馬化されたアプリケーション(アプリ)を特定するためのコンピュータ実装方法、非一時コンピュータ読み取り可能な媒体およびコンピュータシステム
US8701104B2 (en) System and method for user agent code patch management
US20070289019A1 (en) Methodology, system and computer readable medium for detecting and managing malware threats
WO2015183456A1 (en) Consistent extension points to allow an extension to extend functionality of an application to another application
JP5736335B2 (ja) アプリケーション解析装置、アプリケーション解析システム、およびプログラム
KR20130069555A (ko) 가상 애플리케이션 확장 포인트
Alfalqi et al. Android platform malware analysis
Brierley et al. Persistence in Linux-based IoT malware
US9367686B1 (en) System and method for antivirus checking of native images of software assemblies
RU2628920C2 (ru) Способ обнаружения вредоносных сборок
JP5941745B2 (ja) アプリケーション解析装置、アプリケーション解析システム、およびプログラム
Rashid et al. Automatic Android Malware Analysis
RU2625052C1 (ru) Способ ограничения доступа образа машинного кода к ресурсам операционной системы
RU2617925C2 (ru) Способ антивирусной проверки компьютерной системы
Wang et al. Taming transitive permission attack via bytecode rewriting on Android application
JP7248219B2 (ja) コンピュータセキュリティのためのシステムおよび方法
Heinl et al. Android security
Heinl Android security: Creation of a virtual learning environment

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140723

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140724

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150226

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150324

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150420

R150 Certificate of patent (=grant) or registration of utility model

Ref document number: 5736335

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150