(57)【要約】【課題】アプリケーションの完全性および安全性の検証結果に基づくインストール制御を行うことができるインストール制御装置およびプログラムを提供する。【解決手段】インストール実行部４１はアプリケーションのインストールを実行する。通信部４０は、アプリケーションが不正であるか否かを判定した結果を示す判定結果情報をネットワーク上の通信装置から受信する。インストール制御部４２は、アプリケーションの実行ファイルから算出したハッシュ値を暗号化した署名情報と実行ファイルとに基づいて実行ファイルの改竄の有無を判定し、当該判定の結果と、判定結果情報とに基づいて、インストール実行部４１によるインストールの実行を制御する。【選択図】図１
2012008732.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションのインストールを実行するインストール実行部と、
前記アプリケーションが不正であるか否かを判定した結果を示す判定結果情報をネットワーク上の通信装置から受信する受信部と、
前記アプリケーションの実行ファイルから算出したハッシュ値を暗号化した署名情報と前記実行ファイルとに基づいて前記実行ファイルの改竄の有無を判定し、当該判定の結果と、前記判定結果情報とに基づいて、前記インストール実行部によるインストールの実行を制御するインストール制御部と、
を備えたことを特徴とするインストール制御装置。
【請求項２】
ユーザが操作を行う操作部をさらに備え、
前記インストール制御部は、前記実行ファイルの改竄の有無を判定した結果と、前記判定結果情報と、前記アプリケーションのインストールの可否を示す前記操作部の操作結果とに基づいて、前記インストール実行部によるインストールの実行を制御する
ことを特徴とする請求項１に記載のインストール制御装置。
【請求項３】
前記実行ファイルの改竄の有無を判定した結果と、前記判定結果情報が示す判定の結果との少なくともいずれかを表示する表示部をさらに備えたことを特徴とする請求項２に記載のインストール制御装置。
【請求項４】
前記実行ファイルの改竄の有無を判定した結果と、前記判定結果情報と、前記アプリケーションのインストールの可否を示す前記操作部の操作結果とに応じた複数の処理内容を記憶する記憶部をさらに有し、
前記インストール制御部は、前記複数の処理内容からいずれかを選択し、選択した処理内容に従った処理を行うことによって、前記インストール実行部によるインストールの実行を制御する
ことを特徴とする請求項２または請求項３に記載のインストール制御装置。
【請求項５】
前記インストール制御部は、処理内容の選択結果を示す前記操作部の操作結果に基づいて、前記複数の処理内容からいずれかを選択することを特徴とする請求項４に記載のインストール制御装置。
【請求項６】
アプリケーションのインストールを実行するインストール実行部と、
前記アプリケーションが不正であるか否かを判定した結果を示す判定結果情報をネットワーク上の通信装置から受信する受信部と、
前記アプリケーションの実行ファイルから算出したハッシュ値を暗号化した署名情報と前記実行ファイルとに基づいて前記実行ファイルの改竄の有無を判定し、当該判定の結果と、前記判定結果情報とに基づいて、前記インストール実行部によるインストールの実行を制御するインストール制御部と、
としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションのインストールを制御するインストール制御装置に関する。また、本発明は、本インストール制御装置としてコンピュータを機能させるためのプログラムに関する。
【背景技術】
【０００２】
オープンプラットフォームと呼ばれる汎用的なOS（オペレーティングシステム）を採用する携帯端末が普及しつつある。こうした携帯端末向けアプリケーションの中には、無償で提供されるソフトウェア開発キット（Software Development Kit：SDK）を用いて作成することが可能であって、事業者等による審査を伴わずに、インターネット上に公開することが可能なものがある。
【０００３】
インターネットを経由してファイルの配布を行う場合、途中経路における改竄の検知を目的として、ハッシュ値を用いた照合を行うことがある。これは、ファイルのハッシュ値が一致した場合に改竄が行われていないと判断するものである。具体的には、送信元では、送信ファイルと同時に、ハッシュ関数を用いて求めた送信ファイルのハッシュ値情報を送信して、受信者は、受信ファイルから算出したハッシュ値と、受信ファイルに記録されたハッシュ値情報とを照合して、改竄が行われていないことを検証する。このとき、ハッシュ値情報を記録したファイルが改竄されている場合、正しい改竄検知を行うことが不可能であるため、ハッシュ値情報に対して、送信者は秘密鍵で署名を施し、受信者は秘密鍵に対応する公開鍵で署名検証を行うことで情報の真正性と完全性を検証する。
【０００４】
また、専用OSを採用する携帯電話においては、アプリケーションの改竄防止を目的として、開発者や、プラットフォーム提供者、キャリアによる署名がなされたアプリケーションのみをインストール・実行可能とする仕組みがあり、こうした仕組みはコードシグネチャと呼ばれる（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−２７２８９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
今後、多種多様なアプリケーションが多量に公開されることが見込まれる。しかし、汎用的なOSを採用する携帯端末向けアプリケーションの開発と公開が、従来の専用OSを採用する携帯端末向けアプリケーションの開発と公開と比較して容易であることから、悪意のアプリケーション開発者が、携帯端末の管理者権限を不正に奪取するアプリケーションや、奪取した管理者権限を悪用して端末利用者の顧客情報を窃盗するアプリケーションなど、端末や顧客情報の安全性を侵害する脅威を有するアプリケーションを開発・公開する可能性がある。
【０００７】
悪性なアプリケーションから端末の利用者を保護するためには、アプリケーションの安全性を検証し、その結果に基づいて、一定の安全性が認められたアプリケーションを選択的に利用できる環境を実現することが望ましい。しかし現状では、専用OSを用いる携帯端末において、署名検証によりアプリケーションの完全性を検証する仕組みはあるものの、アプリケーションの挙動の安全性を検証して、その結果に基づいて、インストールの可否を制御する仕組みは存在しない。
【０００８】
本発明は、上述した課題に鑑みてなされたものであって、アプリケーションの完全性および安全性の検証結果に基づくインストール制御を行うことができるインストール制御装置およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、上記の課題を解決するためになされたもので、アプリケーションのインストールを実行するインストール実行部と、前記アプリケーションが不正であるか否かを判定した結果を示す判定結果情報をネットワーク上の通信装置から受信する受信部と、前記アプリケーションの実行ファイルから算出したハッシュ値を暗号化した署名情報と前記実行ファイルとに基づいて前記実行ファイルの改竄の有無を判定し、当該判定の結果と、前記判定結果情報とに基づいて、前記インストール実行部によるインストールの実行を制御するインストール制御部と、を備えたことを特徴とするインストール制御装置である。
【００１０】
また、本発明のインストール制御装置は、ユーザが操作を行う操作部をさらに備え、前記インストール制御部は、前記実行ファイルの改竄の有無を判定した結果と、前記判定結果情報と、前記アプリケーションのインストールの可否を示す前記操作部の操作結果とに基づいて、前記インストール実行部によるインストールの実行を制御することを特徴とする。
【００１１】
また、本発明のインストール制御装置は、前記実行ファイルの改竄の有無を判定した結果と、前記判定結果情報が示す判定の結果との少なくともいずれかを表示する表示部をさらに備えたことを特徴とする。
【００１２】
また、本発明のインストール制御装置は、前記実行ファイルの改竄の有無を判定した結果と、前記判定結果情報と、前記アプリケーションのインストールの可否を示す前記操作部の操作結果とに応じた複数の処理内容を記憶する記憶部をさらに有し、前記インストール制御部は、前記複数の処理内容からいずれかを選択し、選択した処理内容に従った処理を行うことによって、前記インストール実行部によるインストールの実行を制御することを特徴とする。
【００１３】
また、本発明のインストール制御装置において、前記インストール制御部は、処理内容の選択結果を示す前記操作部の操作結果に基づいて、前記複数の処理内容からいずれかを選択することを特徴とする。
【００１４】
また、本発明は、アプリケーションのインストールを実行するインストール実行部と、前記アプリケーションが不正であるか否かを判定した結果を示す判定結果情報をネットワーク上の通信装置から受信する受信部と、前記アプリケーションの実行ファイルから算出したハッシュ値を暗号化した署名情報と前記実行ファイルとに基づいて前記実行ファイルの改竄の有無を判定し、当該判定の結果と、前記判定結果情報とに基づいて、前記インストール実行部によるインストールの実行を制御するインストール制御部と、としてコンピュータを機能させるためのプログラムである。
【発明の効果】
【００１５】
本発明によれば、第１の判定結果情報と第２の判定結果情報とに基づいてインストールの実行を制御することによって、アプリケーションの完全性および安全性の検証結果に基づくインストール制御を行うことができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施形態によるアプリケーション制御装置の構成を示すブロック図である。
【図２】本発明の一実施形態におけるインストール設定ファイルの内容を示す参考図である。
【図３】本発明の一実施形態によるアプリケーション制御装置の動作の手順を示すフローチャートである。
【図４】本発明の一実施形態によるアプリケーション制御装置の動作の手順を示すフローチャートである。
【図５】本発明の一実施形態によるアプリケーション判定システムの構成を示すブロック図である。
【図６】本発明の一実施形態によるアプリケーション判定システムが有する携帯端末の機能構成を示すブロック図である。
【図７】本発明の一実施形態によるアプリケーション判定システムが有するログ解析装置の機能構成を示すブロック図である。
【図８】本発明の一実施形態におけるアプリケーションログの内容を示す参考図である。
【図９】本発明の一実施形態におけるカーネルログの内容を示す参考図である。
【図１０】本発明の一実施形態におけるログ解析部の機能構成を示すブロック図である。
【図１１】本発明の一実施形態におけるプロセスの親子関係を示す参考図である。
【図１２】本発明の一実施形態によるアプリケーション判定システムの動作の手順を示すシーケンス図である。
【図１３】本発明の一実施形態におけるアプリケーションの実行ファイルの構成を示す参考図である。
【図１４】本発明の一実施形態によるアプリケーション判定システムの動作の手順を示すフローチャートである。
【図１５】本発明の一実施形態におけるマニフェストファイルの内容を示す参考図である。
【図１６】本発明の一実施形態におけるアプリケーションログの内容を示す参考図である。
【図１７】本発明の一実施形態におけるカーネルログの内容を示す参考図である。
【図１８】本発明の一実施形態におけるカーネルログの内容を示す参考図である。
【図１９】本発明の一実施形態におけるファイル記憶部のディレクトリ構造を示す参考図である。
【図２０】本発明の一実施形態によるアプリケーション判定システムの変形例の機能構成を示すブロック図である。
【図２１】本発明の一実施形態におけるログ解析部の機能構成を示すブロック図である。
【図２２】本発明の一実施形態によるアプリケーション判定システムの動作の手順を示すフローチャートである。
【図２３】本発明の一実施形態におけるカーネルログの内容を示す参考図である。
【図２４】本発明の一実施形態における不正通信相手リストの内容を示す参考図である。
【発明を実施するための形態】
【００１７】
＜インストール制御装置＞
以下、図面を参照し、本発明の実施形態を説明する。図１は、本発明の一実施形態によるインストール制御装置の構成を示している。このインストール制御装置は、例えば携帯端末に実装される。本実施形態によるインストール制御装置は、通信部４０、インストール実行部４１、インストール制御部４２、操作部４３、表示部４４、および記憶部４５を有する。
【００１８】
通信部４０は、インターネット上のサーバ等の通信装置と通信を行う。インストール実行部４１（インストーラ）は、アプリケーションのインストールを実行する。インストール制御部４２は、インストール実行部４１によるアプリケーションのインストールを制御する。操作部４３は、ユーザが操作するキーボードやマウス等を有し、ユーザの操作結果に応じた信号を出力する。表示部４４は、ユーザの操作結果等を表示する。
【００１９】
記憶部４５は、インストール制御装置で使用される各種ファイルや情報を記憶する。記憶部４５が記憶する主なファイルとして、アプリケーションファイル、署名ファイル、およびインストール設定ファイルがある。
【００２０】
アプリケーションファイルは、インストールの対象となるアプリケーションの実行ファイルを含む各種ファイルの圧縮ファイルである。
【００２１】
署名ファイルは、アプリケーションファイルのハッシュ値、公開鍵情報、安全性検証結果、および安全性付随情報を含むファイル本体と、そのファイル本体の全体のハッシュ値を秘密鍵で暗号化した署名情報とを含む。
【００２２】
アプリケーションファイルのハッシュ値は、アプリケーションファイルから、SHA-1等のハッシュ関数を用いて求めたハッシュ値である。
【００２３】
公開鍵情報は、署名ファイルの検証に用いる公開鍵の情報である。本実施形態では、記憶部４５に予め公開鍵が格納されていることを想定しており、公開鍵情報は公開鍵IDである。公開鍵を外部から取得する場合には、公開鍵情報は、公開鍵を保持しているサーバのURLまたはIPアドレスと公開鍵IDとを含む。
【００２４】
安全性検証結果は、署名ファイルに対応するアプリケーションが不正であるか否かを検証した安全性検証の結果を示している。詳細は後述するが、アプリケーションの販売サイト等においてアプリケーション判定システムは、アプリケーションを実行したときの挙動を解析して安全性検証を行う。この安全性検証の結果が署名ファイルに付与されている。
【００２５】
安全性検証結果は、Black/Whiteのいずれかを示している。Blackは、アプリケーションが不正であることを示している。Whiteは、アプリケーションが不正でないことを示している。
【００２６】
安全性付随情報は、安全性検証結果に付随する情報である。安全性付随情報には、安全性検証結果がBlackであった場合に不正なアプリケーションの種別（マルウェア、トロイの木馬等）を示す情報と、安全性検証を行った際に注目したアプリケーションの挙動（ファイル操作、通信等）を示す情報と、その挙動別の詳細な判定結果を示す情報とが含まれる。
【００２７】
インストール設定ファイルは、インストール制御部４２の処理内容を規定するファイルである。インストール設定ファイルには、インストール制御部４２の処理内容として選択することが可能な複数の選択項目が含まれる。図２は、インストール設定ファイルに含まれる選択項目の一例を示している。
【００２８】
署名ファイルの取得に関しては、署名ファイルを取得できなかった場合の処理内容が規定されている。この場合、以下の２種類の処理内容のいずれかを選択することが可能である。
Ａ．エラー処理を行ってインストールを中止する。
Ｂ．警告を表示して処理を進める。
【００２９】
署名ファイルの検証に関しては、署名ファイルの検証が成功しなかった場合の処理内容が規定されている。この場合、以下の２種類の処理内容のいずれかを選択することが可能である。
Ｃ．エラー処理を行ってインストールを中止する。
Ｄ．警告を表示して処理を進める。
【００３０】
安全性検証結果の参照に関しては、White、Blackのそれぞれの安全性検証結果に対する処理内容が規定されている。この場合、以下の２種類の処理内容のいずれかを選択することが可能である。
Ｅ．White、Blackの全てについてユーザにインストールの可否を確認する。
Ｆ．Whiteについてユーザにインストールの可否を確認することなくインストールを実行する。
【００３１】
ユーザは、安全性と利便性を考慮して、操作部４３を操作して上記の処理内容を指定しておくことで、インストール制御部４２の処理内容を指定しておくことができる。インストール制御部４２は、ユーザが指定した内容に従って、インストール設定ファイルから処理内容の情報を読み出し、その情報に従ってインストールの制御を行う。
【００３２】
次に、本実施形態によるインストール制御装置の動作を説明する。図３は、インストール制御装置の動作の手順を示している。操作部４３が操作され、ユーザによってアプリケーションのインストール指示が入力されると、操作部４３はインストール指示を示す信号をインストール制御部４２へ出力する。インストール制御部４２は、通信部４０を介してインターネット上の販売サイトと通信を行い、アプリケーションファイルを受信する（ステップＳ１０）。受信されたアプリケーションファイルは記憶部４５に格納される。
【００３３】
続いて、インストール制御部４２は、通信部４０を介してインターネット上の署名ファイル管理サイトと通信を行い、アプリケーションファイルに対応する署名ファイルを受信する（ステップＳ１５）。このとき、インストール制御部４２は、アプリケーションファイルを識別するパッケージ名称を示す情報を署名ファイル管理サイトへ送信し、署名ファイル管理サイトのサーバは、このパッケージ名称に基づいて、アプリケーションファイルに対応する署名ファイルを検索して取得し、署名ファイルをインストール制御装置へ送信する。署名ファイル管理サイトはアプリケーションの販売サイトと同一であってもよい。
【００３４】
続いて、インストール制御部４２は、記憶部４５から署名ファイルを読み出し、署名ファイルに含まれる公開鍵情報が示す公開鍵IDを有する公開鍵を記憶部４５から読み出す（ステップＳ２０）。公開鍵を外部から取得する場合には、インストール制御部４２は、通信部４０を介して、公開鍵情報が示すサーバと通信を行い、公開鍵を含む情報を受信する。続いて、インストール制御部４２は、公開鍵を用いて、署名ファイルに含まれる署名情報を復号化し、ハッシュ値を取得する（ステップＳ２５）。
【００３５】
続いて、インストール制御部４２は、署名ファイルの本体ファイル（アプリケーションファイルのハッシュ値、公開鍵情報、安全性検証結果、および安全性付随情報を含む）のハッシュ値を算出し、算出したハッシュ値と、ステップＳ２５で取得したハッシュ値とを比較することによって、署名ファイルの完全性（署名ファイルが改竄されていないこと）の検証を行う（ステップＳ３０）。署名ファイルの本体ファイルから算出したハッシュ値と、ステップＳ２５で取得したハッシュ値とが一致した場合、検証は成功となる。また、署名ファイルの本体ファイルから算出したハッシュ値と、ステップＳ２５で取得したハッシュ値とが一致しなかった場合、検証は失敗となる。
【００３６】
署名ファイルの検証が成功した場合、インストール制御部４２は記憶部４５からアプリケーションファイルを読み出してハッシュ値を算出し、算出したハッシュ値と、署名ファイルに含まれるアプリケーションファイルのハッシュ値とを比較することによって、アプリケーションファイルの完全性（アプリケーションファイルが改竄されていないこと）の検証を行う（ステップＳ３５）。アプリケーションファイルから算出したハッシュ値と、署名ファイルに含まれるアプリケーションファイルのハッシュ値とが一致した場合、検証は成功となる。また、アプリケーションファイルから算出したハッシュ値と、署名ファイルに含まれるアプリケーションファイルのハッシュ値とが一致しなかった場合、検証は失敗となる。
【００３７】
アプリケーションファイルのハッシュ値の検証が成功した場合、インストール制御部４２は、署名ファイルに含まれる安全性検証結果を参照し、アプリケーションの安全性の判定を行う（ステップＳ４０）。安全性検証結果がWhiteであった場合、インストール制御部４２はインストール実行部４１にアプリケーションのインストールを指示する。指示を受けたインストール実行部４１は、記憶部４５からアプリケーションファイルを読み出して圧縮ファイルを伸張し、アプリケーションの実行ファイルを記憶部４５に格納すると共に、アプリケーションを実行するための各種設定を行う（ステップＳ４５）。
【００３８】
安全性検証結果がBlackであった場合、インストール制御部４２は、インストールを行うかどうかをユーザに確認させるための確認画面を表示部４４に表示させる（ステップＳ５０）。このとき、表示部４４は、署名ファイルの完全性の検証結果と、アプリケーションファイルの完全性の検証結果と、アプリケーションの安全性検証結果とを表示すると共に、アプリケーションをインストールすることによるリスクを説明するメッセージとを表示する。
【００３９】
続いて、インストール制御部４２は、ユーザが操作部４３を操作した結果に基づいて、アプリケーションのインストールの可否を判定する（ステップＳ５５）。ユーザが操作部４３を介して、アプリケーションのインストールを許可する指示を入力した場合、インストール制御部４２は、インストールが許可されたと判定する。また、ユーザが操作部４３を介して、アプリケーションのインストールを拒否する指示を入力した場合、インストール制御部４２は、インストールが拒否されたと判定する。インストールが許可されたと判定した場合、処理はステップＳ４５に進み、アプリケーションのインストールが実行される。
【００４０】
ステップＳ３０で署名ファイルの検証が失敗した場合、ステップＳ３５でアプリケーションのハッシュ値の検証が失敗した場合、またはステップＳ５５でインストールが拒否されたと判定した場合、インストール制御部４２はエラーメッセージを表示部４４に表示させる（ステップＳ６０）。
【００４１】
図３に示した処理内容は、前述したインストール設定ファイルに規定されたＡ〜Ｅの処理内容のうち、Ａ，Ｃ，Ｆが選択された場合の処理内容を示している。前述したように、ユーザは、インストール制御部４２の処理内容を予め指定しておくことができる。例えば、処理内容Ｆを処理内容Ｅに変更した場合、図３に示す処理の手順は図４のように変更される。
【００４２】
図４に示す処理では、図３に示す処理に対して、ステップＳ６５，Ｓ７０が追加されている。ステップＳ４０で安全性検証結果がWhiteであった場合、インストール制御部４２は、インストールを行うかどうかをユーザに確認させるための確認画面を表示部４４に表示させる（ステップＳ６５）。このとき、表示部４４は、署名ファイルの完全性の検証結果と、アプリケーションファイルの完全性の検証結果と、アプリケーションの安全性検証結果とを表示すると共に、アプリケーションをインストールすることによるリスクを説明するメッセージとを表示する。
【００４３】
続いて、インストール制御部４２は、ユーザが操作部４３を操作した結果に基づいて、アプリケーションのインストールの可否を判定する（ステップＳ７０）。ユーザが操作部４３を介して、アプリケーションのインストールを許可する指示を入力した場合、インストール制御部４２は、インストールが許可されたと判定する。また、ユーザが操作部４３を介して、アプリケーションのインストールを拒否する指示を入力した場合、インストール制御部４２は、インストールが拒否されたと判定する。インストールが許可されたと判定した場合、処理はステップＳ４５に進み、アプリケーションのインストールが実行される。また、インストールが拒否されたと判定した場合、処理はステップＳ６０に進む。
【００４４】
図３、図４に示したように、インストール設定ファイルに規定された処理内容の選択に応じて、インストール制御部４２の処理内容が変化する。
【００４５】
本実施形態では、アプリケーションの安全性検証結果はBlackとWhiteの２種類であったが、Grayを加えた３種類としてもよい。Grayは、アプリケーションが不正であるとは言えないが、不正である可能性があることを示している。
【００４６】
上述したように、本実施形態によれば、アプリケーションの完全性の検証結果と共に、従来のアプリケーションの配信元からは得られない安全性の検証結果を得ることができ、アプリケーションの完全性および安全性の検証結果に基づくインストール制御を行うことができる。
【００４７】
また、従来の署名情報は、ファイルが改竄されていないことと、ファイルの配信元が信頼できる機関であることとを確認する手段として用いることを目的としていた。そのため、署名検証に成功しないファイルの受領やアプリケーションのインストールを防止することはできたものの、アプリケーションに付随する情報に基づいて、利用者がリスクを承諾したうえでインストールを行うなどのきめの細かい制御を行うことが不可能であった。
【００４８】
これに対して、本実施形態では、ユーザがアプリケーションの完全性および安全性の検証結果を参照して、リスクを承諾した上でインストールの実行を許可するなどの制御が可能となる。また、ユーザは、インストール設定ファイルに規定されたインストール制御部４２の処理内容を選択することが可能となる。このため、安全性や利便性に対するユーザの意思を反映した、きめの細かいインストール制御を行うことができる。
【００４９】
＜アプリケーション判定システム＞
次に、アプリケーションの安全性検証を行うアプリケーション判定システムについて説明する。
【００５０】
アプリケーションが処理を実行する際には、端末が有する機能の利用や設定の変更に係る権限が設定され、アプリケーションはその権限の範囲内で処理を実行することが可能である。例えば、一般ユーザ権限が設定された場合、一般ユーザ権限の範囲内で各種処理の実行が可能となる。また、最高権限（管理者権限）であるroot権限（スーパーユーザ権限）が設定された場合、一般ユーザ権限の範囲内で可能な処理に加えて、端末内の重要な設定の変更等が可能となる。
【００５１】
通常、アプリケーションは一般ユーザ権限で動作するように設定されており、一般ユーザ権限が設定されたアプリケーションがアクセスできるディレクトリは限定されている。しかし、不正なアプリケーションはOSの脆弱性を突いてroot権限を不正に取得し、ディレクトリに設定されているアクセス権限（パーミッション）を変更して携帯端末内のディレクトリに自由にアクセスできるようになる。これによって、携帯端末に障害を発生させたり、個人情報を漏洩させたりするなどの不正な行為が行われる。本アプリケーション判定システムは、アプリケーションがディレクトリやファイルにアクセスする挙動を解析することで、注目するアプリケーションが不正なアプリケーションであるか否かを判定する。
【００５２】
図５は、本実施形態によるアプリケーション判定システムの構成を示している。本実施形態によるアプリケーション判定システムは、携帯電話端末、携帯情報端末、スマートフォン等の携帯端末１と、PC等のログ解析装置２とを有する。携帯端末１とログ解析装置２は、RS232C等のケーブル３で接続されており、ログ解析装置２から携帯端末１を操作することができる。本実施形態によるアプリケーション判定システムは、例えば携帯端末用のアプリケーションを通信ネットワーク上で販売する販売サイトを管理する企業に設置される。
【００５３】
図６は携帯端末１の機能構成を示している。携帯端末１は、アプリケーション１０、アプリケーションログ生成部１１、カーネルログ生成部１２、ログ生成制御部１３、操作情報制御部１４、OS１５、ファイル記憶部１６、操作部１７、表示部１８、通信部１９、および作業領域Ｗ１（ログ記憶部）を有する。
【００５４】
アプリケーション１０、アプリケーションログ生成部１１、カーネルログ生成部１２、ログ生成制御部１３、操作情報制御部１４、およびOS１５は、SRAM等のデバイスで構成される作業領域Ｗ１上で動作する。これらの実行ファイル（プログラム）はファイル記憶部１６に格納されており、これらの実行ファイルがファイル記憶部１６から作業領域Ｗ１に読み込まれることで、これらが起動する。なお、作業領域Ｗ１では、アプリケーション１０等のプロセスのほか、図示していない各種プロセスも起動する。これらのプロセスがOS１５にシステムコールの呼び出しを通知し、OS１５がシステムコールを呼び出すことによって、各プロセスは、図示していないCPUの資源を利用して各種処理を行う。
【００５５】
アプリケーション１０は、OS１５に対するシステムコールの呼び出しやOS１５からの実行結果の受け取り等を行う。これによって、アプリケーション１０は、アプリケーションの処理として規定された各種処理の実行やファイル記憶部１６へのアクセス等を行う。
【００５６】
アプリケーションログ生成部１１は、アプリケーション１０の実行条件や状態に関する情報を記録したアプリケーションログ（第１のログ）を生成する。生成されたアプリケーションログは作業領域Ｗ１に保持される。
【００５７】
図８はアプリケーションログの一例を示している。アプリケーションログは、タイムスタンプ４００、プロセスID４１０、プロセスID４２０、メッセージ種別４３０、メッセージタグおよびメッセージ本体４４０からなる。タイムスタンプ４００は日付および時刻を含む。１つのタイムスタンプ４００、親プロセスID４１０、プロセスID４２０、メッセージ種別４３０、メッセージタグおよびメッセージ本体４４０の組を記録単位としてアプリケーションの挙動がアプリケーションログに記録される。図８に示す例では、５つの記録単位分のアプリケーションログの内容が示されている。
【００５８】
プロセスは、プロセス起動のシステムコールを呼び出すことによって、他のプロセスを起動することができる。以下では、起動元のプロセスを親プロセスと呼び、親プロセスによって起動されたプロセスを子プロセスと呼ぶ。プロセスID４１０およびプロセスID４２０が異なる場合、プロセスID４１０は親プロセスのプロセスIDを示し、プロセスID４２０は子プロセスのプロセスIDを示す。プロセスID４１０およびプロセスID４２０が同一の場合、それらのプロセスIDを有する記録単位は同一のプロセスの挙動を示している。
【００５９】
カーネルログ生成部１２は、アプリケーション１０の処理に関連するプロセスが呼び出したシステムコールの情報を記録したカーネルログ（第２のログ）を生成する。生成されたカーネルログは作業領域Ｗ１に保持される。
【００６０】
図９はカーネルログの一例を示している。カーネルログは、プロセスID５００、メッセージ本体５１０からなる。１つのプロセスID５００とメッセージ本体５１０の組を記録単位としてシステムコールの情報がカーネルログに記録される。図９に示す例では、５つの記録単位分のカーネルログの内容が示されている。なお、アプリケーションログとカーネルログとでは、プロセスIDの管理体系が異なる。このため、同一のプロセスについて、アプリケーションログに記録されるプロセスIDとカーネルログに記録されるプロセスIDは異なる。
【００６１】
ログ生成制御部１３は、アプリケーションログ生成部１１およびカーネルログ生成部１２を起動する処理を行う。また、ログ生成制御部１３は、アプリケーションログおよびカーネルログをログ解析装置２へ送信する処理を行う。
【００６２】
操作情報制御部１４は、操作者がログ解析装置２を操作して入力する操作情報に関する制御を行う。具体的には、操作情報制御部１４はログ解析装置２と通信を行い、ログ解析装置２に入力された操作内容を示す操作情報を受信し、操作情報の内容を解釈してOS１５に通知する。通知を受けたOS１５は各種処理を実行する。また、操作情報制御部１４は、OS１５から処理の実行結果の通知を受け、実行結果を示す実行結果情報をログ解析装置２へ送信する。以下の動作の説明では、実行結果情報に関する処理の説明を省略する。
【００６３】
OS１５は、アプリケーション１０、アプリケーションログ生成部１１、カーネルログ生成部１２、ログ生成制御部１３、および操作情報制御部１４の処理のスケジューリングや作業領域Ｗ１の割り当て等を制御すると共に、ファイル記憶部１６、操作部１７、表示部１８、および通信部１９の各デバイスの入出力を制御する。
【００６４】
ファイル記憶部１６は、フラッシュメモリ等のデバイスで構成され、携帯端末１内で使用する実行ファイル等の各種ファイルを記憶する。操作部１７は、キー（ボタン）やスイッチ等のデバイスで構成され、操作者が操作した結果に基づく信号を出力する。表示部１８は、液晶表示装置等のデバイスで構成され、携帯端末１で実行された処理の結果や携帯端末１の状態等を表示する。通信部１９は、通信モジュール等のデバイスで構成され、ログ解析装置２と通信を行う。
【００６５】
図７はログ解析装置２の機能構成を示している。ログ解析装置２は、ログ解析部２０、操作情報制御部２１、OS２２、ファイル記憶部２３、操作部２４、表示部２５、および通信部２６を有する。
【００６６】
ログ解析部２０、操作情報制御部２１、およびOS２２は、SRAM等のデバイスで構成される作業領域Ｗ２上で動作する。これらの実行ファイル（プログラム）はファイル記憶部２３に格納されており、これらの実行ファイルがファイル記憶部２３から作業領域Ｗ２に読み込まれることで、これらが起動する。なお、作業領域Ｗ２では、ログ解析部２０等のプロセスのほか、図示していない各種プロセスも起動する。これらのプロセスがOS２２にシステムコールの呼び出しを通知し、OS２２がシステムコールを呼び出すことによって、各プロセスは、図示していないCPUの資源を利用して各種処理を行う。
【００６７】
ログ解析部２０は、携帯端末１から受信したアプリケーションログおよびカーネルログを解析し、注目するアプリケーションが不正なアプリケーションであるか否かを判定する。
【００６８】
操作情報制御部２１は、操作者が操作部２４を操作して入力する操作内容に基づく操作情報に関する制御を行う。具体的には、操作情報制御部２１は携帯端末１と通信を行い、操作部２４に入力された操作内容を示す操作情報を送信し、また、実行結果を示す実行結果情報を受信する。OS２２は、ログ解析部２０および操作情報制御部２１の処理のスケジューリングや作業領域Ｗ２の割り当て等を制御すると共に、ファイル記憶部２３、操作部２４、表示部２５、および通信部２６の各デバイスの入出力を制御する。
【００６９】
ファイル記憶部２３は、ハードディスクドライブ等のデバイスで構成され、ログ解析装置２内で使用する実行ファイル等の各種ファイルを記憶する。操作部２４は、キーボードやマウス等のデバイスで構成され、操作者が操作した結果に基づく信号を出力する。表示部２５は、液晶表示装置等のデバイスで構成され、実行結果情報に基づく実行結果やログ解析部２０の処理結果等を表示する。通信部２６は、通信モジュール等のデバイスで構成され、携帯端末１と通信を行う。
【００７０】
図１０はログ解析部２０の機能構成を示している。ログ解析部２０は、プロセスID抽出部２０ａ（第１の抽出部）、カーネルログ抽出部２０ｂ（第２の抽出部）、ファイル操作内容抽出部２０ｃ（第３の抽出部）、判定部２０ｄ、および制御部２０ｅを有する。
【００７１】
プロセスID抽出部２０ａは、注目するアプリケーション１０の処理に関するプロセスのプロセスIDをアプリケーションログから抽出する。図１１は、プロセスの親子関係の一例を示している。図１１では、システム上で最初に起動するinitプロセスが子プロセスを起動し、その子プロセスが親プロセスとして自身の子プロセスを起動する様子が示されている。
【００７２】
一例として、注目するアプリケーション１０のプロセス群７００のプロセスsshd（プロセスID：2005）はinitプロセスによって起動され、プロセスsshd（プロセスID：1921）およびプロセスsshd（プロセスID：8167）を起動している。プロセスsshd（プロセスID：1921）およびプロセスsshd（プロセスID：8167）もそれぞれ子プロセスを起動している。プロセスID抽出部２０ａは、注目するアプリケーション１０について、親子関係にある各プロセスのプロセスIDを抽出する。すなわち、図１１に示す例の場合、プロセスIDとして2005、1921、1931、2333、2345、8167、8323、10940が抽出される。
【００７３】
カーネルログ抽出部２０ｂは、プロセスID抽出部２０ａが抽出したプロセスIDを有する部分、すなわち注目するアプリケーションの処理に関係する部分をカーネルログから抽出する。ファイル操作内容抽出部２０ｃは、カーネルログ抽出部２０ｂが抽出した部分から、ファイル操作に関係するシステムコールの実行内容を抽出する。判定部２０ｄは、ファイル操作内容抽出部２０ｃが抽出したシステムコールの実行内容が、ファイル記憶部１６中の特定のディレクトリに対する操作を示しているか否かを判定することによって、注目するアプリケーション１０が不正なアプリケーションであるか否かを判定する。制御部２０ｅは、プロセスID抽出部２０ａ、カーネルログ抽出部２０ｂ、ファイル操作内容抽出部２０ｃ、および判定部２０ｄに対する処理の振り分けの制御を行う。
【００７４】
次に、本実施形態によるアプリケーション判定システムの動作を説明する。図１２は、アプリケーション判定システムの動作の手順を示している。図１２に示す動作の開始前、注目するアプリケーションは携帯端末１にインストールされてなく、携帯端末１では操作情報制御部１４は起動しているが、アプリケーションログ生成部１１、カーネルログ生成部１２、およびログ生成制御部１３は起動していないものとする。また、図１２に示す動作の開始前、ログ解析装置２では、操作情報制御部２１は起動しているがログ解析部２０は起動していないものとする。
【００７５】
まず、ログ解析装置２において、操作者は操作部２４を操作し、アプリケーションログ生成部１１およびカーネルログ生成部１２を起動する指示を入力する。操作部２４が操作されると、OS２２は操作部２４の操作内容を操作情報制御部２１に通知する。操作情報制御部２１は、通知された操作内容に基づいて、アプリケーションログ生成部１１およびカーネルログ生成部１２を起動するための操作情報であるログ生成部起動指示を生成する。このログ生成部起動指示は通信部２６から携帯端末１へ送信される（ステップＳ１００）。
【００７６】
携帯端末１において、通信部１９はログ生成部起動指示を受信する（ステップＳ１０５）。OS１５は、ログ生成部起動指示を操作情報制御部１４に通知し、操作情報制御部１４は、ログ生成部起動指示に基づいて、ログ生成制御部１３を起動するためのシステムコールの呼び出しをOS１５に通知する。OS１５はログ生成制御部１３を起動し、起動したログ生成制御部１３はアプリケーションログ生成部１１およびカーネルログ生成部１２を起動する（ステップＳ１１０）。起動したアプリケーションログ生成部１１およびカーネルログ生成部１２はログの生成を開始する。
【００７７】
続いて、ログ解析装置２において、操作者は操作部２４を操作し、判定対象のアプリケーションをインストールする指示を入力する。操作部２４が操作されると、OS２２は操作部２４の操作内容を操作情報制御部２１に通知する。操作情報制御部２１は、通知された操作内容に基づいて、判定対象のアプリケーションの圧縮ファイルをファイル記憶部２３から読み出す。この圧縮ファイルは通信部２６から携帯端末１へ送信される（ステップＳ１１５）。
【００７８】
携帯端末１において、通信部１９はアプリケーションの圧縮ファイルを受信する（ステップＳ１２０）。続いて、アプリケーションのインストールが実行され、伸張されたアプリケーションの実行ファイルがファイル記憶部１６に格納される（ステップＳ１２５）。
【００７９】
図１３はアプリケーションの実行ファイルの構成を示している。図１３に示すように実行ファイル９００は、命令列を含む実行コード９０１、アプリケーションのパッケージ名称やアプリケーションが利用するコンポーネント等の情報を含むマニフェストファイル９０２、実行コード９０１の実行時に参照されるライブラリ９０３、およびパラメータ９０４等のファイルで構成されている。
【００８０】
アプリケーションのインストール後、操作者は操作部１７を操作し、アプリケーションを起動する指示を入力する。操作部１７が操作されると、OS１５はアプリケーション１０を起動する（ステップＳ１３０）。アプリケーション１０の挙動は、アプリケーションログ生成部１１によってアプリケーションログとして記録されると共に、カーネルログ生成部１２によってカーネルログとして記録される。
【００８１】
続いて、ログ解析装置２において、操作者は操作部２４を操作し、ログを送信する指示を入力する。操作部２４が操作されると、OS２２は操作部２４の操作内容を操作情報制御部２１に通知する。操作情報制御部２１は、通知された操作内容に基づいて、ログを送信するための操作情報であるログ送信指示を生成する。このログ送信指示は通信部２６から携帯端末１へ送信される（ステップＳ１３５）。
【００８２】
携帯端末１において、通信部１９はログ送信指示を受信する（ステップＳ１４０）。OS１５は、ログ送信指示を操作情報制御部１４に通知し、操作情報制御部１４は、ログ送信指示に基づいて、OS１５を介してログ生成制御部１３にログの送信を指示する。ログ生成制御部１３は、アプリケーションログおよびカーネルログを送信する処理を行う。アプリケーションログおよびカーネルログは通信部１９からログ解析装置２へ送信される（ステップＳ１４５）。
【００８３】
ログ解析装置２において、通信部１９はアプリケーションログおよびカーネルログを受信する（ステップＳ１５０）。受信されたアプリケーションログおよびカーネルログは作業領域Ｗ２に保持される。続いて、操作者は操作部２４を操作し、ログを解析する指示を入力する。操作部２４が操作されると、OS２２はログ解析部２０を起動する（ステップＳ１５５）。ログ解析部２０は、アプリケーションログおよびカーネルログを解析する（ステップＳ１６０）。
【００８４】
図１４は、ステップＳ１６０におけるログ解析部２０の動作の詳細を示している。前述したように、ファイル記憶部２３にはアプリケーションの圧縮ファイルが格納されている。プロセスID抽出部２０ａは、ファイル記憶部２３からアプリケーションの圧縮ファイルを読み出して伸張し、図１３に示したマニフェストファイル９０２から、アプリケーションを識別するパッケージ名称を取得する（ステップＳ２００）。
【００８５】
図１５はマニフェストファイルの一例を示している。「package=」に続く文字列１１００がパッケージ名称を示している。プロセスID抽出部２０ａは、マニフェストファイルから「package=」という文字列を検索し、その文字列に続く「"」で挟まれた文字列をパッケージ名称として取得する。なお、携帯端末１からアプリケーションログおよびカーネルログと共にマニフェストファイルをログ解析装置２へ送信し、ログ解析装置２においてログの解析に使用するようにしてもよい。
【００８６】
続いて、プロセスID抽出部２０ａは、アプリケーションログから、パッケージ名称と一致する文字列を有する部分を抽出し、抽出した部分からプロセスIDを抽出する（ステップＳ２０５）。図１６はアプリケーションログの一例を示している。プロセスの起動を示す「Start Proc」に続く文字列１２００がパッケージ名称を示している。さらに、「pid=」に続く数字１２１０が、アプリケーション１０が起動したプロセスのプロセスIDを示している。プロセスID抽出部２０ａは、アプリケーションログから「Start Proc」という文字列を検索し、その文字列に続く空白で挟まれた文字列が、ステップＳ２００で取得したパッケージ名称と一致する場合に、そのパッケージ名称に続く部分から「pid=」という文字列を検索し、その文字列に続く数字をプロセスIDとして取得する。このプロセスIDは、カーネルログの管理体系におけるプロセスIDと一致する。
【００８７】
続いて、プロセスID抽出部２０ａは、ステップＳ２０５で抽出したプロセスIDを親プロセスのプロセスID（以下、親プロセスIDとする）とし、カーネルログから子プロセスのプロセスID（以下、子プロセスIDとする）を抽出する（ステップＳ２１０）。カーネルログにおいて、プロセスの生成に関するシステムコールが記録された部分には、親プロセスと子プロセスも記録されている。本実施形態では、プロセスの生成に関するシステムコールとして、forkに注目する。
【００８８】
図１７はカーネルログの一例を示している。１つの記録単位１３００のメッセージ本体に、プロセスの生成に関するシステムコールを示す「fork」が記録されている。また、メッセージ本体の前のプロセスID「1391」が親プロセスIDを示し、メッセージ本体の最後尾のプロセスID「1392」が子プロセスIDを示す。プロセスID抽出部２０ａは、カーネルログから、「fork」の文字列を検索し、それらのいずれかの文字列を含むメッセージ本体の直前の親プロセスIDが、ステップＳ２０５で抽出したプロセスIDと一致する場合に、メッセージ本体の最後尾のプロセスIDを子プロセスIDとして抽出する。プロセスID抽出部２０ａは、抽出した子プロセスIDを親プロセスIDとして、上記のようにして子プロセスIDを抽出する処理を繰り返す。
【００８９】
続いて、カーネルログ抽出部２０ｂは、ステップＳ２０５，Ｓ２１０で抽出したプロセスIDと一致するプロセスIDが行の先頭に記録されている部分（記録単位）をカーネルログから抽出する（ステップＳ２１５）。ステップＳ２０５，Ｓ２１０で抽出したプロセスIDは、注目するアプリケーション１０に関連するプロセスのプロセスIDであるため、ステップＳ２１５で抽出した部分は、アプリケーション１０の挙動を示している。
【００９０】
続いて、ファイル操作内容抽出部２０ｃは、ステップＳ２１５で抽出した部分から、ファイル操作に関するシステムコールの実行内容を抽出する（ステップＳ２２０）。本実施形態では、ファイル操作に関するシステムコールとして、read、write、およびopenに注目する。
【００９１】
図１８は、openが記録されたカーネルログの一例を示している。１記録単位分に相当する部分１４００には、システムコールを呼び出したプロセスのプロセスID（695）と、システムコールを識別するシステムコール名称（open）と、システムコールの実行内容とが記録されている。システムコールの実行内容には、システムコールによってアクセスされたディレクトリの名称（/data/data/xxx/yyy/zzz）が含まれる。ファイル操作内容抽出部２０ｃは、ステップＳ２０５，Ｓ２１０で抽出したプロセスIDと一致するプロセスIDを行の先頭に有し、「read」、「write」、および「open」のいずれかと一致する文字列をメッセージ本体に有する記録単位があった場合に、その記録単位のメッセージ本体（記録単位全体でもよい）をシステムコールの実行内容として抽出する。
【００９２】
続いて、判定部２０ｄは、ステップＳ２２０で抽出したシステムコールの実行内容に基づいて、注目するアプリケーション１０が不正なアプリケーションであるか否かを判定する（ステップＳ２２５）。この判定には、不正なアプリケーションが行うファイル操作に基づいて予め定義した不正ファイル操作ルールが用いられる。不正ファイル操作ルールはファイル記憶部２３に格納されている。
【００９３】
携帯端末向けのオープンプラットフォームでは、アプリケーションがアクセスできるディレクトリは、そのアプリケーション専用に割り当てられた特定の領域に制限されている。図１９は、ファイル記憶部１６のディレクトリ構成を示している。ファイル記憶部１６には階層構造を有するディレクトリが作成されている。ディレクトリＤ１には、インストールされたアプリケーションの実行ファイルが格納される。また、ディレクトリＤ２は、各アプリケーションが用いるデータを保管するディレクトリであり、ディレクトリＤ２の下に、各アプリケーションの名称と同じ名称を有するディレクトリＤ３ａ〜Ｄ３ｃが並んでいる。
【００９４】
アプリケーションは、通常、そのアプリケーションに対応するディレクトリおよびそのディレクトリ下にあるディレクトリにしかアクセスすることができない。したがって、自身に専用に割り当てられたディレクトリとは異なる、他のアプリケーションに専用に割り当てられたディレクトリにアクセスするアプリケーションは不正なアプリケーションである。
【００９５】
また、図１９において、領域ＲＯＭは、OS等の重要なファイルが格納されている領域であり、一般ユーザ権限が設定されたアプリケーションがアクセスできないよう、領域ＲＯＭにはアクセス権限（パーミッション）が設定されている。このアクセス権限の変更は、root権限を有する場合のみ可能である。root権限を不正に取得した悪意のアプリケーションは、領域ＲＯＭのアクセス権限を変更し、領域ＲＯＭの重要なファイルにアクセスする。したがって、root権限を不正に取得して領域ＲＯＭにアクセスするアプリケーションは不正なアプリケーションである。
【００９６】
不正ファイル操作ルールには、各アプリケーションがアクセスしてはならない上記のようなディレクトリの名称が含まれる。すなわち、不正ファイル操作ルールには、ディレクトリＤ２下のディレクトリであって、注目するアプリケーション以外のアプリケーション専用のディレクトリの名称と、図１９の領域ＲＯＭに含まれるディレクトリの名称とが含まれる。
【００９７】
判定部２０ｄは、ステップＳ２２０で抽出したシステムコールの実行内容の文字列と、不正ファイル操作ルールに含まれる文字列とを比較し、ステップＳ２２０で抽出したシステムコールの実行内容の文字列の中に、不正ファイル操作ルールに含まれる文字列と一致する文字列があった場合、注目するアプリケーションが不正なアプリケーションであると判定する。また、ステップＳ２２０で抽出したシステムコールの実行内容の文字列の中に、不正ファイル操作ルールに含まれる文字列と一致する文字列がなかった場合、判定部２０ｄは、注目するアプリケーションが不正なアプリケーションではないと判定する。
【００９８】
上記の判定において、不正ファイル操作ルールの内容に基づいて、不正なアプリケーションの種別を識別してもよい。例えば、ステップＳ２２０で抽出したシステムコールの実行内容の文字列の中に、注目するアプリケーション以外のアプリケーション専用のディレクトリの名称と一致する文字列があった場合、注目するアプリケーションが、他のアプリケーションによって管理される個人情報等にアクセスする情報漏洩タイプのアプリケーションであると識別することができる。また、ステップＳ２２０で抽出したシステムコールの実行内容の文字列の中に、図１９の領域ＲＯＭに含まれるディレクトリの名称と一致する文字列があった場合、注目するアプリケーションが、root権限を不正に取得するタイプのアプリケーションであると識別することができる。上記の判定結果に応じて、不正なアプリケーションの種別を示す種別情報を生成し、判定結果と共にファイル記憶部２３に保存してもよい。
【００９９】
次に、本アプリケーション判定システムの変形例を説明する。ログ解析装置２におけるログ解析の機能を携帯端末１が有していてもよい。図２０は、ログ解析の機能を実装した携帯端末の機能構成を示している。図２０に示す携帯端末１ａは、図６に示した携帯端末１の構成に加えて、図７に示したログ解析装置２が有するログ解析部２０を有している。アプリケーション１０の起動後、ログ解析部２０は、作業領域Ｗ１に保持されているアプリケーションログおよびカーネルログに基づいて、図１４に示した処理を行う。なお、マニフェストファイルは、ファイル記憶部１６に格納されているアプリケーションの実行ファイルから取得される。また、ファイル記憶部１６には不正ファイル操作ルールが格納されており、図１４のステップＳ２２５では、この不正ファイル操作ルールが用いられる。
【０１００】
また、ログ解析装置２はログの収集機能とログの解析機能とを有しているが、ログの収集機能をログ解析装置２とは別の装置に持たせてもよい。例えば、携帯端末１からログを収集する機能を有する端末を用意し、ログ解析装置２はその端末からログを受信して解析を行う。
【０１０１】
また、上記ではファイル操作に関係するアプリケーションの挙動に注目しているが、通信に関係するアプリケーションの挙動に注目する方法もある。不正なアプリケーションはOSの脆弱性を突いてroot権限を不正に取得し、iptablesによる制限を解除して不正なウェブサイトにアクセスできるようになる。以下では、アプリケーションが通信を行う挙動を解析することで、注目するアプリケーションが不正なアプリケーションであるか否かを判定する方法を説明する。
【０１０２】
図２１はログ解析部２０の機能構成を示している。図１０に示した機能構成と比較すると、ファイル操作内容抽出部２０ｃに代えて通信内容抽出部２０ｆを備え、判定部２０ｄの機能が変更されている。通信内容抽出部２０ｆは、カーネルログ抽出部２０ｂが抽出した部分から、通信（ソケット通信）に関係するシステムコールの実行内容を抽出する。判定部２０ｄは、通信内容抽出部２０ｆが抽出したシステムコールの実行内容が、特定のIPアドレス（または特定のIPアドレスおよびポート番号）を通信相手とする通信を示しているか否かを判定することによって、注目するアプリケーション１０が不正なアプリケーションであるか否かを判定する。
【０１０３】
図２２は、図１２のステップＳ１６０におけるログ解析部２０の動作の詳細を示している。図１４に示した動作と比較して、ステップＳ２２０ａ，Ｓ２２５ａが異なる。ステップＳ２１５に続いて、通信内容抽出部２０ｆは、ステップＳ２１５で抽出した部分から、通信（ソケット通信）に関するシステムコールの実行内容を抽出する（ステップＳ２２０ａ）。本実施形態では、通信に関するシステムコールとして、recv、connect、およびsendに注目する。
【０１０４】
図２３は、connectが記録されたカーネルログの一例を示している。１記録単位分に相当する部分１４００ａには、システムコールを呼び出したプロセスのプロセスID（5205）と、システムコールを識別するシステムコール名称（connect）と、システムコールの実行内容とが記録されている。システムコールの実行内容には、システムコールによって実行された通信の相手のIPアドレス（aaa.bbb.ccc.ddd）とポート番号（xx）が含まれる。通信内容抽出部２０ｆは、ステップＳ２０５，Ｓ２１０で抽出したプロセスIDと一致するプロセスIDを行の先頭に有し、「recv」、「connect」、および「send」のいずれかと一致する文字列をメッセージ本体に有する記録単位があった場合に、その記録単位のメッセージ本体（記録単位全体でもよい）をシステムコールの実行内容として抽出する。
【０１０５】
続いて、判定部２０ｄは、ステップＳ２２０ａで抽出したシステムコールの実行内容に基づいて、注目するアプリケーション１０が不正なアプリケーションであるか否かを判定する（ステップＳ２２５ａ）。この判定には、不正なアプリケーションが行う通信に基づいて予め定義した不正通信相手リストが用いられる。不正通信相手リストはファイル記憶部２３に格納されている。
【０１０６】
インターネット上では、フィッシングサイトやウイルス感染サイト等、悪性のウェブサイトの情報をブラックリストとして公表しているウェブサイトがある。このウェブサイトから、不正な通信相手のIPアドレス等を取得することが可能である。また、既知の不正なアプリケーションが通信を行ったときの挙動を解析することによって、そのアプリケーションが通信を行った際の通信相手のIPアドレス等を取得することが可能である。上記のようにして取得したIPアドレス等が不正通信相手リストに記録されている。
【０１０７】
図２４は不正通信相手リストの一例を示している。不正通信相手リストには、IPアドレス、ポート番号、FQDN（Fully Qualified Domain Name）、および種別が含まれる。IPアドレス、ポート番号、およびFQDNは、不正なアプリケーションが行う通信の相手（宛先）の情報である。２つのIPアドレスが「〜」で結ばれている場合は、２つのIPアドレスを起点および終点とするIPアドレスの範囲を示している。種別は、通信の種別を示している。
【０１０８】
判定部２０ｄは、ステップＳ２２０で抽出したシステムコールの実行内容から「sin_addr=inet_addr」という文字列を検索し、その文字列に続く部分から、「"」で挟まれた数字列を通信相手のIPアドレスとして取得する。また、判定部２０ｄは、ステップＳ２２０で抽出したシステムコールの実行内容から「sin_port=htons」という文字列を検索し、その文字列に続く「(」と「)」で挟まれた数字をポート番号として取得する。
【０１０９】
さらに、判定部２０ｄは、システムコールの実行内容から取得したIPアドレスとポート番号との組合せを、不正通信相手リストに含まれるIPアドレスとポート番号との組合せと比較する。システムコールの実行内容から取得したIPアドレスとポート番号との組合せが、不正通信相手リストに含まれるIPアドレスとポート番号との組合せのいずれかと一致した場合、判定部２０ｄは、注目するアプリケーションが不正なアプリケーションであると判定する。また、システムコールの実行内容から取得したIPアドレスとポート番号との組合せが、不正通信相手リストに含まれるIPアドレスとポート番号との組合せのいずれとも一致しなかった場合、判定部２０ｄは、注目するアプリケーションが不正なアプリケーションではないと判定する。なお、不正通信相手リストにIPアドレスは記録されているがポート番号は記録されていない場合、IPアドレスのみについて、上記と同様の判定が行われる。
【０１１０】
上記の判定において、不正通信相手リストに含まれる通信相手の種別に基づいて、不正なアプリケーションの種別を識別してもよい。例えば、ステップＳ２２０ａで抽出したシステムコールの実行内容が、広告サイトとの通信として不正通信相手リストに記録されている場合、注目するアプリケーションが、広告サイトへ誘導する通信を行うタイプのアプリケーションであると識別することができる。また、ステップＳ２２０ａで抽出したシステムコールの実行内容が、ボットネットの通信として不正通信相手リストに記録されている場合、注目するアプリケーションが、マルウェア感染を企むボットネットと通信を行うタイプのアプリケーションであると識別することができる。上記の判定結果に応じて、不正なアプリケーションの種別を示す種別情報を生成し、判定結果と共にファイル記憶部２３に保存してもよい。
【０１１１】
上述した携帯端末１，１ａおよびログ解析装置２の各機能は、各装置の動作および機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませ、実行させることにより、実現される。
【０１１２】
上述したように、本実施形態のアプリケーション判定システムによれば、アプリケーションの挙動を記録したアプリケーションログおよびカーネルログに基づいて、注目するアプリケーションが不正であるか否かを判定することができる。特に、注目するアプリケーションの挙動に対応するプロセス以外のプロセスに関する多量の冗長な情報を解析対象から排除することが可能となるので、アプリケーションログおよびカーネルログの解析を効率的に行うことができ、注目するアプリケーションが不正であるか否かを判定する際の判定精度を向上することができる。
【０１１３】
また、カーネルログから、親プロセスIDと関連付けられた子プロセスIDを抽出し、ログの解析に用いることによって、アプリケーションの挙動をより詳細に解析することができ、注目するアプリケーションが不正であるか否かを判定する際の判定精度を向上することができる。
【０１１４】
また、カーネルログに記録されたシステムコールの実行内容が、root権限を有している場合に操作が可能なディレクトリ（図１９の領域ＲＯＭのディレクトリ）に対する操作を示しているか否か、あるいはファイル記憶部１６において特定のアプリケーションに割り当てられたディレクトリ（図１９のディレクトリＤ３ａ〜Ｄ３ｃ）に対する操作を示しているか否かを判定することによって、携帯端末のroot権限を奪うアプリケーションや、個人情報を漏洩させるアプリケーションを検出することができる。
【０１１５】
また、カーネルログから、親プロセスIDと関連付けられた子プロセスIDを抽出し、ログの解析に用いることによって、アプリケーションの挙動をより詳細に解析することができ、注目するアプリケーションが不正であるか否かを判定する際の判定精度を向上することができる。
【０１１６】
また、カーネルログに記録されたシステムコールの実行内容が、既知の悪性ウェブサイトのIPアドレスを通信相手とする通信を示しているか否か、あるいは既知の悪性アプリケーションの挙動を解析して得られるIPアドレスを通信相手とする通信を示しているか否かを判定することによって、広告サイトへ誘導する通信を行うアプリケーションや、マルウェア感染を企むボットネットと通信を行うアプリケーション等の不正なアプリケーションを検出することができる。
【０１１７】
また、カーネルログに記録されたシステムコールの実行内容からIPアドレスとポート番号を抽出し、不正通信相手リストに含まれるIPアドレスとポート番号の組合せと一致するか否かを判定することによって、通信プロトコル毎に通信相手を区別して詳細に判定を行うことができる。
【０１１８】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【符号の説明】
【０１１９】
１，１ａ・・・携帯端末、２・・・ログ解析装置、３・・・ケーブル、１０・・・アプリケーション、１１・・・アプリケーションログ生成部、１２・・・カーネルログ生成部、１３・・・ログ生成制御部、１４，２１・・・操作情報制御部、１５，２２・・・OS、１６，２３・・・ファイル記憶部、１７，２４，４３・・・操作部、１８，２５，４４・・・表示部、１９，２６・・・通信部、２０・・・ログ解析部、２０ａ・・・プロセスID抽出部、２０ｂ・・・カーネルログ抽出部、２０ｃ・・・ファイル操作内容抽出部、２０ｄ・・・判定部、２０ｅ・・・制御部、２０ｆ・・・通信内容抽出部、４０・・・通信部、４１・・・インストール実行部、４２・・・インストール制御部、Ｗ１，Ｗ２・・・作業領域
【図１】
2012008732.tif 000003
【図２】
2012008732.tif 000004
【図３】
2012008732.tif 000005
【図４】
2012008732.tif 000006
【図５】
2012008732.tif 000007
【図６】
2012008732.tif 000008
【図７】
2012008732.tif 000009
【図８】
2012008732.tif 000010
【図９】
2012008732.tif 000011
【図１０】
2012008732.tif 000012
【図１１】
2012008732.tif 000013
【図１２】
2012008732.tif 000014
【図１３】
2012008732.tif 000015
【図１４】
2012008732.tif 000016
【図１５】
2012008732.tif 000017
【図１６】
2012008732.tif 000018
【図１７】
2012008732.tif 000019
【図１８】
2012008732.tif 000020
【図１９】
2012008732.tif 000021
【図２０】
2012008732.tif 000022
【図２１】
2012008732.tif 000023
【図２２】
2012008732.tif 000024
【図２３】
2012008732.tif 000025
【図２４】
2012008732.tif 000026