(58)【調査した分野】(Int.Cl.,DB名)
前記分析ステップにおいて、前記領域と前記プロセスに関連する少なくとも1つのグラフィックインターフェースとの間の前記1つ又は複数の交差の前記分析が、前記プロセスに関連する少なくとも1つのグラフィックインターフェースがディスプレイ上の領域を含むか、含まれているか、又は少なくとも部分的に交差しているかどうかを決定することを含む、
請求項1に記載の方法。
前記領域と前記プロセスに関連する前記少なくとも1つのグラフィックインターフェースとの前記1つ又は複数の交差の前記分析に基づいて、前記プロセスによる第1情報への前記アクセスを阻止するか否かの決定が、
前記重要度と前記危険度を組み合わせるステップと、
前記重要度と前記危険度との組合せを所定の閾値と比較するステップと、を含む、
請求項5に記載の方法。
前記プロセスに関連する前記グラフィックインターフェースが前記ディスプレイ上の前記領域を含むか、前記領域に含まれるか、又は少なくとも部分的に前記領域上で交差するかどうかの前記決定に基づいた前記領域の前記重要度の計算が、
前記領域と少なくとも部分的に交差する1つ又は複数の要素に関連する1つ又は複数の機密性係数に、情報データベースからアクセスするステップと、
前記1つ又は複数の機密性係数を考慮するアルゴリズムに基づいて前記重要度を計算するステップと、を含む、
請求項5に記載の方法。
前記領域と、前記プロセスに関連する少なくとも1つのグラフィックインターフェースとの間の1つ又は複数の交差点の分析に基づいて、前記プロセスに関連するアプリケーションが悪意あるものか否かを決定するステップを更に含む、
請求項1に記載の方法。
前記分析ステップにおいて、前記領域と前記プロセスに関連する少なくとも1つのグラフィックインターフェースとの間の前記1つ又は複数の交差の前記分析が、前記プロセスに関連する少なくとも1つのグラフィックインターフェースがディスプレイ上の領域を含むか、含まれているか、又は少なくとも部分的に交差しているかどうかを決定することを含む、
請求項11に記載のシステム。
前記領域と前記プロセスに関連する前記少なくとも1つのグラフィックインターフェースとの前記1つ又は複数の交差の前記分析に基づいて、前記プロセスによる第1情報への前記アクセスを阻止するか否かの決定が、
前記重要度と前記危険度を組み合わせるステップと、
前記重要度と前記危険度との組合せを所定の閾値と比較するステップと、を含む、
請求項15に記載のシステム。
前記プロセスに関連する前記グラフィックインターフェースが前記ディスプレイ上の前記領域を含むか、前記領域に含まれるか、又は少なくとも部分的に前記領域上で交差するかどうかの前記決定に基づいた前記領域の前記重要度の計算が、
前記領域と少なくとも部分的に交差する1つ又は複数の要素に関連する1つ又は複数の機密性係数に、情報データベースからアクセスするステップと、
前記1つ又は複数の機密性係数を考慮するアルゴリズムに基づいて前記重要度を計算するステップと、を含む、
請求項15に記載のシステム。
【発明を実施するための形態】
【0020】
本発明に関する例示的な側面は、計算機器上の保護されたアプリケーションへのアクセスを阻止するためのシステム、方法、及びコンピュータプログラム製品に関連して本明細書で説明される。当業者であれば、以下の説明は例示的なものに過ぎず、決して限定するものではないことを理解するであろう。他の側面は、本発明の利益を有する当業者には容易に示唆されるであろう。 以下、添付の図面に例示されている例示的な実施形態を詳細に参照する。同一の符号は、図面全体にわたって可能な範囲で使用され、以下の説明は、同じ又は同様の項目を参照するために使用される。
【0021】
以下の用語は、本発明の例示的な側面を説明する際に使用される。
【0022】
悪意あるアプリケーションとは、コンピュータやコンピュータのユーザのデータに害を及ぼす可能性があるアプリケーションであってもよい。悪意あるアプリケーションの例として、ネットワーム、キーボードトラッカー、又はコンピュータウイルスが挙げられる。悪意あるプログラムによって引き起こされる害には、コンピュータのリソースへの不正アクセス(例えば、盗難の目的でコンピュータに保存されるデータを含む)、データの格納を含むリソースの違法な使用、計算の実行等が挙げられる。
【0023】
信頼できるアプリケーションとは、コンピュータ又はそのユーザに害を与えないアプリケーションであってもよい。信頼できるアプリケーションは、信頼できるソフトウェア製造元によって開発され、信頼できるソース(信頼できるサイトのデータベースにリストされたサイトなど)からダウンロードされたアプリケーション、又は信頼できるアプリケーションのデータベースに格納することができる識別子(アプリケーションファイルのMD5など)と関連づけられたアプリケーションを含む。デジタル証明書(例えば、信頼できるアプリケーションに関連付けられている)などの製造元識別子もまた、信頼できるアプリケーションのデータベースに格納されてもよい。
【0024】
信頼できないアプリケーションは、信頼されていないが、例えばアンチウィルスアプリケーションを使用して害があると認識されないアプリケーションであってもよい。
【0025】
悪意あるファイルは、悪意あるアプリケーションのコンポーネントであってもよい。
【0026】
信頼できないファイルは、信頼されていないアプリケーションのコンポーネントであってもよい。
【0027】
信頼できるファイルは、信頼できるアプリケーションのコンポーネントであってもよい。
【0028】
悪意あるプロセスは、悪意あるアプリケーションから実行されているプロセスであってもよい。
【0029】
信頼できないプロセスは、信頼できないアプリケーションから実行されているプロセスであってもよい。
【0030】
信頼できるプロセスは、信頼できるアプリケーションから実行するプロセスであってもよい。
【0031】
ユーザに表示されている情報へのアクセスは、ユーザに表示されている情報のバイナリ表現が計算機器のメモリ(例えば、RAM)にロードされる結果となる少なくとも1つのシステム関数の呼出しを含んでもよい。そのような関数として、たとえば、WinAPI関数のBitBltが挙げられる。
【0032】
ユーザに表示されている情報へのアクセスの危険度(アクセス危険度)は、例えば、0〜+∞、又は0〜1000(計算値が1000を超える場合は1000とみなす)の範囲内の数字であって、ユーザに表示されている情報へのアクセスが悪意あるプロセスの特徴を有するほど高くなるものであってよい。
【0033】
図1は、ユーザの計算機器上の保護されたアプリケーションへのアクセスを阻止するための例示的なシステムの構造図を示す。システムは、コンポーネントとして、傍受モジュール130、交差分析モジュール140、セキュリティ提供モジュール150を含む。例示的な側面では、システムは、情報データベース160を更に含む。システムは、PC、ノートブック、スマートフォン、又は他の計算機器といったユーザの計算機器(単に、「計算機器」と称する。)上に存在してもよく、その詳細な説明は以下で更に提供される。
【0034】
例示的な側面では、計算機器はディスプレイ110を含む(例示的な側面では、ディスプレイ110は計算機器の一部ではなく、他の入出力機器と共に接続される)。ディスプレイ110は、計算機器のユーザ(以下、単にユーザと称する。)に情報を表示し、表示される情報は、テキスト、グラフィックイメージなどを含んでもよい。かかる情報は、オペレーティング・システム(OS)のグラフィックインターフェース(例えば、Windows(登録商標)OSのタスクパネル)の様々な要素、及び、計算機器上で実行される複数のプロセス120のグラフィックインターフェース115(115a、115b、及び115c)の要素によって表示されてもよい。例示的な側面では、そのようなグラフィックインターフェースの要素は、プロセスウィンドウ120であってもよい。別の側面では、グラフィックインターフェース115の要素はプロセスウィジェット120であってもよい。更に別の側面では、グラフィックインターフェース115の要素はポップアップウィンドウであってもよい。更に別の側面では、グラフィックインターフェース115の要素は、プロセス120が起動されたアプリケーションのアイコン、通知パネル(Android(登録商標)OSのステータスバー又はWindowsOSのトレイ)におけるプロセス120のアイコンであってもよい。計算機器上で実行されるプロセス120は、少なくとも同じ計算機器上に存在するアプリケーションから起動されてもよい。例示的な側面では、当該アプリケーションは、別の計算機器(例えば、リモートサーバ又はネットワークディスク)上に存在してもよい。例示的な側面では、実行されるプロセス120は、グラフィックインターフェース115の要素を有さないプロセスを含んでもよい。
【0035】
例示的な側面では、傍受モジュール130は、表示されている情報に対するプロセスのアクセスを傍受するように構成されてもよい。傍受モジュール130は、少なくとも、(1)ユーザに表示されている情報へのアクセスを実現するプロセス120に関する情報であって、少なくとも上述したプロセス120の識別子(例えば、プロセス識別子としてのPID)を含む情報を決定するように構成されてもよく、(2)情報がユーザに表示され、プロセス120によってアクセスが実施される計算機器のディスプレイ110上の領域125を決定するように構成されてもよい。
【0036】
計算機器のディスプレイ110上の領域125の決定は、少なくとも領域の位置の決定であってもよい。例示的な側面では、計算機器のディスプレイ110上の領域125の位置は、領域125の頂点座標か、又は頂点のうちの一つ座標(左上など)及び高さと幅で示される領域の寸法であり得る。領域125は、長方形であってもよい。更に別の側面では、領域は任意の形状を有することができ、そのような形状の決定は、領域の境界上の点の正確な又は近似的な(例えば、特定の精度での)位置を記述する関数の決定に基づくことができる。ユーザに表示されている情報へのアクセスは、少なくとも、ユーザに表示されている情報のバイナリ表現(ビットマップ)がコンピューティング装置のメモリに格納される結果となる(システム関数などの)関数の呼出しであってもよい。側面では、当該メモリは、計算機器のRAMであってもよい。上述した関数の例としては、Windows API関数のBitBltが挙げられる。1つの例示的な側面において、当該関数はDrvCopyBitsでもよい。更に別の例示的な側面において、当該関数はPrintWindow、StretchBlt又はPlgBltでもよい。
【0037】
傍受を実行するために、傍受モジュール130はドライバとして実現されてもよい。例示的な側面では、このドライバは、関数BitBlt又はPrintWindowの呼出しを傍受する。ドライバを使用してこの関数呼出しを傍受すると、呼出しのコンテクスト(プロセス識別子(PID)及び/又はスレッド識別子(TID))を判断することができる。そのようにして得られたデータを、プロセスに関する前述の情報としてもよい。領域125の位置は、nHeight、hdcSrc、nXSrc、nYSrcと呼ばれる、関数の対応するパラメータ(後に傍受される)によって決定されてもよい。
【0038】
WindowsOSのバージョン8以降には、システム呼出しテーブル、グローバルディスクリプタテーブル、割り込みディスクリプタテーブルなどのOSの重要な構造やテーブルが変更されることからOSを保護するコンポーネントであるPatchGuardが備わっている。当該コンポーネントは、ドライバレベルで実行されるアクセスの傍受に対する前述のアプローチを許可しない。例示的な側面では、傍受モジュール130は、プロセス120のグラフィックインターフェース115の要素を表示するためのDWM(Desktop Windows Manager)サブシステムのコンポーネントの形態で実現することができる。そのようなコンポーネントは、dllファイルの形式で埋め込まれていてもよく、dllファイルはプロセスdwm.exeのアドレス空間に格納されてもよい。特定のプロセス120による関数BitBltの呼出しの後、傍受モジュールによって傍受され得るLPC(ローカルプロシージャコール)要求を受信する結果となる関数呼出しが連続的に続いてもよい。ユーザに表示されている情報へのアクセスを実行するプロセス120に関する情報としては、かかる要求のヘッダにおけるPID及びTIDがある。このようにして得られるデータを、前述のプロセスに関する情報としてもよい。領域125の位置は、LPC要求を介して呼び出される関数の対応するパラメータ(nHeight、hdcSrc、nXSrc、nYSrc)によって決定されてもよい。
【0039】
更に別の例示的な側面では、傍受モジュール130は、ディスプレイドライバ(cdd.dllすなわちCanonical Display Driverなど)へのアプリケーションによるアクセスを傍受するドライバの形態で実現されてもよい。その場合、傍受モジュール130は、DrvCopyBitsのサーフェースをコピーする関数の呼出しを傍受してもよい。上述したドライバを使用した当該関数の呼出しの傍受において、呼出しのコンテクスト、すなわち、PID(プロセス識別子)とTID(スレッド識別子)が決定される。このようにして得られたデータを、プロセスに関する前述の情報としてもよい。更に、サーフェースにアクセスするための関数呼出しにおいて、傍受モジュール130は、アクセスされているサーフェース識別子を決定することができる。サーフェース識別子を使用して、傍受モジュール130は、アクセスされる領域(座標及び寸法)を決定することができる。領域125の位置は、呼び出される関数の対応するパラメータ(pptlSrc)によって決定されてもよい。
【0040】
更に別の例示的な側面では、計算機器のディスプレイ110上の領域125の位置の決定は、領域125に対応する機器コンテクストの決定を含んでもよく、領域125において、ユーザに表示される情報(関数呼び出しパラメータとして示された機器コンテクスト)はアクセスされていてもよい。例示的な側面では、機器コンテクストは、傍受された関数hdcSrcの呼出しのパラメータ(例えば、関数BitBlt、PlgBlt及びStretchBltのためのパラメータ)であってもよい。
【0041】
更に別の例示的な側面では、計算機器のディスプレイ110上の領域125の位置の決定は、傍受された関数呼出しを介してアクセスされている領域125に対応するサーフェースの決定を含んでもよい。例示的な側面では、サーフェース(具体的には、構造SURFOBJへのポインタ)は、傍受された関数呼出しDrvCopyBitsのパラメータpsoSrcである。
【0042】
更に別の例示的な側面では、計算機器のディスプレイ110上の領域125の位置の決定は、傍受された関数呼び出しを介してアクセスされる領域125に対応するウィンドウ(ウィンドウハンドル)の識別子の決定を含む。例示的な側面では、ウィンドウ識別子は、傍受された関数呼出しPrintWindowのパラメータhwndであってもよい。
【0043】
傍受モジュールによって決定された、ユーザに表示されている情報へのアクセスを実行するプロセス120に関する情報、及び、ユーザに表示され、且つ、その情報にアクセスされている計算機器のディスプレイ110上の領域125に関する情報(特に、領域を記述する情報、すなわち、計算機器のディスプレイ110における領域125の位置)は、傍受モジュール130によって交差分析モジュール140に中継されてもよい。また、ユーザに表示されている情報へのアクセスを実行するプロセス120に関する傍受モジュール130によって決定された情報は、セキュリティ提供モジュール150に中継されてもよい。
【0044】
例示的な側面では、傍受モジュール130によって決定された計算機器のディスプレイ110上の領域125が、傍受されたアクセスを実行しているプロセス120に対応する場合、かかるアクセスに関するさらなる分析は行われず、傍受されたアクセスを実行するプロセス120はその実行を継続する。例示的な側面では、傍受モジュール130によって決定されたサーフェースがプロセス120に対応する場合、領域125はプロセス120に対応する。更に別の例示的な側面では、傍受モジュール130によって決定されたウィンドウ識別子がプロセス120のウィンドウに対応する場合、領域125はプロセス120に対応する。別の例示的な側面では、傍受モジュール130によって決定された機器コンテクストがプロセス120に対応する場合、領域125はプロセス120に対応する。
【0045】
交差分析モジュール140は、傍受モジュール130を用いて決定された計算機器のディスプレイ110上における領域125と、計算機器上で実行されているプロセス120のグラフィックインターフェースの要素の領域の交差について、上述したプロセス120のグラフィックインターフェース115の要素の領域の何れが、領域125を含むか、領域125に含まれるか、又は領域125と部分的に交差するかを決定するため、分析するように構成されてもよい。
【0046】
例示的な側面では、前述の分析中、交差分析モジュール140は、計算機器で実行されているプロセス120のグラフィックインターフェース115の全ての要素の領域の位置と、傍受モジュール130によって決定された領域125の位置とを比較する。例示的な側面では、プロセス120のグラフィックインターフェース115の要素の領域の位置は、プロセス120のグラフィックインターフェース115の要素に関するデータ(具体的には、それらの位置及び寸法)に基づいて交差分析モジュール140によって決定されるが、当該データは、OSによって提供されてもよい。例示的な側面では、当該データは、関数GetWindowRectの呼出しに応答してOSによって提供されてもよい。
【0047】
更に別の例示的な側面では、プロセス120のグラフィックインターフェース115の要素の領域の位置は、サーフェースとそれらの位置に関する情報に基づいて、交差分析モジュールによって決定されてもよい。そのようなデータは、サーフェースを作成する関数呼出しDrvEnableSurface、特にその戻り値(構造SURFOBJのポインタであって、プロセス120のグラフィックインターフェースの要素に対応するサーフェースの位置を示すもの)を傍受することによって、交差分析モジュール140により得られる。
【0048】
別の例示的な側面では、傍受モジュール130で決定された、ユーザに表示されている情報へのアクセスが実行されている機器コンテクスト(又はアクセスされているサーフェース)が、デスクトップの機器コンテクストと一致する場合、又は、傍受モジュール130で決定された、傍受された関数のパラメータであるウィンドウ識別子が、デスクトップ識別子である場合、交差分析モジュール140は、プロセス120のグラフィックインターフェース115の要素の領域の何れが、領域125を含むか、領域125に含まれるか、又は領域125と部分的に交差するかを決定する。
【0049】
図1は、計算機器上で実行されるプロセス120のグラフィックインターフェース115の要素の位置の例を示す。交差分析モジュール140は、領域125の位置と、グラフィックインターフェース115の要素の領域の位置とを比較することによって、プロセス120のグラフィックインターフェース115aの要素の領域が(完全に)領域125を含み、プロセス120のグラフィックインターフェース115bの要素の領域が領域125と部分的に交差し、プロセス120のグラフィックインターフェース115cの要素の領域が領域125と交差しないことを決定する。例示的な側面では、領域125の頂点座標と、グラフィックインターフェース115の要素の領域とに基づいて、領域125がグラフィックインターフェース115の要素の領域に対してどのように配置されるかについての決定を行ってもよい。更に別の例示的な側面では、領域125がグラフィックインターフェース115の要素の領域に対してどのように配置されるかに関する決定は、1つの頂点(左上など)の座標、領域125及びグラフィックインターフェース115の要素の寸法(高さ及び幅)に基づいてなされてもよい。
【0050】
更に別の例示的な側面では、交差分析モジュール140は、領域125の寸法と、領域125及びグラフィックインターフェース115の要素の領域の交差領域の寸法との比である交差率を決定してもよい。例えば、グラフィックインターフェース115aの要素の領域については、交差率は1であり、グラフィックインターフェース115bの要素の領域については、交差率は1/3であり、グラフィックインターフェース115cの要素の領域との交差率は0(交点なし)に等しくなる。
【0051】
グラフィックインターフェースのかかる要素がウィンドウであって、傍受モジュール130を用いて決定されたユーザに表示される情報へのアクセスが実行されている機器コンテクストと、ウィンドウの機器コンテクスト(関数呼出しWinAPI、GetDCを用いて決定され得る)が一致する場合、交差分析モジュールは、プロセス120のグラフィックインターフェース115の要素が、領域125を含むと決定する。この場合、交差率は1となる。他の全てのプロセス120については、グラフィックインターフェース115のそれらの要素が領域125と交差していないとみなすことができる。
【0052】
更に別の側面では、グラフィックインターフェースの要素がウィンドウであって、傍受された関数呼出しに介してアクセスされている領域120に対応するサーフェースが当該ウィンドウのサーフェースである場合、交差分析モジュール140は、プロセス120のグラフィックインターフェース115の要素が、領域125を含んでいると決定する。この場合、交差率は1となる。他の全てのプロセス120については、グラフィックインターフェース115のそれらの要素が領域125と交差していないとみなすことができる。
【0053】
更に別の例示的な側面では、グラフィックインターフェースの要素がウィンドウであって、当該ウィンドウの識別子(HWND)が、領域125に対応するウィンドウの識別子であって、傍受モジュール130を用いて決定されたものと一致する場合、交差分析モジュール140は、プロセス120のグラフィックインターフェース115の要素が領域125を含むと決定してもよい。この場合、交差率は1となる。他の全てのプロセス120については、グラフィックインターフェース115のそれらの要素が領域125と交差していないとみなすことができる。
【0054】
計算機器で実行されているプロセス120のグラフィックインターフェース115の要素の領域の何れが、上述した領域125を含むか、領域125に含まれるか、又は部分的に領域125と交差するか否かに基づいて、計算機器110のディスプレイ上の領域125に対する傍受モジュールの使用によって決定されるに際し、交差分析モジュール140は、更に、重要度を計算してもよい。領域125の重要度は、グラフィックインターフェース115の要素の領域が、領域125を含み、部分的に交差し、又は領域125に含まれているプロセス120によりユーザに表示されている情報が機密であるか否かに依存してもよい。領域125の重要度が高いほど、言及された情報が機密である可能性が高くなる。例示的な側面では、領域125の重要度を計算するために、領域125とプロセス120のグラフィックインターフェース115の要素の領域との交差率も使用される。
【0055】
例示的な側面では、グラフィックインターフェース115の要素の領域が、領域125を含み、領域125と部分的に交差し、又は領域125に含まれているプロセス120を介してユーザに表示されている情報の機密性は、交差分析モジュール140にリンクされた情報データベース160を用いて決定されてもよい。情報データベース160は、プロセス120のグラフィックインターフェース115の要素の機密性係数であって、数値として表現されている係数を格納している。プロセス120のグラフィックインターフェース115の要素の機密性係数が高いほど、このプロセス120のグラフィックインターフェース115の要素が機密情報をユーザに表示する可能性が高くなる。銀行との遠隔作業のためのアプリケーションのプロセス120、「セキュアモード」(いわゆる「サンドボックス」)で起動されるプロセス120、電子メールを扱うためのアプリケーションのプロセス120及びそれらのプロセスの子プロセス(例えば、電子メールの添付ファイルが開かれているプロセスwinword.exe)は、グラフィックインターフェース115の要素を介して(例えば、それらのウィンドウを介して)機密情報を表示している。
【0056】
1つの例示的な側面では、情報データベース160に格納され得る情報は、コンピュータセキュリティの分野の専門家によって定式化され、交差分析モジュール140によってデータベース160に書き込まれてもよく、また、リモートセキュリティサーバ又はシステム管理者からこの情報を得てもよい。
【0057】
更に別の側面では、悪意あるアプリケーションの検出のためにシステムにアクティビティ監視モジュール170が追加的に含まれる。アクティビティ監視モジュール170は、プロセス120によって実行されているアクションを追跡し、プロセス120のグラフィックインターフェース115の要素に対応する機密性係数を計算するように構成されてもよい。1つの例示的な側面では、アクティビティ監視モジュール170によって計算された機密性係数は、情報データベース160に送信されてもよい(情報データベース160がすでに機密性係数の値を格納している場合、それらの値は更新される)。別の例示的な側面では、計算された機密性係数は、アクティビティ監視モジュール170によってセキュリティ提供モジュール150に送信され、次いでこれらの係数を、セキュリティ提供モジュール150が情報データベース160から得ることができる係数とともに使用する。プロセス120によって実行されるアクションは、プロセス120によって実行されるシステム呼出し又はシステム呼出しのセットを指す。更に別の例示的な側面では、アクションは、電子通信(電子メール、音声メッセージ、又はインスタントメッセージング通信など)の送信/受信を含むことができる。トラッキングを実行するため、アクティビティ監視モジュール170は、ドライバ又はドライバのセットであるか、それらを含んでもよく、それらを使用することで、プロセス120によって実行されている(例えば、傍受を介した)システム呼出しの決定が行われてもよい。それにより、トラッキングが実現する。システム呼出しの決定は、この呼出しを実行しているプロセス120の決定及び呼出しの引数を含むことができる。例示的な側面では、アクティビティ監視モジュール170は、ドライバを使用することによって、ネットワーク接続関数(接続、ソケット、バインド、受信、送信など)と共に、プロセスの起動のための関数呼び出し(LoadModule、CreateProcess、CreateProcessAsUser、ShellExecute、WinExecなど)を決定する。ネットワーク呼出しの決定の可能性は、ドライバの使用例に限定されないことに留意する必要がある。更に別の側面では、アクティビティ監視モジュール170は、プロセス120が起動されるアプリケーション用のプラグインであるか、プラグインを含んでいてもよく、プラグインを使用し、このプロセス120によって送信又は受信されたメッセージに関する情報の決定があってもよい。例示的な側面では、そのような情報は、メッセージの送信者、メッセージの受信者、メッセージの主題、メッセージの内容、着信又は発信のメッセージの種類であってもよい。更に別の側面では、アクティビティ監視モジュール170は、このようなプラグインを使用して、Microsoft Word(登録商標)文書の著者などの文書の著者を決定する。なお、著者名については、文書が作成又は変更されたときに(文書ファイルの)文書のヘッダに示される。
【0058】
例示的な側面では、アクティビティ監視モジュール170は、ヒューリスティック規則を使用して、プロセス120のグラフィックインターフェース115の要素に対する機密性係数を計算してもよい。ヒューリスティック規則を使用する目的は、機密情報又は盗難が望ましくない他の情報がユーザに表示され得るこれらのプロセス120のグラフィックインターフェース115の要素の、高い機密性係数を確立することである。1つの例示的な側面では、そのようなヒューリスティック規則の例は、以下のとおりである。
・保護されたネットワーク接続(httpsなど)を確立するプロセス120のグラフィックインターフェース115の要素に対する機密性係数の最大値を確立する。
・保護されたリモートサーバのリストからリモートサーバとの接続を確立するプロセス120のグラフィックインターフェース115の要素に対する機密性係数の最大値を確立する。
・保護されたアプリケーションのリストから起動されたプロセス120のグラフィックインターフェース115の要素に対する機密性係数の最大値を確立する。
・保護された作成者のリストから作成者によって作成された文書を開くプロセス120のグラフィックインターフェース115の要素に対する機密性係数の最大値を確立する。
・保護された連絡先のリストからアドレスからメッセージを受信する(又はメッセージをアドレスに送信する)プロセス120のグラフィックインターフェース115の要素に対する機密性の係数の最大値を確立する。
【0059】
情報データベース160は、保護されたリモートサーバのリストに現れるリモートサーバ(銀行又は電子メールサーバなど)のアドレス(IPアドレス)を保存する。保護されたアプリケーションのリストは、データベース160に格納され得るアプリケーションのリスト(例えば、銀行と連携するアプリケーション、情報の漏洩を防ぐアプリケーション、すなわちDLP(Data Leak Prevention)など)であってもよい。保護された連絡先のリストは、データベース160に格納されている連絡先のリスト(送信者又はメッセージの受信者の名前又は電子メールアドレスなど)であってもよい。保護された作成者のリストは、データベース160に格納されてもよい作成者のリスト(例えば、文書を作成したユーザの名前)であってもよい。
【0060】
例示的な側面では、機密性係数の最大値は、10
9であってもよい。更に別の側面では、機密性係数の最大値は、セキュリティ提供モジュール150によって使用される閾値以上の数であってもよい(以下では、これについて更に説明する)。更に別の側面では、機密性係数の最大値は、情報データベースに格納することができる最大の数値であってもよい。
【0061】
アクティビティ監視モジュール170は、プロセス120のグラフィックインターフェース115の全ての要素の機密性係数をプロセス120に対して計算する必要はないことに留意されたい。一般的なケースでは、アクティビティ監視モジュール170は、アクティビティ監視モジュール170によって使用されるヒューリスティック規則に従って、値が設定される必要があるグラフィックインターフェース115の要素の機密性係数をのみを、プロセス120に対して計算する。
【0062】
更に別の例示的な側面では、OS内のデスクトップは、プロセスexplorer.exeに対応する(例えば、所属する)グラフィックインターフェース115(プロセス120のウィンドウのような)の要素であってもよく、情報データベース160はグラフィックインターフェース115(デスクトップ)の要素の機密性の係数を格納することができる。例示的な側面では、この機密性係数の値は、機密性係数の最大値であってもよい。
【0063】
例示的な側面では、アクティビティ監視モジュール170は、計算機器上で起動された各プロセス120について、グラフィックインターフェース115の要素の機密性係数を計算することができる。更に別の例示的な側面では、アクティビティ監視モジュール170は、情報が情報データベース160に格納されているプロセス120のグラフィックインターフェース115の要素の機密性係数を計算してもよく、この情報は、例えばプロセス 識別子又はプロセス指定(winword.exeなど)である。
【0064】
例示的な側面では、交差分析モジュール140は、以下の式によって領域125の重要度を計算してもよい。
【数1】
【0065】
更に別の例示的な側面では、交差分析モジュール140は、以下の式によって領域125の重要度を計算してもよい。
【数2】
【0066】
更に別の例示的な側面では、交差分析モジュール140は、以下の式によって領域125の重要度を計算してもよい。
【数3】
【0067】
更に別の例示的な側面では、交差分析モジュール140は、以下の式によって領域125の重要度を計算してもよい。
【数4】
【0068】
更に別の例示的な側面では、交差分析モジュール140は、以下の式によって領域125の重要度を計算してもよい。
【数5】
【0069】
上記の式においては、以下の表記を使用する。
・Kは、領域125の重要度である。
・nは、計算機器のディスプレイ110に表示されているプロセス120のグラフィックインターフェース115の要素の数である。
・p
iは、グラフィックインターフェース115のi番目の要素の機密性係数である(例示的な側面では、プロセス120のグラフィックインターフェース115の要素に対して対応する係数がデータベース160に示されていない場合、グラフィックインターフェースのi番目の要素の値として1をとる)。
・k
iは、グラフィックインターフェース115のi番目の要素の領域と領域125との交差率である。
・s
iは、グラフィックインターフェースのi番目の要素と等しい重み係数であって、グラフィックインターフェース115のi番目の要素の領域が領域125と部分的に交差する場合、1であり、S1>1(例えば、100)であり、グラフィックインターフェース115のi番目の要素の領域が領域125を含む場合、S1であり、S2>S1(例えば、200)であり、グラフィックインターフェース115のi番目の要素の領域が領域125に含まれる場合、S2である。
【0070】
例示的な側面では、あるプロセス120aのグラフィックインターフェース115のi番目の要素の機密性係数p
iは、プロセス120aに関する親プロセスであるプロセス120のグラフィックインターフェース115の要素の機密性係数の最大値に等しくてもよい。更に別の例示的な側面では、プロセス120aのグラフィックインターフェース115のi番目の要素の機密性係数p
iは、プロセス120aのグラフィックインターフェース115のi番目の要素の機密性係数の最大値に等しくてもよく、Nの親プロセス120(ここで、Nは、プロセス120が2つの親プロセスを有する場合、例えば2に等しくてもよい)のグラフィックインターフェース115の要素の機密性係数に等しくてよい。
【0071】
上式は単なる例示的なものであり、例示的な側面では、係数p
i、k
i、s
iが高いほど領域125の重要度格付けがより大きくなるような他の式を用いて、交差分析モジュール140による領域125の重要度を計算することができる。
【0072】
交差分析モジュール140は、算出された領域125の重要度をセキュリティ提供モジュール150に中継する。
【0073】
セキュリティ提供モジュール150は、ユーザに表示されている情報にアクセスしているプロセス120に関する傍受モジュール130によって提供される情報に基づいて、ユーザに表示されている情報に対するアクセス危険度(例えば、上で定義したもの)を計算するように設計されている。
これは、ユーザに表示されている情報へのアクセス危険度と領域の重要度との組み合わせを計算するとともに、計算機器のユーザに表示されている情報のアクセスが傍受モジュール130によって傍受されたプロセス120から起動されたアプリケーションを、ユーザに表示されている情報へのアクセス危険度とその領域の重要度との組み合わせが確立された閾値を超えた場合に、悪意あるものとして認識するためである。
【0074】
例示的な側面では、セキュリティ提供モジュール150は、以下の式によってアクセス危険度125を計算することができる。
【数6】
【0075】
更に別の例示的な側面では、セキュリティ提供モジュール150は、以下の式によってアクセス危険度125を計算することができる。
【数7】
【0076】
更に別の例示的な側面では、セキュリティ提供モジュール150は、以下の式によってアクセス危険度125を計算することができる。
【数8】
【0077】
上記の式においては、以下の表記を使用する。
・Dは、プロセス120によって領域125に対して実行され、傍受モジュール130によって傍受されるアクセス危険度である。
・Sは次の値をとる係数である。すなわち、傍受されたアクセスを実行するプロセス120が信頼できるプロセスである場合、1となる。傍受されたアクセスを実行するプロセス120が信頼できないプロセス(又は、データベース160が、プロセス120が信頼されているという情報を持たない)である場合、S1>1(たとえば5)であって、S1となる。
・Vは以下の値をとる係数である。すなわち、傍受されたアクセスを実行するプロセス120が既知の脆弱性が存在しないアプリケーションから起動された場合(又はデータベース160に既知の脆弱性に関する情報がない場合)は1となる。既知の脆弱性が存在するアプリケーションから傍受されたアクセスを実行するプロセス120が起動された場合、V1>1であって、V1となる(ここで、V1は、10などの定数とすることができる)、既知の脆弱性の数に応じた数であり、Uを既知の脆弱性の数としたときに、V1=2*Uのように表される)。
・Aは、次の値を取る係数である。すなわち、傍受されたアクセスを実行するプロセス120が、ユーザに表示されている情報へのアクセスの実行を含む(又はデータベース160が機能に関する情報を持たない)アプリケーションから起動された場合、1となる。A1>1(例えば100)であって、傍受されたアクセスを実行しているプロセス120が、ユーザに表示されている情報へのアクセスの実行を含まない機能から起動された場合、A1となる。
【0078】
上式は単なる例であり、例示的な側面であって、係数A、S及びVが高いほどアクセス危険度がより大きくなる他の式は、プロセス120によってディスプレイ110に表示される情報へのアクセス危険度を計算するために、セキュリティ提供モジュール150によって使用され得る。例示的な側面では、アクセス危険度Dの値は1未満であってはならない。
【0079】
例示的な側面では、傍受されたアクセスを実行するプロセス120から起動されたアプリケーションが信頼できるか否かに関する情報は情報データベース160に格納され、セキュリティ提供モジュール150に提供されてもよい。
【0080】
例示的な側面では、傍受されたアクセスが実行されているプロセス120から起動されたアプリケーションにおける既知の脆弱性の有無及び、脆弱性の既知の数に関する情報は情報データベース160に格納され、セキュリティ提供モジュール150に提供されてもよい。
【0081】
例示的な側面では、傍受されたアクセスを実行するプロセス120から起動されたアプリケーションの機能がユーザに表示されている情報へアクセスすることを含むか否かに関する情報は、情報データベース160に格納され、セキュリティ提供モジュール150に提供されてもよい。アプリケーションの機能は、その呼出しが、アプリケーションから起動されたプロセスの特性である機能のセットを含むことができる。したがって、例示的な側面における情報データベース160は、プロセス120が起動されたアプリケーションに、前述のアプリケーションに特有の機能のリスト(アプリケーションの機能)を割り当ててもよい。
【0082】
上述したように、例示的な側面では、情報データベース160に格納される情報は、コンピュータセキュリティの専門家によって策定されてもよい。例示的な側面では、専門家自身が当該情報を情報データベース160に転送(例えば、書き込む)してもよい。別の例示的な側面では、情報は、リモートセキュリティサーバ又はシステム管理者からこの情報を取得する交差分析モジュール140によって情報データベース160に書き込まれてもよい。
【0083】
例示的な側面では、情報データベース160は、それぞれ1つ又は複数の種類のデータ、例えば、上述した公式において用いられる機密性係数p
iや重み付け係数siなどのデータを格納するために設計された一群のデータベースであるか、一群のデータベースを含んでもよい。
【0084】
アクセス危険度を計算した後、セキュリティ提供モジュール150は、傍受モジュール130によって傍受されたアクセスを実行するプロセス120が起動されたアプリケーションを悪意のあるものとして認識するか否かを決定することができる。この決定は、セキュリティ提供モジュール150によって、アクセス危険度及び領域125の重要度との組み合わせと、既に設定された閾値との比較に基づいて行われてもよい。すなわち、アクセス危険度及び領域125の重要度との組み合わせが設定された閾値(たとえば、1000)よりも大きい場合、ユーザに表示されている情報へのアクセスが傍受モジュールによって傍受されたプロセス120が起動されたアプリケーションは悪意あるものと認識される。そうでない場合は、当該アプリケーションはセキュリティ提供モジュール150によって悪意あるものとは認識されない。この場合の組み合わせとして、和、積又は領域125の重要度とアクセス危険度が大きくなる場合に大きくなるような他の組み合わせを用いることができる。
【0085】
更に別の例示的な側面では、セキュリティ提供モジュール150は、ユーザに表示されている情報へのアクセスを阻止するために、傍受モジュール130にコマンドを送信することができる。傍受モジュール130は、前述のアクセスを実行している可能性がある対応する関数呼出しを(例えば、アドレスが、呼出された関数の戻りアドレスである命令への制御の転送によって)中断することができる。アクセスの阻止は、傍受モジュール130により、計算機器のメモリ内で、ユーザに表示される情報のバイナリ表現であって、前述のアクセスを実行するために使用された関数の呼出しによってメモリに格納されたバイナリ表現を代替することによってなされてもよい。例示的な側面では、セキュリティ提供モジュール150は、ユーザに表示されている情報へのアクセス危険度と領域125の重要度との組み合わせが、設定された閾値(かかる組み合わせを計算するアルゴリズムは上述のとおり)より大きい場合には、情報へのアクセスを阻止するコマンドを送信してもよい。
【0086】
例示的な側面では、セキュリティ提供モジュール150は、上記のスキームに従い、あるアプリケーションを悪意あるものとして認識した後、傍受モジュール130にコマンドを更に送信し、ユーザに表示されている情報へのアクセスであって、悪質あると認識されたアプリケーションから起動されたプロセス120によって実行されているアクセスを阻止してもよい。
【0087】
例示的な側面では、セキュリティ提供モジュール150は、領域125の重要度のみに基づいてアプリケーションを悪意あるものと認識するか、又は表示される情報へのアクセスを阻止するかの決定を行うことができる。すなわち、領域125の重要度が、設定された閾値よりも大きい場合は、ユーザに表示された情報へのアクセスが実行されたプロセス120から起動されたアプリケーションは悪意あるものと認識される。そうでない場合は、かかるアプリケーションは悪意あるものと認識されない。
【0088】
図2は、ユーザの計算機器上の保護されたアプリケーションへのアクセスを阻止する例示的な方法のフローチャートを示す。ステップ201において、傍受モジュール130は、少なくとも、ユーザに表示されている情報へのアクセスを実行しているプロセス120の情報、又はユーザに情報が表示されている計算機器のディスプレイ上の領域であってアクセスが実行されている領域についての情報を決定するため、ユーザに表示されている情報へのプロセス120のアクセスを傍受する。プロセスについてこのようにして得られた情報は、傍受モジュール130によってセキュリティ提供モジュール150又は交差分析モジュール140に送信され、決定された領域125は交差分析モジュール140に送信される。ステップ202において、交差分析モジュール140は、計算機器で実行されているプロセス120のグラフィックインターフェースの要素の領域と、傍受モジュール130によって決定された領域125の交差を、上述したプロセスのグラフィックインターフェース115の要素のどの領域が、上述した領域を含むか、領域に含まれるか、又は部分的に領域と交差するかを決定するために分析することができる。ステップ203において、当該交差に関する情報は、領域125の重要度を計算するため交差分析モジュール140によって使用される。計算された領域125の重要度は、交差分析モジュール140によってセキュリティ提供モジュール150に送信されてもよい。ステップ204において、傍受モジュール130から得られたデータに基づいて、ユーザに表示されている情報へのアクセス危険度が計算されてもよい。また、かかる情報は、傍受モジュール130によって傍受されたアクセスを実行しているプロセスに関する情報である。ステップ205において、セキュリティ提供モジュール150は、領域125の重要度とアクセス危険度との組合せを計算することができる。次いで、ステップ206において、ステップ205で得られた組み合わせが閾値よりも大きい場合には、セキュリティ提供モジュール150は、プロセス120から起動されたアプリケーションであって、計算機器のユーザに表示されている情報へのアクセスがステップ201において傍受されたアプリケーションを、悪意あるものと認識する。一方、得られた組み合わせが閾値を超えていない場合、ステップ207において、セキュリティ提供モジュール150は、上述したアプリケーションを悪意あるものと認識しない。
【0089】
ステップ204は、ステップ202及び203の実行には依存しないことがあり、したがって、ステップ204は、これらのステップの実行と並行し、又はこれらのステップの前に実行され得ることに留意されたい。
【0090】
更に別の側面では、悪意あるアプリケーションの検出のためのシステムは、更に、プロセス120のグラフィックインターフェースの要素の機密性係数を例えば1つ又は複数のヒューリスティック規則に基づいて計算するアクティビティ監視モジュール170を含む。このステップは、
図2において図示されておらず、ステップ201及び202の実行に依存しなくてもよく、それゆえに、これらのステップの実行と並列して、又はこれらのステップの実行の前に実行されてもよい。
【0091】
図3は、実施形態に係り本発明のシステムと方法が実装できる汎用コンピュータ・システム(パーソナル・コンピュータやサーバ等)の例を示している。例えば、コンピュータ・システム20は、保護サーバ120又はシンクライアント110の1つ又は複数に対応し得る。図示の通り、コンピュータ・システム20は、CPU21と、システムメモリ22と、CPU21と関連付けられたメモリを含む様々なシステムコンポーネントを接続するシステムバス23とを含み得る。システムバス23は、バスメモリ又は、バスメモリコントローラ、周辺バス、及びローカルバスを次々含む従来から公知のあらゆるバス構造としても実現され得、これらはどのような他のバスアーキテクチャとも通信可能である。システムメモリは、リードオンリーメモリ(ROM)24及びランダムアクセスメモリ(RAM)25を含む。基本的な入出力システム(BIOS)26は、ROM24の使用によってオペレーティング・システムをロードする際等、コンピュータ・システム20の要素間の情報の伝達を担う基本的な手順を含む。
【0092】
コンピュータ・システム20は、データの読み書きのためのハードディスク27、取り外し可能な磁気ディスク29の読み書きのための磁気ディスクドライブ28、及びCD−ROM、DVD−ROM、その他の光学メディア等の光学ディスク31の読み書きのための光学式ドライブ30を含む。ハードディスク27、磁気ディスクドライブ28、及び光学式ドライブ30は、ハードディスクインターフェース32、磁気ディスクインターフェース33、及び光学式ドライブインターフェース34それぞれを横切るシステムバス23と接続される。ドライブ及び対応するコンピュータ情報メディアは、コンピュータ命令、データ構造体、プログラムモジュール、及びコンピュータ・システム20の他のデータのストレージのための電源依存のモジュールである。
【0093】
本発明は、ハードディスク27、取り外し可能な磁気ディスク29及び取り外し可能な光学ディスク31を用いるシステムの実装を提供するものだが、コンピュータに読み込み可能な形式でデータを保存できるフラッシュメモリカード、デジタルのディスク、ランダムアクセスのメモリ(RAM)等の他のタイプのコンピュータ情報メディア56を使用してもよいことに留意されたし。また、これはコントローラ55を介してシステムバス23に接続される。
【0094】
コンピュータ・システム20は、ファイルシステム36を有し、記録されたオペレーティング・システム35を保持する。また追加のプログラムアプリケーション37、他のプログラムモジュール38、及びプログラムデータ39を有する。ユーザは、入力機器(キーボード40、マウス42)を用いてコマンドと情報をコンピュータ・システム20に入力することができる。他の入力機器(不図示):マイクロフォン、ジョイスティック、ゲームコントローラ、スキャナ等を用いることもできる。そのような入力機器は、通常、システムバスに次々接続しているシリアルポート46を通じてコンピュータ・システム20に差し込まれるが、それらは、他の方法例えばパラレル・ポート、ゲームポート、又は一般的なシリアルバス(USB)に接続される。ディスプレイ機器のモニタ47又は他のタイプは、また、ビデオアダプタ48等のインターフェースと交差するシステムバス23に接続している。モニタ47に加えて、パーソナル・コンピュータは、スピーカー、プリンタ等の他の周辺の出力機器(不図示)を接続できる。
【0095】
コンピュータ・システム20は、1つ又は複数のリモートコンピュータ49とのネットワーク接続を用いて、ネットワーク環境で操作することができる。リモートコンピュータ(又はコンピュータ)49は、
図4に示すように、コンピュータ・システム20の性質として説明した上述の要素全ての大多数を有するパーソナル・コンピュータ又はサーバでもある。ルータ、ネットワークステーション、ピア接続の機器、又は他のネットワークノード等の他の機器もまた、かかるコンピュータ・ネットワークで存在し得るものである。
【0096】
ネットワーク接続は、ローカルエリアコンピュータ・ネットワーク(LAN)50及びワイドエリアコンピュータ・ネットワーク(WAN)を形成することができる。そのようなネットワークは、企業のコンピュータ・ネットワーク及び社内ネットワークで利用され、それらはたいていインターネットにアクセスすることができる。LAN又はWANネットワークにおいて、パソコン20は、ネットワークアダプタ又はネットワークインターフェース51に交差するローカルエリアネットワーク50に接続されている。ネットワークが用いられる時には、パソコン20は、通信にインターネット等のワイドエリアコンピュータ・ネットワークを実現するために、モデム54又は他のモジュールを使用することができる。内部又は外部の機器であるモデム54は、シリアルポート46によりシステムバス23と接続される。かかるネットワーク接続は、単なる一例であり、ネットワークの正確な構成を示すものではない。すなわち、技術の通信モジュールによって、あるコンピュータから他のコンピュータへの接続を確立する他の方法もあることに留意されたい。
【0097】
様々な実施形態において、ハードウェア、ソフトウェア、ファームウェア、又はこれらのあらゆる組み合わせにおいて、ここで説明されたシステム及び方法を実施し得る。ソフトウェアにおいて実装される場合は、方法は不揮発性コンピュータ可読メディアの1つ又は複数の指示又はコードとして保存され得る。コンピュータ可読メディアは、データストレージを含む。あくまでも例であり限定するものではないが、そのようなコンピュータ可読メディアは、RAM、ROM、EEPROM、CD−ROM、フラッシュメモリ、若しくは他のタイプの電気、磁気、光学式の記憶媒体、又はその他のメディアであってもよい。すなわち、これらによって指示又はデータ構造体という形で、要求されたプログラムコードを運ぶか又は保存することができ、汎用コンピュータのプロセッサによってアクセスすることができる。
【0098】
様々な実施形態で、本発明のシステム及び方法が、モジュールとして実装され得る。ここで用語「モジュール」は、実世界の機器、コンポーネント、又はハードウェアを用いて実装されたコンポーネント配置であり、例えばASIC(Application Specific Integrated Circuit)、FPGA(Field−Programmable Gate Array)等の、又は例えばモジュールの機能を実行するマイクロプロセッサシステムや指示セットによる等、ハードウェアとソフトウェアの組み合わせとして実装され得る。これらは、実行中にマイクロプロセッサシステムを特定の機器に変換する。モジュールは、ハードウェア単体により促進される一定の機能とハードウェア及びソフトウェアの組み合わせによって促進される他の機能という2つの組み合わせとして実施されてもよい。モジュールの少なくとも一部又は全部は、汎用コンピュータのプロセッサにおいて実行できる(
図3において詳述したもの等)。したがって、各モジュールは様々な適当な構成で実現することができて、ここに例示した特定の実装に限られるものではない。
【0099】
なお、実施形態の通常の機能のうちの全てをここで開示しているわけではない。本発明の何れの実施形態を開発する場合においてでも、開発者の具体的な目標を達成するためには多くの実施に係る特別な決定が必要であり、これらの具体的な目標は実施形態及び開発者ごとに異なることに留意されたし。そのような開発努力は、複雑で時間を要するものであるが、本発明の利益を享受し得る当業者にとってはエンジニアリングの日常であると理解されたい。
【0100】
更に、本明細書で使用される用語又は表現は、あくまでも説明のためであり、限定するものではない。つまり、関連技術の熟練の知識と組み合わせて、本明細書の用語又は表現は、ここに示される教示及び指針に照らして当業者によって解釈されるべきであると留意されたし。明示的な記載がない限り、明細書又は特許請求の範囲内における任意の用語に対して、珍しい又は特別な意味を帰することは意図されていない。
【0101】
本明細書で開示された様々な側面は、例示のために本明細書に言及した既知のモジュールの、現在及び将来の既知の均等物を包含する。更に、側面及び用途を示し、説明してきたが、本明細書に開示された発明の概念から逸脱することなく、上述したよりも多くの改変が可能であることが、この開示の利益を有する当業者には明らかであろう。