(57)【要約】【課題】連携するアプリケーションの実行権限をユーザが適切に管理できるアプリケーション実行権限管理装置を提供する。【解決手段】アプリ権限分析部８１は、起動されたアプリケーションが利用するＡＰＩを検出して、そのアプリケーション単体で必要とする権限であるアプリ権限を分析する。連携アプリケーション検出部８２は、検出されたＡＰＩに基づいて、起動されたアプリケーションと連携するアプリケーションである連携アプリケーションを検出する。実行権限決定部８３は、起動されたアプリケーションのアプリ権限と、連携アプリケーションのアプリ権限とに基づいて、起動されたアプリケーションの実行権限を決定する。通知部８４は、決定した実行権限をユーザに通知する。【選択図】図８
2019168958.tif 000002
【特許請求の範囲】
【請求項１】
起動されたアプリケーションが利用するＡＰＩを検出して、当該アプリケーション単体で必要とする権限であるアプリ権限を分析するアプリ権限分析部と、
検出された前記ＡＰＩに基づいて、前記起動されたアプリケーションと連携するアプリケーションである連携アプリケーションを検出する連携アプリケーション検出部と、
起動されたアプリケーションのアプリ権限と、前記連携アプリケーションのアプリ権限とに基づいて、当該起動されたアプリケーションの実行権限を決定する実行権限決定部と、
決定した実行権限をユーザに通知する通知部とを備えた
ことを特徴とするアプリケーション実行権限管理装置。
【請求項２】
実行権限決定部は、起動されたアプリケーションが有するアプリ権限に連携アプリケーションのアプリ権限を加えた権限を、起動されたアプリケーションの実行権限と決定する
請求項１記載のアプリケーション実行権限管理装置。
【請求項３】
アプリ権限分析部は、実行されたＡＰＩが共有メモリまたはＮａｍｅｄＰｉｐｅを操作するＡＰＩの場合、実行されたＡＰＩから共有メモリまたはＮａｍｅｄＰｉｐｅ名および方向に関する情報を取得し、
連携アプリケーション検出部は、取得された前記情報を用いて連携アプリケーションを検出する
請求項１または請求項２記載のアプリケーション実行権限管理装置。
【請求項４】
連携アプリケーション検出部は、起動されたアプリケーションと同じフォルダ内に存在するアプリケーション、起動されたアプリケーションが呼び出す先のアプリケーション、および、起動されたアプリケーションと通信が行われるアプリケーションの少なくとも一つを連携アプリケーションとして検出する
請求項１から請求項３のうちのいずれか１項に記載のアプリケーション実行権限管理装置。
【請求項５】
検出されたＡＰＩの処理を制御する制御部を備え、
通知部は、通知した実行権限に対するユーザからの回答を受信し、
前記制御部は、受信した回答に応じて前記ＡＰＩの処理を制御する
請求項１から請求項４のうちのいずれか１項に記載のアプリケーション実行権限管理装置。
【請求項６】
通知部は、決定された実行権限が、すでにユーザに通知済みの実行権限である場合、当該実行権限の通知を抑制する
請求項１から請求項５のうちのいずれか１項に記載のアプリケーション実行権限管理装置。
【請求項７】
通知部は、受信したユーザからの回答を通知した実行権限と対応付けて記憶部に記憶させ、前記記憶部に記憶された内容に基づいて、ユーザに通知済みか否か判断する
請求項６記載のアプリケーション実行権限管理装置。
【請求項８】
起動されたアプリケーションが利用するＡＰＩを検出して、当該アプリケーション単体で必要とする権限であるアプリ権限を分析し、
検出された前記ＡＰＩに基づいて、前記起動されたアプリケーションと連携するアプリケーションである連携アプリケーションを検出し、
起動されたアプリケーションのアプリ権限と、前記連携アプリケーションのアプリ権限とに基づいて、当該起動されたアプリケーションの実行権限を決定し、
決定した実行権限をユーザに通知する
ことを特徴とするアプリケーション実行権限管理方法。
【請求項９】
コンピュータに、
起動されたアプリケーションが利用するＡＰＩを検出して、当該アプリケーション単体で必要とする権限であるアプリ権限を分析するアプリ権限分析処理、
検出された前記ＡＰＩに基づいて、前記起動されたアプリケーションと連携するアプリケーションである連携アプリケーションを検出する連携アプリケーション検出処理、
起動されたアプリケーションのアプリ権限と、前記連携アプリケーションのアプリ権限とに基づいて、当該起動されたアプリケーションの実行権限を決定する実行権限決定処理、および、
決定した実行権限をユーザに通知する通知処理
を実行させるためのアプリケーション実行権限管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションの実行権限を管理するアプリケーション実行権限管理装置、アプリケーション実行権限管理方法およびアプリケーション実行権限管理プログラムに関する。
【背景技術】
【０００２】
ウィルス（標的型攻撃、ランサムウェアなど）によって機密情報が盗まれ外部へ流出したり、破壊されたりするセキュリティ事件が後を絶たない。情報処理推進機構が発表した「情報セキュリティ１０大脅威  ２０１６」でも、「第２位  標的型攻撃による情報流出」、「第３位  ランサムウェアを使った詐欺・恐喝」が選出されていることからも明白である。
【０００３】
ウィルスがコンピュータに侵入してしまっても、ウィルスの動作を制限できれば被害の発生を防ぐことが可能である。しかし、実際にはウィルスは動作を制限されることなく処理を実行してしまう。これは、ウィルスなどのアプリケーションが実行しようとする処理の権限管理ができておらず、利用者の意図しない処理（ファイルアクセスやネットワークアクセスなど）を行ってしまうことがその要因である。そのため、コンピュータ上で動作するアプリケーションが利用者の意図した処理だけを行えるよう、アプリケーションが実行可能な権限管理を行うことが必要になる。
【０００４】
アプリケーションの実行権限を管理する一つの方法として、ＯＳ（オペレーションシステム）レベルで管理する方法が挙げられる。具体的には、アプリケーション開発者に対して予め利用権限を宣言することを強制する。そして、実際にアプリケーションが権限を要求したタイミングで利用者に通知を行うことで、利用者が許可または禁止を選択する。
【０００５】
他にも、アプリケーションの実行権限を管理する方法として、アプリケーション単体での権限を制御する方法が知られている。例えば、特許文献１には、システムにおけるアプリケーションの動作を安定的に管理する方法が記載されている。特許文献１に記載された方法では、アプリケーションの起動時に要求されるＡＰＩ（Application Programming Interface ：アプリケーションプログラミングインタフェース）関数をフックし、そのＡＰＩ関数に対するコールスタックの内容を出力する。そして、出力されたコールスタックの内容は、各種ＡＰＩ関数のコールスタックの内容を格納するスタック・データベースにおいて検索および確認される。
【０００６】
なお、特許文献２には、アクセス権限のないユーザに対するリソースの操作を制限する方法が記載されている。特許文献２に記載された方法では、コンピュータリソースに対するプロセスまたはＯＳからの操作要求をコンピュータリソースにアクセスする前に捕捉し、捕捉した操作要求によって指定されるコンピュータリソースに対するアクセス権限があるか否かを判定する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２０１０−５０９６５４号公報
【特許文献１】特開２００３−０４４２９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、ＯＳレベルで管理する方法では、対策が取られていないＯＳでは実現できないという問題がある。一方、アプリケーション単体で実行権限の制御を行う場合、上述するＯＳでの問題は生じない。しかし、アプリケーション単体で実行権限の制御を行う場合、複数のアプリケーションが連携して行われる動作に対して、適切に制御が行えないという問題がある。
【０００９】
以下、具体例を用いて、上記問題について説明する。図９は、２つのアプリケーションが連携して動作を行う場合の例を示す説明図である。例えば、図９に例示するアプリケーションＡＰ−Ａ１は、ファイルアクセスを行い、アプリケーションＡＰ−Ｂ１は、ネットワークアクセスを行うものとする。この場合、ユーザは、「アプリケーションＡＰ−Ａ１は、ファイルアクセスを行うアプリケーションである」、「アプリケーションＡＰ−Ｂ１は、ネットワークアクセスを行うアプリケーションである」としか判断できない。そのため、ユーザは、例えば、ファイルアクセスだけなら許可、ネットワークアクセスだけなら許可と判断し、アプリケーションＡＰ−Ａ１およびアプリケーションＡＰ−Ｂ１に対して権限を与えてしまう可能性がある。
【００１０】
しかし、アプリケーションＡＰ−Ａ１が不正な処理を行うアプリケーションだったとする。このとき、両方のアプリケーションに権限が与えられていると、アプリケーションＡＰ−Ａ１が不正に取得したデータを、アプリケーションＡＰ−Ｂ１と連携して、外部へ送信する処理が行われてしまう可能性がある。
【００１１】
図１０は、複数のアプリケーションが連携して動作を行う場合の例を示す説明図である。図１０に示す例では、アプリケーションＡＰ−Ａ２およびアプリケーションＡＰ−Ｂ２が、それぞれ、ファイルアクセスを行い、アプリケーションＡＰ−Ｃが、ネットワークアクセスを行うものとする。そして、アプリケーションＡＰ−Ａ２およびアプリケーションＡＰ−Ｂ２は、いずれもアプリケーションＡＰ−Ｃと連携しているものとする。また、アプリケーションＡＰ−Ａ２は、正しい処理を行うアプリケーションであり、アプリケーションＡＰ−Ｂ２は、不正な処理を行うアプリケーションであるとする。
【００１２】
図１０に示す例でも、アプリケーション単位で権限管理が行われるとする。仮に不明なアプリケーションからのネットワークを制御しようとして、アプリケーションＡＰ−Ｃによるネットワークアクセスを禁止する設定をしたとすると、正しい処理を行うアプリケーションＡＰ−Ａ２からの処理が実行できなくなってしまう。その一方で、アプリケーションＡＰ−Ｃによるネットワークアクセスを許可する設定をしたとすると、不正な処理を行うアプリケーションＡＰ−Ｂ２からの処理を許可してしまうことになる。
【００１３】
そこで、本発明は、連携するアプリケーションの実行権限をユーザが適切に管理できるアプリケーション実行権限管理装置、アプリケーション実行権限管理方法およびアプリケーション実行権限管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明によるアプリケーション実行権限管理装置は、起動されたアプリケーションが利用するＡＰＩを検出して、そのアプリケーション単体で必要とする権限であるアプリ権限を分析するアプリ権限分析部と、検出されたＡＰＩに基づいて、起動されたアプリケーションと連携するアプリケーションである連携アプリケーションを検出する連携アプリケーション検出部と、起動されたアプリケーションのアプリ権限と、連携アプリケーションのアプリ権限とに基づいて、起動されたアプリケーションの実行権限を決定する実行権限決定部と、決定した実行権限をユーザに通知する通知部とを備えたことを特徴とする。
【００１５】
本発明によるアプリケーション実行権限管理方法は、起動されたアプリケーションが利用するＡＰＩを検出して、そのアプリケーション単体で必要とする権限であるアプリ権限を分析し、検出されたＡＰＩに基づいて、起動されたアプリケーションと連携するアプリケーションである連携アプリケーションを検出し、起動されたアプリケーションのアプリ権限と、連携アプリケーションのアプリ権限とに基づいて、起動されたアプリケーションの実行権限を決定し、決定した実行権限をユーザに通知することを特徴とする。
【００１６】
本発明によるアプリケーション実行権限管理プログラムは、コンピュータに、起動されたアプリケーションが利用するＡＰＩを検出して、そのアプリケーション単体で必要とする権限であるアプリ権限を分析するアプリ権限分析処理、検出されたＡＰＩに基づいて、起動されたアプリケーションと連携するアプリケーションである連携アプリケーションを検出する連携アプリケーション検出処理、起動されたアプリケーションのアプリ権限と、連携アプリケーションのアプリ権限とに基づいて、その起動されたアプリケーションの実行権限を決定する実行権限決定処理、および、決定した実行権限をユーザに通知する通知処理を実行させることを特徴とする。
【発明の効果】
【００１７】
本発明によれば、連携するアプリケーションの実行権限をユーザが適切に管理できる。
【図面の簡単な説明】
【００１８】
【図１】本発明によるアプリケーション実行権限管理装置の一実施形態の構成例を示すブロック図である。
【図２】アプリケーション実行権限管理装置の動作例を示す説明図である。
【図３】アプリ管理テーブルの例を示す説明図である。
【図４】連携アプリ管理テーブルの例を示す説明図である。
【図５】実行権限管理テーブルの例を示す説明図である。
【図６】アプリケーション実行権限管理装置の動作例を示すフローチャートである。
【図７】アプリケーション実行権限管理装置の動作例を示すフローチャートである。
【図８】本発明によるアプリケーション実行権限管理装置の概要を示すブロック図である。
【図９】アプリケーションが連携して動作を行う場合の例を示す説明図である。
【図１０】複数のアプリケーションが連携して動作を行う場合の例を示す説明図である。
【発明を実施するための形態】
【００１９】
以下、本発明の実施形態を図面を参照して説明する。本発明では、アプリケーション単体だけではなく、連携するアプリケーションも含めて、正しく権限管理を行いユーザへ通知する手法を提案する。この手法を実現するため、アプリケーション単体の実行権限を管理する仕組みと、連携するアプリケーションを検出する仕組みとを組み合わせる。すなわち、アプリケーション単体の実行権限と連携するアプリケーションの実行権限とをまとめて、アプリケーションの実行権限として管理する。
【００２０】
なお、以下の説明では、「アプリケーション単体の実行権限」と、「アプリケーション単体の実行権限および連携するアプリケーションの実行権限を組み合わせた権限」を区別するため、表記を分けて説明する。具体的には、「アプリケーション単体の実行権限」を「アプリ権限」と表記し、「アプリケーション単体の実行権限および連携するアプリケーションの実行権限を組み合わせた権限」を「アプリケーションの実行権限」と表記する。
【００２１】
図１は、本発明によるアプリケーション実行権限管理装置の一実施形態の構成例を示すブロック図である。本実施形態のアプリケーション実行権限管理装置１００は、アプリケーション簡易分析部１と、簡易分析結果保存部２と、アプリケーション分析部３と、アプリケーション情報取得部４と、分析／取得結果保存部５と、連携アプリケーション検出部６と、連携アプリケーション保存部７と、アプリケーション権限決定部８と、実行権限通知部９と、実行権限保存部１０と、実行権限制御部１１と、記憶部１２とを備えている。
【００２２】
アプリケーション実行権限管理装置１００は、ＡＰＩフックにより、ＯＳとアプリケーションとの間の処理に介入し、動作する。本実施形態のアプリケーション実行権限管理装置１００では、アプリケーションの起動をトリガにアプリケーション簡易分析部１の処理が開始される。また、アプリケーションからの各ＡＰＩの呼び出しをトリガにアプリケーション分析部３の処理が開始される。
【００２３】
図２は、本実施形態のアプリケーション実行権限管理装置１００の動作例を示す説明図である。図２に例示するように、アプリケーションＡＰ−ＡとアプリケーションＡＰ−Ｂとが連携して処理を実行する。
【００２４】
上述するように、本実施形態では、アプリケーション実行権限管理装置１００が、ＯＳとアプリケーションとの間に介入して、アプリケーションが利用するＡＰＩを分析する。その分析結果からアプリケーションのアプリ権限（ファイルアクセス、ネットワークアクセスなど）が確認される。また、アプリケーション実行権限管理装置１００が、アプリケーションＡＰ−Ａと連携するアプリケーションＡＰ−Ｂを検出し、「アプリケーションＡＰ−Ａ単体のアプリ権限」と「アプリケーションＡＰ−Ａと連携するアプリケーションＡＰ−Ｂのアプリ権限」とを組み合わせ、その組み合わせた権限を「アプリケーションＡＰ−Ａの実行権限」として保存する（図２におけるステップＳ１０１）。
【００２５】
その後、アプリケーション実行権限管理装置１００は、生成したアプリケーションＡＰ−Ａの実行権限をユーザへ通知し、ユーザによる許可または禁止の選択を受け付ける。実行権限に変更があれば、アプリケーション実行権限管理装置１００は、再度利用者に通知を行う。利用者が「許可」を選択した場合、アプリケーション実行権限管理装置１００は、処理を継続し、「禁止」を選択した場合、処理を実行しない（図２におけるステップＳ１０２）。
【００２６】
以下、アプリケーション実行権限管理装置１００が備える各構成の動作を説明する。
【００２７】
記憶部１２は、アプリケーション実行権限管理装置１００が処理を行うために必要な各種情報を記憶する。なお、記憶部１２が記憶する内容は後述される。記憶部１２は、例えば、磁気ディスク等により実現される。
【００２８】
アプリケーション簡易分析部１は、アプリケーションが必要とするアプリ権限を決定する。具体的には、アプリケーション簡易分析部１は、アプリケーションの起動を検知すると、そのアプリケーションがロードするＡＰＩの一覧を作成する。そして、アプリケーション簡易分析部１は、予め決められたルールに基づき、作成されたＡＰＩの一覧から、起動したアプリケーションが必要なアプリ権限を決定する。
【００２９】
予め決められたルールとして、例えば、「ｓｏｃｋｅｔ  ＡＰＩが用いられた場合、ネットワーク通信のアプリ権限を有する」というルールが挙げられる。ただし、決められたルールの内容は、この内容に限定されない。ＡＰＩの内容に応じて、実行環境（例えば、ＯＳ）で定義される権限が対応付けられていればよい。
【００３０】
簡易分析結果保存部２は、アプリケーション簡易分析部１により決定されたアプリ権限をアプリケーションと対応付けて記憶部１２のアプリ管理テーブルに記憶する。
【００３１】
アプリケーション分析部３は、アプリケーションが必要とするアプリ権限を決定する。具体的には、アプリケーション分析部３は、予め決められたルールに基づき、実行されたＡＰＩからアプリケーションが必要とするアプリ権限を決定する。
【００３２】
予め決められたルールとして、例えば、「ＣｒｅａｔｅＦｉｌｅ  ＡＰＩでＲＥＡＤアクセスを行う場合、ファイル読み込みのアプリ権限を有する」というルールが挙げられる。ただし、決められたルールの内容は、この内容に限定されない。ＡＰＩの内容に応じて、実行環境（例えば、ＯＳ）で定義される権限が対応付けられていればよい。
【００３３】
さらに、アプリケーション分析部３は、実行されたＡＰＩが共有メモリまたはＮａｍｅｄＰｉｐｅを操作するＡＰＩか否か判断する。実行されたＡＰＩが共有メモリまたはＮａｍｅｄＰｉｐｅを操作するＡＰＩであった場合、アプリケーション情報取得部４による処理がさらに行われる。
【００３４】
共有メモリを操作するＡＰＩとして、例えば、「ＣｒｅａｔｅＦｉｌｅＭａｐｐｉｎｇ  ＡＰＩ」が挙げられる。また、ＮａｍｅｄＰｉｐｅを操作するＡＰＩとして、例えば、「ＣｒｅａｔｅＮａｍｅｄＰｉｐｅ  ＡＰＩ」、「ＣｒｅａｔｅＦｉｌｅ  ＡＰＩ」が挙げられる。
【００３５】
アプリケーション情報取得部４は、実行されたＡＰＩから共有メモリまたはＮａｍｅｄＰｉｐｅの名前と方向（すなわち、読み取りまたは書き込み）に関する情報を取得する。アプリケーション情報取得部４は、例えば、アプリケーションが呼び出したＡＰＩの情報（ＡＰＩ名や引数の値など）から、ＮａｍｅｄＰｉｐｅの名前と方向を取得してもよい。
【００３６】
分析／取得結果保存部５は、アプリケーション分析部３が決定したアプリ権限をアプリ管理テーブルに登録する。また、分析／取得結果保存部５は、アプリケーション分析部３が決定したアプリ権限とともに、アプリケーション情報取得部４が取得した情報を対応付けてアプリ管理テーブルに登録する。
【００３７】
図３は、アプリ管理テーブルの例を示す説明図である。図３に示す例では、起動したアプリケーションのアプリケーション名とアプリ権限、並びに、そのアプリケーションが使用する共有メモリおよびその方向、ＮａｍｅｄＰｉｐｅ名とその方向が対応付けられてアプリ管理テーブルに記憶されていることを示す。
【００３８】
連携アプリケーション検出部６は、アプリ管理テーブルの情報と実行されたＡＰＩから予め決められたルールに基づき、起動されたアプリケーションと連携するアプリケーション（以下、連携アプリケーションと記す。）を検出する。具体的には、連携アプリケーション検出部６は、起動されたアプリケーションと同じフォルダ内に存在するアプリケーション、起動されたアプリケーションが呼び出す先のアプリケーション、および、起動されたアプリケーションと通信が行われるアプリケーションの少なくとも一つを連携アプリケーションとして検出する。以下の説明では、アプリケーション間で行われる通信をプロセス間通信と記す。なお、予め決められたルールとして、以下のルールが例示される。
【００３９】
第一のルールの例として、「アプリケーションが同じフォルダに格納されているか否か」が挙げられる。このルールに対して、連携アプリケーション検出部６は、アプリケーションの実行フォルダを取得し、同フォルダ配下のｅｘｅファイルを全て列挙し、連携アプリケーションとして検出してもよい。
【００４０】
第二のルールの例として、「プロセスから別のプロセスが起動されているか否か」が挙げられる。このルールに対して、連携アプリケーション検出部６は、ＣｒｅａｔｅＰｒｏｃｅｓｓ  ＡＰＩから、該当のｅｘｅファイルを列挙し、連携アプリケーションとして検出してもよい。
【００４１】
第三のルールの例として、「ウィンドウメッセージに関してプロセス間通信が行われているか否か」が挙げられる。このルールに対して、連携アプリケーション検出部６は、ＳｅｎｄＭｅｓｓａｇｅ  ＡＰＩから、該当のウィンドウハンドルを持つｅｘｅファイルを列挙し、連携アプリケーションとして検出してもよい。
【００４２】
第四のルールの例として、「共有メモリに関してプロセス間通信が行われているか否か」が挙げられる。このルールに対して、連携アプリケーション検出部６は、アプリ管理テーブルから、一致する共有メモリ名を利用するｅｘｅファイルを列挙し、連携アプリケーションとして検出してもよい。この場合、共有メモリの利用方向も考慮し、連携アプリケーション検出部６は、書き込みを行っている場合に連携元アプリケーションとして判断し、読み込みのみを行っている場合に連携先アプリケーションとして判断してもよい。
【００４３】
第五のルールの例として、「名前付きパイプに関してプロセス間通信が行われているか否か」が挙げられる。このルールに対して、連携アプリケーション検出部６は、アプリ管理テーブルから、一致するＮａｍｅｄＰｉｐｅ名を利用するｅｘｅファイルを列挙し、連携アプリケーションとして検出してもよい。この場合、ＮａｍｅｄＰｉｐｅの利用方向も考慮し、連携アプリケーション検出部６は、書き込みを行っている場合に連携元アプリケーションと判断し、読み込みのみを行っている場合に連携先アプリケーションとして判断してもよい。
【００４４】
第六のルールの例として、「ＣＯＭ（Component Object Model）に関してプロセス間通信が行われているか否か」が挙げられる。このルールに対して、連携アプリケーション検出部６は、ＣｏＣｒｅａｔｅＩｎｓｔａｎｃｅ  ＡＰＩから、該当のＣＬＳＩＤを持つｅｘｅファイルを列挙し、連携アプリケーションとして検出してもよい。
【００４５】
なお、以上のルールは例示であり、これらの内容に限定されない。アプリケーションの通信や呼出し、格納場所に関する他のルールが決められていてもよい。
【００４６】
連携アプリケーション保存部７は、連携アプリケーション検出部６が検出した連携アプリケーションを記憶部１２の連携アプリ管理テーブルに登録する。図４は、連携アプリ管理テーブルの例を示す説明図である。図４に例示する連携アプリ管理テーブルは、連携元のアプリケーションと連携先のアプリケーションとを対応付けて記憶していることを示す。
【００４７】
アプリケーション権限決定部８は、連携アプリ管理テーブルに保存されたデータから連携アプリケーションを取得し、アプリ管理テーブルから各アプリケーションのアプリ権限を取得する。そして、アプリケーション権限決定部８は、起動されたアプリケーションのアプリ権限と、連携アプリケーションのアプリ権限とに基づいて、起動されたアプリケーションの実行権限を決定する。具体的には、アプリケーション権限決定部８は、起動されたアプリケーションがもともと有していたアプリ権限に連携アプリケーションのアプリ権限を加えた権限を、起動されたアプリケーションの実行権限と決定する。
【００４８】
実行権限通知部９は、アプリケーション権限決定部８が決定した実行権限をユーザに通知し、その実行権限の許可または禁止についての回答を受信する。具体的には、実行権限通知部９は、アプリケーション権限決定部８が決定した権限をアプリケーションが必要とする実行権限とし、「アプリケーションの情報」および「実行権限」をユーザに通知する。そして、実行権限通知部９は、実行権限の許可または禁止についての回答をユーザから取得する。通知するアプリケーションの情報は、例えば、連携元アプリケーションおよび連携先アプリケーションの内容である。
【００４９】
例えば、連携元アプリケーション名が“ＡＰ１．ｅｘｅ”であるとし、このアプリケーション自体は、ファイルアクセスのアプリ権限を有しているとする。一方、連携先のアプリケーション（ＡＰ２）が、ネットワークアクセスのアプリ権限を有しており、ＡＰ１の連携アプリケーションであるとする。この場合、実行権限通知部９は、ＡＰ１単体での実行権限と、連携アプリケーションＡＰ２と組み合わせた実行権限とをユーザに通知し、その実行権限の許可または禁止についての回答を受信してもよい。
【００５０】
実行権限保存部１０は、ユーザから取得した実行権限の許可または禁止についての回答を、記憶部１２の実行権限管理テーブルに登録する。図５は、実行権限管理テーブルの例を示す説明図である。図５に例示する実行権限管理テーブルは、上述する実行権限について、ＡＰ１単体での実行権限については許可され、連携アプリケーションＡＰ２と組み合わせた実行権限については禁止されたことを示す。
【００５１】
なお、実行権限通知部９は、実行権限管理テーブルを参照し、すでに許可または禁止が通知された実行権限について、再度ユーザに通知しなくてもよい。具体的には、実行権限通知部９は、連携先アプリケーションの情報を組み合わせて、実行権限が既に通知済みか否か判断してもよい。
【００５２】
実行権限制御部１１は、実行権限管理テーブルの情報に基づき、ＡＰＩの処理を実行するか、停止するか制御する。実行権限制御部１１は、例えば、起動したアプリケーションの処理が禁止されている場合、フックしたＡＰＩ内部で、オリジナルＡＰＩを実行せず、エラーを返却することで実行を禁止してもよい。また、連携プロセス（連携アプリケーション）の処理が禁止されている場合、実行権限制御部１１は、連携プロセスの起動またはプロセス間通信を禁止してもよい。この場合も、実行権限制御部１１は、ＡＰＩフックを行うことで上記と同様に実現してもよいし、連携先プロセスのＡＰＩをフックして、制御を行ってもよい。
【００５３】
アプリケーション簡易分析部１と、簡易分析結果保存部２と、アプリケーション分析部３と、アプリケーション情報取得部４と、分析／取得結果保存部５と、連携アプリケーション検出部６と、連携アプリケーション保存部７と、アプリケーション権限決定部８と、実行権限通知部９と、実行権限保存部１０と、実行権限制御部１１とは、プログラム（アプリケーション実行権限管理プログラム）に従って動作するコンピュータのＣＰＵによって実現される。
【００５４】
例えば、プログラムは、アプリケーション実行権限管理装置１００の記憶部１２に記憶され、ＣＰＵは、そのプログラムを読み込み、プログラムに従って、アプリケーション簡易分析部１、簡易分析結果保存部２、アプリケーション分析部３、アプリケーション情報取得部４、分析／取得結果保存部５、連携アプリケーション検出部６、連携アプリケーション保存部７、アプリケーション権限決定部８、実行権限通知部９、実行権限保存部１０および実行権限制御部１１として動作してもよい。
【００５５】
また、アプリケーション簡易分析部１と、簡易分析結果保存部２と、アプリケーション分析部３と、アプリケーション情報取得部４と、分析／取得結果保存部５と、連携アプリケーション検出部６と、連携アプリケーション保存部７と、アプリケーション権限決定部８と、実行権限通知部９と、実行権限保存部１０と、実行権限制御部１１とは、それぞれが専用のハードウェアで実現されていてもよい。
【００５６】
次に、本実施形態のアプリケーション実行権限管理装置１００の動作を説明する。図６および図７は、本実施形態のアプリケーション実行権限管理装置１００の動作例を示すフローチャートである。
【００５７】
アプリケーション実行権限管理装置１００は、アプリケーションの起動をトリガに図６に例示する処理を開始する。また、アプリケーション実行権限管理装置１００は、アプリケーションから各ＡＰＩが呼び出されたことをトリガに、図７に例示する処理を開始する。
【００５８】
アプリケーション簡易分析部１は、アプリケーション単体のアプリ権限を取得する（図６におけるステップＳ１）。具体的には、アプリケーション簡易分析部１は、アプリケーションがロードしているＡＰＩの一覧を作成し、予め決められたルールに基づき、アプリケーションが必要とするアプリ権限を決定する。
【００５９】
簡易分析結果保存部２は、アプリケーション単体のアプリ権限を保存する（ステップＳ２）。具体的には、簡易分析結果保存部２は、決定したアプリ権限の情報をアプリ管理テーブルに保存し、処理を終了する。なお、アプリケーションの起動後は、ＡＰＩフックされた各ＡＰＩの実行をトリガに図７に例示する処理が開始される。
【００６０】
アプリケーション分析部３は、アプリケーション単体のアプリ権限を取得する（ステップＳ３）。具体的には、アプリケーション分析部３は、アプリケーションが呼び出したＡＰＩの情報（ＡＰＩ名や引数の値）を利用し、予め決められたルールに基づき、アプリケーションが必要とするアプリ権限を決定する。
【００６１】
また、アプリケーション分析部３は、実行されたＡＰＩが共有メモリまたはＮａｍｅｄＰｉｐｅを操作するＡＰＩか否か判断する（ステップＳｐ１）。実行されたＡＰＩが共有メモリまたはＮａｍｅｄＰｉｐｅを操作するＡＰＩの場合（ステップＳｐ１におけるＹｅｓ）、アプリケーション情報取得部４は、アプリケーションの情報を取得する（ステップＳ４）。具体的には、アプリケーション情報取得部４は、アプリケーションが呼び出したＡＰＩの情報（ＡＰＩ名や引数の値）を利用し、共有メモリやＮａｍｅｄＰｉｐｅの名前と方向（読み取り／書き込み）に関する情報を取得する。一方、実行されたＡＰＩが共有メモリまたはＮａｍｅｄＰｉｐｅを操作するＡＰＩでない場合（ステップＳｐ１におけるＮｏ）、ステップＳ５の処理に進む。
【００６２】
分析／取得結果保存部５は、アプリケーション単体のアプリ権限および情報を保存する（ステップＳ５）。具体的には、分析／取得結果保存部５は、決定されたアプリ権限および情報をアプリ管理テーブルに保存する。
【００６３】
連携アプリケーション検出部６は、連携アプリケーションを検出する（ステップＳ６）。具体的には、連携アプリケーション検出部６は、アプリ管理テーブルの情報と実行されたＡＰＩの情報（ＡＰＩ名や引数の値）から予め決められたルールに基づき、連携アプリケーションを検出する。
【００６４】
連携アプリケーション保存部７は、連携アプリケーションの情報を保存する（ステップＳ７）。具体的には、連携アプリケーション保存部７は、検出された連携アプリケーションの情報を連携アプリ管理テーブルに保存する。
【００６５】
アプリケーション権限決定部８は、アプリケーションの実行権限を決定する（ステップＳ８）。具体的には、アプリケーション権限決定部８は、アプリ管理テーブルに保存されたデータからアプリケーション単体のアプリ権限を第一のアプリ権限として取得する。また、アプリケーション権限決定部８は、連携アプリ管理テーブルに保存されたデータから連携アプリケーションを取得し、アプリ管理テーブルから各連携アプリケーションのアプリ権限を第二のアプリ権限として取得する。そして、アプリケーション権限決定部８は、第一のアプリ権限および第二のアプリ権限から、アプリケーションの実行権限を決定する。
【００６６】
実行権限通知部９は、未確認の権限が存在するか否か判断する（ステップＳｐ２）。具体的には、実行権限通知部９は、実行権限管理テーブルからアプリケーションの実行権限の許可状況を取得し、取得したデータとステップＳ８で決定されたアプリケーションの実行権限と比較して、ユーザに通知していない実行権限が存在するか否か判断する。未確認の権限が存在する場合（ステップＳｐ２におけるＹｅｓ）、実行権限通知部９は、確認画面を表示し（ステップＳ９）、ユーザの回答を受け付ける。一方、未確認の権限が存在しない場合（ステップＳｐ２におけるＮｏ）、ステップＳ１１の処理に進む。
【００６７】
実行権限保存部１０は、確認結果を保存する（ステップＳ１０）。具体的には、実行権限保存部１０は、ユーザが選択した許可または禁止の結果を実行権限管理テーブルに保存する。
【００６８】
実行権限制御部１１は、アプリケーションの動作を制御する（ステップＳ１１）。具体的には、実行権限制御部１１は、実行権限管理テーブルからアプリケーションの実行権限の許可状況を取得する。そして、実行権限制御部１１は、取得したデータを基に、許可されている場合はアプリケーションの処理実行を継続し、禁止されている場合は、アプリケーションの処理をエラーとする。
【００６９】
以上のように、本実施形態では、アプリケーション分析部３が、起動されたアプリケーションが利用するＡＰＩを検出して、そのアプリケーションのアプリ権限を分析する。また、連携アプリケーション検出部６が、検出されたＡＰＩに基づいて、起動されたアプリケーションの連携アプリケーションを検出する。そして、アプリケーション権限決定部８が、起動されたアプリケーションのアプリ権限と、連携アプリケーションのアプリ権限とに基づいて、起動されたアプリケーションの実行権限を決定し、実行権限通知部９が、決定した実行権限をユーザに通知する。よって、連携するアプリケーションの実行権限をユーザが適切に管理できる。
【００７０】
すなわち、本実施形態のアプリケーション実行権限管理装置１００を用いることで、アプリケーション単体だけではなく、連携するアプリケーションまで含めて動作を正確に把握し、制御を行うことができる。そのため、ユーザの意図しない悪意のある動作からユーザを保護し、セキュリティを強化することが可能になる。
【００７１】
例えば、図９に示す例の場合、本実施形態のアプリケーション実行権限管理装置１００を用いることで、ユーザが、「アプリケーションＡＰ−Ａ１がファイルアクセスとネットワークアクセスを行うアプリケーションである」と判断することが可能になる。そのため、例えば、アプリケーションＡＰ−Ａ１がファイルにアクセスし、外部へデータを送信する可能性のあるアプリケーションであるとして、適切に権限管理することが可能になる。
【００７２】
また、例えば、図１０に示す例の場合、本実施形態のアプリケーション実行権限管理装置１００を用いることで、ユーザは、アプリケーションＡＰ−Ａ２が連携したときのアプリケーションＡＰ−Ｃの通信を許可し、アプリケーションＡＰ−Ｂ２が連携したときのアプリケーションＡＰ−Ｃの通信を禁止できる。
【００７３】
次に、本発明の概要を説明する。図８は、本発明によるアプリケーション実行権限管理装置の概要を示すブロック図である。本発明によるアプリケーション実行権限管理装置８０（例えば、アプリケーション実行権限管理装置１００）は、起動されたアプリケーションが利用するＡＰＩを検出して、そのアプリケーション単体で必要とする権限であるアプリ権限を分析するアプリ権限分析部８１（例えば、アプリケーション分析部３）と、検出されたＡＰＩに基づいて、起動されたアプリケーションと連携するアプリケーションである連携アプリケーションを検出する連携アプリケーション検出部８２（例えば、連携アプリケーション検出部６）と、起動されたアプリケーションのアプリ権限と、連携アプリケーションのアプリ権限とに基づいて、起動されたアプリケーションの実行権限を決定する実行権限決定部８３（例えば、アプリケーション権限決定部８）と、決定した実行権限をユーザに通知する通知部８４（例えば、実行権限通知部９）とを備えている。
【００７４】
そのような構成により、連携するアプリケーションの実行権限をユーザが適切に管理できる。
【００７５】
また、実行権限決定部８３は、起動されたアプリケーションが有するアプリ権限に連携アプリケーションのアプリ権限を加えた権限を、起動されたアプリケーションの実行権限と決定してもよい。
【００７６】
また、アプリ権限分析部８１は、実行されたＡＰＩが共有メモリまたはＮａｍｅｄＰｉｐｅを操作するＡＰＩの場合、実行されたＡＰＩから共有メモリまたはＮａｍｅｄＰｉｐｅ名および方向に関する情報を取得し、連携アプリケーション検出部８２は、取得された情報を用いて連携アプリケーションを検出してもよい。そのような構成により、より適切に連携アプリケーションを検出することが可能になる。
【００７７】
また、連携アプリケーション検出部８２は、起動されたアプリケーションと同じフォルダ内に存在するアプリケーション、起動されたアプリケーションが呼び出す先のアプリケーション、および、起動されたアプリケーションと通信が行われるアプリケーションの少なくとも一つを連携アプリケーションとして検出してもよい。
【００７８】
また、アプリケーション実行権限管理装置８０は、検出されたＡＰＩの処理を制御する制御部（例えば、実行権限制御部１１）を備えていてもよい。そして、通知部８４は、通知した実行権限に対するユーザからの回答を受信し、制御部は、受信した回答に応じてＡＰＩの処理を制御してもよい。
【００７９】
また、通知部８４は、決定された実行権限が、すでにユーザに通知済みの実行権限である場合、その実行権限の通知を抑制してもよい。そのような構成によれば、ユーザの確認負担を低減できる。
【００８０】
具体的には、通知部８４は、受信したユーザからの回答を通知した実行権限と対応付けて記憶部に記憶させ、記憶部に記憶された内容に基づいて、ユーザに通知済みか否か判断してもよい。
【符号の説明】
【００８１】
１  アプリケーション簡易分析部
２  簡易分析結果保存部
３  アプリケーション分析部
４  アプリケーション情報取得部
５  分析／取得結果保存部
６  連携アプリケーション検出部
７  連携アプリケーション保存部
８  アプリケーション権限決定部
９  実行権限通知部
１０  実行権限保存部
１１  実行権限制御部
１２  記憶部
１００  アプリケーション実行権限管理装置
【図１】
2019168958.tif 000003
【図２】
2019168958.tif 000004
【図３】
2019168958.tif 000005
【図４】
2019168958.tif 000006
【図５】
2019168958.tif 000007
【図６】
2019168958.tif 000008
【図７】
2019168958.tif 000009
【図８】
2019168958.tif 000010
【図９】
2019168958.tif 000011
【図１０】
2019168958.tif 000012