以下、図面を参照して開示の技術に係る実施形態の一例を詳細に説明する。
<第1実施形態>
図1に示すように、第1実施形態に係る検知装置10は、情報資産システム30と接続される。なお、検知装置10は、情報資産システム30と同一のコンピュータに設けられてもよいし、情報資産システム30とは異なるコンピュータで構成されてもよい。
情報資産システム30は、情報資産31と、情報資産31に対するアクセスを含む処理を実行するアプリケーション32を含む。例えば、情報資産システム30は、個人情報や企業の機密情報等の情報資産31を保有するサーバ、通信ノード、通信機器、IoT(Internet of Things)機器等を含み、情報資産31を保管及び運用するシステムである。
情報資産31は、ファイルシステムで管理されるファイル、データベースなど、メモリやレジスタに記憶され、アプリケーション32の実行によりアクセスされる可能性がある全てのデータを含む。また、アプリケーション32がいずれかのデータにアクセスする際に動く様々なソフトウェアが参照するシステム情報も、情報資産31に含まれる。
アプリケーション32は、複数のプログラムにより実行される複数のプロセスにより実現される。情報資産システム30の所定の記憶領域には、アプリケーション32を実現するための複数のプログラムの各々についてのプログラム情報(プログラムコード)が記憶されている。
検知装置10は、情報資産31へのアクセスに対するサイバー攻撃を検知する。検知装置10は、機能的には、図1に示すように、学習部11と、検出部12と、特定部13と、判定部14と、通知部15とを含む。
学習部11は、情報資産システム30から、アプリケーション32を実現するための複数のプログラムの各々について、例えば、システムの初期状態時など、改ざんやマルウェア感染などの異常がない正常状態のプログラム情報の各々を取得する。学習部11は、取得したプログラム情報から、情報資産31へのアクセス実行を許容するプログラムを抽出する。学習部11は、例えば、図2に示すように、抽出したプログラムの識別情報(プログラム名、パス等)を学習対象プログラムのプログラム名として記述することにより、学習対象プログラムリスト21を作成する。なお、図2の例では、学習対象プログラムリスト21の先頭の行には、リストの名前が記述され、2行目からの各行に、それぞれ抽出されたプログラムのプログラム名が記述されている。
学習部11は、学習対象プログラムリスト21に記述されたプログラム名が示すプログラムの各々のプログラム情報から算出される一意な値を、各プログラムの初期固有情報として生成する。本実施形態では、学習部11は、一意な値の一例として、プログラムのロードモジュールを入力情報としてSHA512等のセキュリティ強度が保証されるハッシュ関数を用いて計算するハッシュ値を算出する場合について説明する。学習部11は、各プログラムについて生成した初期固有情報を、各プログラムのプログラム名と対応付けて、例えば、図3に示すような初期固有情報テーブル22に記憶する。
また、学習部11は、情報資産システム30の運用中に、プログラムのバージョンアップやパッチなどにより、プログラムが正当な理由で更新された場合には、更新されたプログラムについて、初期固有情報を再生成し、初期固有情報テーブル22を更新する。
検出部12は、情報資産システム30で実行されるアプリケーション32において発生するイベントのうち、情報資産31へのアクセス要求を示すイベントを検出する。検出部12は、情報資産31へのアクセス要求を検出すると、アクセス要求を一時停止し、アプリケーション32からの要求を保留する。また、検出部12は、図4に示すように、情報資産31へのアクセス要求を示すイベントから、情報資産31へのアクセス要求を行ったプロセスに関する情報(以下、「プロセス情報」という)23を取得する。プロセス情報23には、該当のプロセスの識別情報(プロセスID)が含まれる。このプロセスIDをトリガとして、プロセスリンク情報を遡ることにより、該当のプロセスを生成したプロセスのプロセスID、プロセスに対応するプログラムのプログラム名、アクセス要求に関する情報等を抽出することが可能となる。検出部12は、取得したプロセス情報23を特定部13へ受け渡す。
特定部13は、検出部12から受け渡されたプロセス情報23、すなわち、情報資産31へアクセス要求を行ったプロセスのプロセス情報23に基づいて、そのプロセスを生成した前のプロセスを順次遡って特定する。より具体的には、図5に示すように、特定部13は、情報資産31へ直接アクセス要求を行ったプロセス1を特定し、プロセス情報に含まれるプロセスリンク情報を遡ることよりプロセス1を生成した前プロセス2を特定する。さらに、特定部13は、プロセスリンク情報を遡ることにより、プロセス2を生成した前プロセス3を特定し、同様の処理でプロセス生成順序を逆に遡ってプロセストレースを繰り返す。これにより、特定部13は、プロセス1からコマンド機能やアプリケーション機能の起動元プロセスに至るまでのアクセス要求に関わる全てのプロセスを特定し、プロセス情報23Aを所得する。
特定部13は、特定した全てのプロセスについて、プロセス情報23Aを参照して、各プロセスに対応するプログラムを特定する。特定部13は、図6に概念的に示すように、情報資産31へアクセス要求を行ったプロセスから順次特定した全てのプロセスのプロセスIDの各々と、特定したプログラムのプログラム名とを対応付けた特定プログラムテーブル24を作成する。特定部13は、作成した特定プログラムテーブル24を判定部14へ受け渡す。
判定部14は、特定部13から受け渡された特定プログラムテーブル24に含まれる各プログラムについて、現在メモリに展開されているプログラム情報を取得する。そして、判定部14は、上述した学習部11と同様の手法により、取得した現在のプログラム情報から算出される一意な値(ここでは、ハッシュ値)を、現在の固有情報として生成する。また、判定部14は、該当のプログラムのプログラム名に対応付けて初期固有情報テーブル22に記憶されている初期固有情報を取得する。そして、判定部14は、図7に示すように、取得した初期固有情報と、生成した現在の固有情報とを比較し、一致する場合には、該当のプログラムは正常であると判定し、不一致の場合には、該当のプログラムは異常であると判定する。判定部14は、判定結果を通知部15へ受け渡す。
通知部15は、判定部14から受け渡された判定結果が、プログラムが異常であることを示す判定結果の場合、サイバー攻撃を検知したと判断し、一時停止しているアクセス要求を却下し、保留していたアプリケーション32からの要求を廃棄する。また、通知部15は、判定部14から受け渡された判定結果が、プログラムが正常であることを示す判定結果の場合、アクセス要求の一時停止を解除し、保留していたアプリケーション32からのアクセス要求を実行する。
また、通知部15は、サイバー攻撃を検知したと判断した場合、サイバー攻撃を検知したことを示す情報を通知する。例えば、通知部15は、検知装置10と接続されたシステム管理者用の端末(図示省略)のディスプレイに、図8に示すようなアラームメッセージ25を表示する。なお、通知の方法は上記の例に限定されず、指定された端末や通知先のアドレスへアラームメッセージをメールで送信してもよいし、音声メッセージやアラート音を出力するようにしてもよい。また、MIB(Management Information Base)を拡張して追加してもよい。
検知装置10は、例えば図9に示すコンピュータ40で実現することができる。コンピュータ40は、CPU(Central Processing Unit)41と、一時記憶領域としてのメモリ42と、不揮発性の記憶部43とを備える。また、コンピュータ40は、入力装置、表示装置等の入出力装置44と、記憶媒体49に対するデータの読み込み及び書き込みを制御するR/W(Read/Write)部45と、インターネット等のネットワークに接続される通信I/F(Interface)46とを備える。CPU41、メモリ42、記憶部43、入出力装置44、R/W部45、及び通信I/F46は、バス47を介して互いに接続される。
記憶部43は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、フラッシュメモリ等によって実現できる。記憶媒体としての記憶部43には、コンピュータ40を、検知装置10として機能させるための検知プログラム50が記憶される。検知プログラム50は、学習プロセス51と、検出プロセス52と、特定プロセス53と、判定プロセス54と、通知プロセス55とを有する。また、記憶部43は、初期固有情報テーブル22を構成する情報が記憶される情報記憶領域60を有する。
CPU41は、検知プログラム50を記憶部43から読み出してメモリ42に展開し、検知プログラム50が有するプロセスを順次実行する。CPU41は、学習プロセス51を実行することで、図1に示す学習部11として動作する。また、CPU41は、検出プロセス52を実行することで、図1に示す検出部12として動作する。また、CPU41は、特定プロセス53を実行することで、図1に示す特定部13として動作する。また、CPU41は、判定プロセス54を実行することで、図1に示す判定部14として動作する。また、CPU41は、通知プロセス55を実行することで、図1に示す通知部15として動作する。また、CPU41は、情報記憶領域60から情報を読み出して、初期固有情報テーブル22をメモリ42に展開する。これにより、検知プログラム50を実行したコンピュータ40が、検知装置10として機能することになる。なお、プログラムを実行するCPU41はハードウェアである。
なお、検知プログラム50により実現される機能は、例えば半導体集積回路、より詳しくはASIC(Application Specific Integrated Circuit)やFPGA(Field-Programmable Gate Array)等で実現することも可能である。
次に、第1実施形態に係る検知装置10の作用について説明する。例えば、情報資産システム30の初回起動時など、アプリケーション32を実現するプログラムが正常な状態で、検知装置10において、図10に示す学習処理が実行される。また、情報資産システム30において、プログラムのバージョンアップやパッチなどにより、プログラムが正当な理由で更新されたことを示すイベントを検知装置10が検知すると、検知装置10において、図11に示す更新処理が実行される。さらに、アプリケーション32の実行中には、検知装置10において、図12に示す検知処理が実行される。
まず、図10に示す学習処理について説明する。
ステップS11で、学習部11が、情報資産システム30から、アプリケーション32を実現するための複数のプログラムの各々について、正常状態のプログラム情報の各々を取得する。そして、学習部11は、取得したプログラム情報から、情報資産31へのアクセス実行を許容するプログラムを抽出し、例えば、図2に示すような、学習対象プログラムリスト21を作成する。
次に、ステップS12で、学習部11が、学習対象プログラムリスト21の先頭の行を参照する。なお、ここでは、学習対象プログラムリスト21の先頭は、リストの名前が記述された行である。
次に、ステップS13で、学習部11が、学習対象プログラムリスト21の次の行を参照する。
次に、ステップS14で、学習部11が、参照した行にプログラム名の記述があるか否かを判定することにより、処理対象となる次の学習対象プログラムが存在するか否かを判定する。次の学習対象プログラムが存在する場合には、処理はステップS15へ移行し、学習部11が、存在すると判定した次の学習対象プログラムを選択する。
次に、ステップS16で、学習部11が、選択した学習対象プログラムのプログラム情報から初期固有情報としてハッシュ値を算出し、選択した学習対象プログラムのプログラム名と対応付けて、例えば、図3に示すような初期固有情報テーブル22に記憶する。そして、処理はステップS13に戻る。
ステップS14で、学習部11が、処理対象となる次の学習対象プログラムが存在しないと判定すると、学習処理は終了する。
次に、図11に示す更新処理について説明する。
ステップS21で、学習部11が、検出したプログラムの更新についてのイベントに基づいて、更新されたプログラムを特定する。そして、学習部11は、特定したプログラムのプログラム名が学習対象プログラムリスト21に存在するか否かを判定することにより、更新されたプログラムが学習対象プログラムか否かを判定する。更新されたプログラムが学習対象プログラムの場合には、処理はステップS22へ移行し、学習対象プログラムではない場合には、更新処理は終了する。
ステップS22では、学習部11が、更新されたプログラムのプログラム情報からハッシュ値を算出することにより、初期固有情報を再生成する。学習部11は、初期固有情報テーブル22において、更新されたプログラムのプログラム名と対応付けて記憶されている初期固有情報を、再生成した初期固有情報で更新し、更新処理は終了する。
次に、図12に示す検知処理について説明する。検知処理は、情報資産システム30で実行されるアプリケーション32においてイベントが発生する毎に実行される。
ステップS31で、検出部12が、情報資産システム30で実行されるアプリケーション32において発生するイベントを検出し、検出したイベントが情報資産31へのアクセス要求を示すイベントか否かを判定する。情報資産31へのアクセス要求を示すイベントの場合、処理はステップS32へ移行し、情報資産31へのアクセス要求を示すイベントではない場合、検知処理は終了する。
ステップS32では、検出部12が、アクセス要求を一時停止し、アプリケーション32からの要求を保留する。
次に、ステップS40で、特定処理が実行される。ここで、図13を参照して、特定処理について詳述する。
ステップS41で、検出部12が、情報資産31へのアクセス要求を示すイベントに基づいて、情報資産31へのアクセス要求を行ったプロセスのプロセス情報を取得し、特定部13へ受け渡す。特定部13は、情報資産31へのアクセス要求を行ったプロセスを特定プロセスに設定する。
次に、ステップS42で、特定部13が、特定プロセスのプロセスIDを特定プログラムテーブル24に記憶する。
次に、ステップS43で、特定部13が、特定プロセスのプロセス情報23Aに基づいて、特定プロセスに対応するプログラムを特定する。そして、特定部13は、上記ステップS42で特定プログラムテーブル24に記憶したプロセスIDに対応付けて、特定したプログラムのプログラム名を記憶する。
次に、ステップS44で、特定部13が、特定プロセスのプロセス情報23Aに基づいて、特定プロセスを生成した前のプロセス(生成元プロセス)が存在するか否かを判定する。生成元プロセスが存在する場合には、処理はステップS45へ移行する。
ステップS45では、特定部13が、生成元プロセスを新たな特定プロセスに設定し、処理はステップS42に戻る。
ステップS44で、特定部13が、生成元プロセスが存在しないと判定した場合には、特定処理は終了し、検知処理(図12)に戻る。
次に、検知処理のステップS51で、検知部12が、上記ステップS40で生成された特定プログラムテーブル24の先頭の行を参照する。なお、ここでは、特定プログラムテーブル24の先頭は、テーブルの名前が記述された行であるとする。
次に、ステップS52で、検知部12が、特定プログラムテーブル24の次の行を参照する。
次に、ステップS53で、検知部12が、参照した行にプログラム名の記述があるか否かを判定することにより、処理対象となる次の特定プログラムが存在するか否かを判定する。次の特定プログラムが存在する場合には、処理はステップS60へ移行し、特定プログラムが存在しない場合には、処理はステップS74へ移行する。
ステップS60では、判定処理が実行される。ここで、図14を参照して、判定処理について詳述する。
ステップS61で、判定部14が、上記ステップS53で存在すると判定した次の特定プログラムを選択する。
次に、ステップS62で、判定部14が、初期固有情報テーブル22を参照して、選択した特定プログラムの初期固有情報が記憶されているか否かを判定する。特定プログラムの初期固有情報が記憶されている場合には、処理はステップS63へ移行し、記憶されていない場合には、処理はステップS66へ移行する。
ステップS63では、判定部14が、特定プログラムについて、現在メモリに展開されているプログラム情報を取得し、取得したプログラム情報から、現在の固有情報としてハッシュ値を算出する。
次に、ステップS64で、判定部14が、選択した特定プログラムのプログラム名に対応付けて初期固有情報テーブル22に記憶されている初期固有情報を取得する。判定部14は、取得した初期固有情報と、生成した現在の固有情報とが一致するか否かを判定する。初期固有情報と現在の固有情報とが一致する場合には、処理はステップS65へ移行し、判定部14が、該当のプログラムは正常であると判定する。一方、初期固有情報と現在の固有情報とが不一致の場合には、処理はステップS66へ移行し、判定部14が、該当のプログラムは異常であると判定する。そして、判定処理は終了し、検知処理(図12)に戻る。
なお、上記ステップS62で否定判定されて、上記ステップS66へ移行した場合は、本来存在しないプログラムがプロセスとして動作していること、すなわち、そのプロセスは異常かつマルウェアであると考えられる。また、上記ステップS64で否定判定されて、上記ステップS66へ移行した場合は、正常なプログラムの一部が改ざんされた場合などが考えられる。本実施形態における判定処理により、プログラムの改ざん及びマルウェア感染の双方を検知することができる。
次に、検知処理のステップS71で、通知部15が、上記ステップ60で判定部14により判定された判定結果が「異常」か否かを判定する。判定結果が「異常」の場合には、処理はステップS72へ移行し、判定結果が「正常」の場合には、処理はステップS52に戻る。
ステップS72では、通知部15が、サイバー攻撃を検知したことを示す情報を、例えば、検知装置10と接続されたシステム管理者用の端末(図示省略)等に通知する。
次に、ステップS73で、通知部15が、一時停止しているアクセス要求を却下することをアプリケーション32へ通知し、検知処理は終了する。
一方、上記ステップS53で否定判定される場合、すなわち、特定プログラムテーブル24に含まれる全てのプログラムについて正常と判定される場合、処理はステップS74へ移行する。ステップS74では、通知部15が、アクセス要求の一時停止を解除し、保留していたアプリケーション32からのアクセス要求を実行し、検知処理は終了する。
以上説明したように、第1実施形態に係る検知装置10は、正常状態のプログラムの各々について、プログラム情報から一意に算出される値を予め初期固有情報として生成して記憶しておく。そして、検知装置10は、情報資産へアクセスするプロセスが検出された場合、検出されたプロセス及びそのプロセスの生成元を遡った全てのプロセスに対応するプログラムを特定する。また、検知装置10は、特定したプログラムの現在の状態のプログラム情報から現在の固有情報を生成する。そして、検知装置10は、初期固有情報と現在の固有情報とを比較することにより、プログラムの異常を検知する。これにより、プログラムの異常をリアルタイムで検知することができる。
また、サイバー攻撃を検知するためのウイルス検知ソフトウェアのように、攻撃パターン情報を必要としないため、ゼロディ攻撃に代表される未知の脆弱性に対しても、プログラムの異常を検知することができる。また、多数の機器を含むシステムなどに対しては、機器毎にウイルス検知ソフトウェアを導入する必要がなく、コストを削減することができる。また、IoT機器などのように、メモリ容量などのリソースが制限されるシステムにおいても、適用が容易である。
また、プログラムの異常が検知された場合に、情報資産へのアクセス要求を却下することで、容易には情報資産を「出さない」仕組み、すなわち、情報資産の改ざん、削除や漏洩を防止する仕組みを実現することができる。
また、サイバー攻撃されている事実をリアルタイムで検知することで、ユーザへの通知や注意喚起、また、攻撃の解析や攻撃者の特定への応用が可能となる。例えば、通知部15がサイバー攻撃を検知したと判断した場合、さらに、該当のプロセスの実行ユーザや端末(又は通信ポート)を特定することによる攻撃監視や、動作停止による攻撃拡大の防止等を実施する機能を設けてもよい。これにより、攻撃被害や影響の拡大を防止し、攻撃者や攻撃ルートの特定が容易となる。
また、本実施形態では、情報資産へアクセス要求を行うプロセスから生成元のプロセスを遡って、アクセス要求を行うプロセスに関連する全てのプロセスに対応するプログラムを異常検知の対象とする。これにより、直接アクセス要求を行うプロセスに対応するプログラム以外の関連するプログラムが改ざんされている場合や、マルウェア感染している場合も検知することができる。
<第2実施形態>
次に、第2実施形態について説明する。なお、第2実施形態において、第1実施形態と同様の部分については、同一符号を付して詳細な説明を省略する。
図15に示すように、第2実施形態に係る検知装置210は、情報資産システム30と接続される。検知装置210は、機能的には、学習部211と、検出部12と、特定部13と、判定部214と、通知部15と、設定部16とを含む。
学習部211は、アプリケーション32を実現する複数のプログラムの正常状態における実行時の動作情報を入力情報として、その特徴を学習する。すなわち、学習部211は、プログラムの改ざんやマルウェアによる異常プロセスなどの攻撃により、不正なアクセス要求が発生していない正常なプロセスの動作を学習することにより、初期固有情報を生成する。
具体的には、学習部211は、第1実施形態における学習部11と同様に、学習対象プログラムリスト21を作成する。また、学習部211は、アプリケーション32を複数回実行し、各実行時に学習対象プログラムの動作情報を取得する。動作情報は、例えば、学習対象プログラムにより起動されるアクセス要求するプロセスの前後のプロセス、アクセス要求するプロセス内で起動するシステムコールの種類、起動順序、起動回数、起動タイミング等の少なくとも一つとすることができる。学習部211は、複数回の実行で取得された各動作情報の集約や統計的処理や機械学習を行って、各学習対象プログラムについて、初期固有情報を生成する。学習時のアプリケーション32の実行回数は、後述する判定部214での判定に利用する際に十分な判定精度を出せる一定数以上とする。学習部211は、各学習対象プログラムについて生成した初期固有情報を、各学習対象プログラムのプログラム名と対応付けて、例えば、図16に示すような初期固有情報テーブル222に記憶する。
図16の例では、動作情報として、学習対象プログラムにより起動されるアクセス要求するプロセスの前後のプロセス、プロセス内で起動するシステムコールの種類、システムコール毎の起動数及び起動タイミング等が取得された例を示している。そして、学習部211は、前後のプロセスについては、前プロセスに対応するプログラムを特定し初期固有情報「前プログラム」を生成し、後プロセスに対応するプログラムを特定し初期固有情報「後プログラム」を生成する。また、学習部211は、プロセス内で起動するシステムコールの種類を、初期固有情報「起動システムコール」として生成する。アプリケーション32の複数の実行で、複数種類の前プロセス、後プロセス、及びシステムコールの種類が取得されている場合は、学習部211は、これらを集約して、初期固有情報を生成する。また、学習部211は、アプリケーション32の複数の実行で取得されたシステムコール毎の起動数の総数を、初期固有情報「X起動数(Xはシステムコールの種類)」として生成する。また、学習部211は、アプリケーション32の複数の実行で取得されたシステムコール毎の起動タイミングの平均などの統計処理を行った値を、初期固有情報「X起動タイミング(Xはシステムコールの種類)」として生成する。
なお、アプリケーション32を実現する複数のプログラムの正常状態における実行は、アプリケーション32の初回起動時に行うことができる。また、情報資産システム30の運用時に、後述する判定部214での判定結果が正常であるプログラムの実行時に取得された動作情報を追加学習することにより、初期固有情報を再生成してもよい。また、判定結果が異常であるプログラムの実行時に取得された動作情報を削除して再学習することにより、初期固有情報を再生成してもよい。
判定部214は、後述する設定部16で保護対象として設定された情報資産31へのアクセスを要求したプロセスの実行時に、上述した学習部211で取得される動作情報と同様の動作情報を取得し、現在の固有情報を生成する。また、判定部214は、第1実施形態における判定部14と同様に、図17に示すように、初期固有情報と現在の固有情報との一致又は不一致により、各プログラムの正常又は異常を判定する。
設定部16は、情報資産31毎に、保護対象とするか否かの指定を受け付け、例えば、図18に示すように、情報資産31の制御情報の一部に、保護対象フラグとして設定する。具体的には、設定部16は、各情報資産31についての保護対象フラグの初期状態を、保護非対象を示す値(例えば、「0」)に設定しておく。そして、設定部16は、保護対象として指定を受け付けた情報資産31についての保護対象フラグを、保護対象を示す値(例えば、「1」)に設定する。また、設定部16は、保護非対象とする指定を受け付けた場合、対象の情報資産31についての保護対象フラグを、保護非対象を示す値に戻す。設定部16により保護対象に設定された情報資産31へアクセス要求するプロセスに対応するプログラムのみが、上記の判定部214での判定の対象となる。
検知装置210は、例えば図9に示すコンピュータ40で実現することができる。コンピュータ40の記憶部43には、コンピュータ40を、検知装置210として機能させるための検知プログラム250が記憶される。検知プログラム250は、学習プロセス251と、検出プロセス52と、特定プロセス53と、判定プロセス254と、通知プロセス55と、設定プロセス56とを有する。また、記憶部43は、初期固有情報テーブル222を構成する情報が記憶される情報記憶領域60を有する。
CPU41は、検知プログラム250を記憶部43から読み出してメモリ42に展開し、検知プログラム250が有するプロセスを順次実行する。CPU41は、学習プロセス251を実行することで、図15に示す学習部211として動作する。また、CPU41は、判定プロセス254を実行することで、図15に示す判定部214として動作する。また、CPU41は、設定プロセス56を実行することで、図15に示す設定部16として動作する。また、CPU41は、情報記憶領域60から情報を読み出して、初期固有情報テーブル222をメモリ42に展開する。他のプロセスについては、第1実施形態における検知プログラム50と同様である。これにより、検知プログラム250を実行したコンピュータ40が、検知装置210として機能することになる。なお、プログラムを実行するCPU41はハードウェアである。
なお、検知プログラム250により実現される機能は、例えば半導体集積回路、より詳しくはASICやFPGA等で実現することも可能である。
次に、第2実施形態に係る検知装置210の作用について、第1実施形態に係る検知装置10の作用と異なる点について説明する。例えば、情報資産システム30の初回起動時など、アプリケーション32を実現するプログラムが正常な状態で、検知装置210において、図19に示す学習処理が実行される。また、任意のタイミングで、検知装置210に、情報資産31の保護対象又は保護非対象の指定が入力されると、検知装置210において、図20に示す設定処理が実行される。さらに、アプリケーション32の実行中には、検知装置210において、図12に示す検知処理が実行される。
まず、図19に示す学習処理について説明する。
ステップS81で、学習部211が、アプリケーション32にテストデータを入力して、実行開始を指示する。
次に、ステップS82で、学習部211が、実行中のプロセスのプロセス情報を取得し、実行中のプロセスに対応するプログラムを特定し、学習対象プログラムリスト21を参照して、特定したプログラムが学習対象プログラムか否かを判定する。学習対象プログラムの場合には、処理はステップS83へ移行し、学習対象プログラムではない場合には、処理はステップS84へ移行する。
ステップS83で、学習部211が、実行中の学習対象プログラムの、前後プロセスやシステムコールの情報等の動作情報を取得する。
次に、ステップS84で,学習部211が、アプリケーション32の実行が終了したか否かを判定する。終了していない場合には、処理はステップS82に戻り、次に実行中のプロセスについて、ステップS82及びS83の処理を繰り返す。アプリケーション32が終了した場合には、処理はステップS85へ移行する。
ステップS85では、学習部211が、アプリケーション32の実行が、予め定めた所定回数終了したか否かを判定する。所定回数終了していない場合には、処理はステップS81に戻り、学習部211が、アプリケーション32に新たなテストデータを入力して、実行開始を指示し、ステップS82〜S84の処理を繰り返す。アプリケーション32の実行が所定回数終了した場合には、処理はステップS86へ移行する。
ステップS86では、学習部211が、上記ステップS83で取得した各動作情報の集約や統計的処理や機械学習を行って、各学習対象プログラムについて、初期固有情報を生成する。学習部211は、各学習対象プログラムについて生成した初期固有情報を、各学習対象プログラムのプログラム名と対応付けて、例えば、図16に示すような初期固有情報テーブル222に記憶する。そして、学習処理は終了する。
次に、図20に示す設定処理について説明する。
ステップS91で、設定部16が、入力された情報資産31の保護対象又は保護非対象の指定を受け付ける。
次に、ステップS92で、設定部16が、指定を受け付けた情報資産31の制御情報の一部に設けられた保護対象フラグを、受け付けた指定に従って設定し、設定処理は終了する。
第2実施形態における検知処理では、第1実施形態における検知処理(図12)のステップS31で、情報資産31へのアクセス要求を検出する処理で、保護対象フラグが保護対象を示す値に設定されている情報資産31へのアクセス要求のみを対象とする。
また、第2実施形態における検知処理のステップS60では、第1実施形態と同様に、判定処理(図14)が実行される。この際、判定処理のステップS63で、判定部214が、特定プログラムの現在の固有情報としてハッシュ値を算出する変わりに、特定プログラム実行時の動作情報から現在の固有情報を生成する。
以上説明したように、第2実施形態に係る検知装置210は、保護対象に設定された情報資産に対するアクセス要求を行うプロセスに対応するプログラムについてのみ、異常か否かの判定を行う。これにより、情報資産の量が多い場合でも、例えば機密度の高い情報資産のみを選択的に保護し、処理負荷を低減することができる。
なお、第2実施形態における学習部211は、第1実施形態における学習部11で実現してもよい。同様に、第1実施形態における学習部11は、第2実施形態における学習部211で実現してもよい。
<第3実施形態>
次に、第3実施形態について説明する。なお、第3実施形態において、第1実施形態と同様の部分については、同一符号を付して詳細な説明を省略する。
図21に示すように、第3実施形態に係る検知装置310は、情報資産システム30と接続される。検知装置310は、機能的には、認証部17と、認可部18と、確証部19とを含む。
認証部17は、アプリケーション32を利用するユーザの本人性を認証する。例えば、認証部17は、アプリケーション32へのログイン時等にユーザに入力されたユーザの識別情報及びパスワードと、予め登録されているユーザの識別情報及びパスワードとを照合することにより認証を行う。
認可部18は、認証部17により本人性が認証されたユーザの属性に応じて、アクセス可能な情報資産31を認可する。例えば、認可部18は、情報資産システム30が企業内の業務システムの場合、予め登録された部署毎にアクセス可能な情報資産31の範囲と、ユーザの所属部署とに基づいて、そのユーザからの情報資産31へのアクセス要求を許可又は拒否する。
確証部19は、認証部17及び認可部18で用いたユーザの識別情報、パスワード、属性情報等は使用せず、「認証」及び「認可」により“アクセス可能”と判断されたアクセス要求の正当性を、アクセス要求するプロセス自体の正常性により判断する。すなわち、確証部19の処理は、情報資産31へのアクセス要求が、正規ユーザによる正常なアクセス要求であるか否かを、「認証」及び「認可」とは別の方法で検証することである。本実施形態では、この確証部19の処理を、認証及び認可後のアクセス制御の位置付けとして、「確証」と称する。
アクセス制御において、認証及び認可とは別に確証を行う理由は、サイバー攻撃が、プログラムの改ざんやマルウェアによって実行されることを前提に、サイバー攻撃を検知する仕組みを提供するためである。不正に改ざんされたプログラムやマルウェアからのアクセス要求に対して、「認証」及び「認可」では、サイバー攻撃への防御が万全とはいえない。具体的には、プロセスへの感染や、ユーザの識別情報及びパスワードを詐取又は権限奪取することにより、「認証」及び「認可」による検証を回避することが可能である。さらに、システムの複雑化やサイバー攻撃の高度化により、プログラム改ざん等による“なりすまし”やマルウェア感染のリスクに対しても、「認証」及び「認可」は有効であるとは言い難い。「認証」及び「認可」だけでは防御しきれない攻撃があることも想定し、情報資産へのアクセス要求を複数手段により複合的に強化することが望ましい。そこで、本実施形態では、認証及び認可で正常であると判断されたとしても、「確証」により、アクセス要求に対して容易には情報資産31を「出さない」仕組みを実現し、情報資産31をサイバー攻撃による改ざん、削除や漏洩から防御する。
確証部19は、具体的には、第1実施形態に係る検知装置10又は第2実施形態に係る検知装置210により実現することができる。
検知装置310は、例えば図22に示すコンピュータ40で実現することができる。コンピュータ40の記憶部43には、コンピュータ40を、検知装置310として機能させるための検知プログラム350が記憶される。検知プログラム350は、認証プロセス57と、認可プロセス58と、確証プロセス59とを有する。また、記憶部43は、初期固有情報テーブル22(又は222)を構成する情報が記憶される情報記憶領域60を有する。
CPU41は、検知プログラム350を記憶部43から読み出してメモリ42に展開し、検知プログラム350が有するプロセスを順次実行する。CPU41は、認証プロセス57を実行することで、図21に示す認証部17として動作する。また、CPU41は、認可プロセス58を実行することで、図21に示す認可部18として動作する。また、CPU41は、確証プロセス59を実行することで、図21に示す確証部19として動作する。また、CPU41は、情報記憶領域60から情報を読み出して、初期固有情報テーブル22(又は222)をメモリ42に展開する。これにより、検知プログラム350を実行したコンピュータ40が、検知装置310として機能することになる。なお、プログラムを実行するCPU41はハードウェアである。
なお、検知プログラム350により実現される機能は、例えば半導体集積回路、より詳しくはASICやFPGA等で実現することも可能である。
次に、第3実施形態に係る検知装置310の作用について、第1実施形態に係る検知装置10又は第2実施形態に係る検知装置210の作用と異なる点について説明する。第1実施形態と同様の学習処理(図10)、又は第2実施形態と同様の学習処理(図19)が実行されて、初期固有情報テーブル22(又は222)が作成され、所定の記憶領域に記憶される。この状態で、ユーザからアプリケーション32へのログインが行われた場合、図23に示す検知処理が実行される。
ステップS101で、認証部17が、ユーザにより入力されたログイン情報(ユーザの識別情報、パスワード等)を受け付け、受け付けたログイン情報を用いて、アプリケーション32を利用するユーザの本人性を認証する。
次に、ステップS102で、認証部17が、認証に成功したか否かを判定する。認証に成功した場合には、処理はステップS103へ移行し、認証に失敗した場合には、アプリケーション32を終了し、検知処理は終了する。
ステップS103では、認可部18が、情報資産システム30で実行されるアプリケーション32において発生するイベントを検出し、検出したイベントが情報資産31へのアクセス要求を示すイベントか否かを判定する。情報資産31へのアクセス要求を示すイベントの場合、処理はステップS104へ移行し、情報資産31へのアクセス要求を示すイベントではない場合、処理はステップS107へ移行する。
ステップS104では、認可部18が、ユーザの属性に応じて、アクセス要求された情報資産31に対するユーザのアクセス権限を判断する。
次に、ステップS105で、認可部18が、アクセス要求された情報資産31に対するユーザのアクセス権限があるか否かを判定する。アクセス権限がある場合には、処理はステップS106へ移行し、アクセス権限がない場合には、処理はステップS107へ移行する。
ステップS106では、確証部19が確証処理を実行する。確証処理は、例えば、第1又は第2実施形態における検知処理(図12)のステップS32〜S74と同様である。
ステップS107では、認証部17が、ユーザがアプリケーション32からログアウトしたか否かを判定する。ログアウトしていない場合には、処理はステップS103に戻り、ログアウトした場合には、検知処理は終了する。
以上説明したように、第3実施形態に係る検知装置310は、第1又は第2実施形態における検知処理を、認証及び認可後のアクセス制御の位置付けである「確証」として実行する。
アクセス制御の認証及び認可により、情報資産へのアクセスの要求元が正規のユーザか否かを判断することは、ユーザによる識別情報やパスワードの誤入力や、オペレーションミスなどによる、情報資産への誤ったアクセスを防御するという面では有効である。しかし、プログラムの改ざんやマルウェアのような不正なプロセスによる情報資産へのアクセス要求の場合、認証や認可によるユーザの正当性の判断だけでは、不正なアクセス要求であると判断できない場合があり、情報資産の改ざんや漏えいのリスクが発生する。第3実施形態に係る検知装置310は、上述のように、確証を行うことで、認証及び認可だけでは防御することができないサイバー攻撃から情報資産を守り、かつ、サイバー攻撃をリアルタイムで検知することができる。
なお、上記各実施形態では、情報資産へのアクセス要求を契機として、アクセス要求したプロセスに対応するプログラムの正当性を判断する場合について説明したが、これに限定されない。例えば、所定時間間隔で定期的に実行中のプロセスに対応するプログラムを特定し、特定したプログラムの現在のプログラム情報から生成される現在の固有情報と、正常時の初期固有情報とを比較して、プログラムの正当性を判断するようにしてもよい。これにより、情報資産へのアクセス要求を行わないプロセスについても、対応するプログラムの改ざんやマルウェア感染等を検知することができる。
また、上記各実施形態では、検知プログラム50、250、350が記憶部43に予め記憶(インストール)されている態様を説明したが、これに限定されない。開示の技術に係るプログラムは、CD−ROM、DVD−ROM、USBメモリ等の記憶媒体に記憶された形態で提供することも可能である。
以上の各実施形態に関し、更に以下の付記を開示する。
(付記1)
情報資産へのアクセスを要求するプロセスとして実行されているプログラムを特定し、
特定したプログラムの実行中の状態における固有情報と、前記実行中のプログラムについて予め取得された正常状態における固有情報とが不一致の場合に、前記特定したプログラムが異常であると判定する
ことを含む処理をコンピュータに実行させるための検知プログラム。
(付記2)
前記アクセスを要求するプロセスの生成元のプロセスを順次遡って、前記アクセスを要求するプロセスに関連する全てのプロセスを特定し、特定した前記全てのプロセスの各々として実行されているプログラムの各々を特定する付記1に記載の検知プログラム。
(付記3)
前記固有情報を、前記プログラムのコードから算出される一意な値とする付記1又は付記2に記載の検知プログラム。
(付記4)
前記固有情報を、前記アクセスを要求するプロセスの実行時に取得されるシステムコールの情報、及び前記アクセスを要求するプロセスの前後に実行されるプロセスの情報の少なくとも一つを含む動作情報とする付記1又は付記2に記載の検知プログラム。
(付記5)
正常状態のプログラムから前記正常状態における固有情報を学習することをさらに含む処理を前記コンピュータに実行させる付記1〜付記4のいずれか1項に記載の検知プログラム。
(付記6)
前記不一致の場合には、前記実行中のプログラムについての正常状態における固有情報が存在しない場合が含まれる付記1〜付記5のいずれか1項に記載の検知プログラム。
(付記7)
プログラムが更新された場合、更新されたプログラムに関する固有情報を更新する付記1〜付記6のいずれか1項に記載の検知プログラム。
(付記8)
前記情報資産のうち、異常検知の対象とする情報資産を設定可能とする付記1〜付記7のいずれか1項に記載の検知プログラム。
(付記9)
前記不一致の場合、サイバー攻撃を検知したことを示す情報を出力することをさらに含む処理を前記コンピュータに実行させるための付記1〜付記8のいずれか1項に記載の検知プログラム。
(付記10)
前記情報資産へアクセスするユーザの本人性を認証し、前記情報資産に対する前記ユーザのアクセス権限を認可することにより、前記ユーザによる前記情報資産へのアクセス制御を行うことをさらに含む処理を前記コンピュータに実行させ、
前記アクセス制御の元で実行されるプロセスについて、前記プログラムを特定する処理、及び前記プログラムの異常を検知する処理を実行する
付記1〜付記9のいずれか1項に記載の検知プログラム。
(付記11)
周期的な所定のタイミングで、プロセスとして実行されているプログラムを特定し、
特定したプログラムの実行中の状態における固有情報と、前記実行中のプログラムについて予め取得された正常状態における固有情報とが不一致の場合に、前記特定したプログラムが異常であると判定する
ことを含む処理をコンピュータに実行させるための検知プログラム。
(付記12)
情報資産へのアクセスを要求するプロセスとして実行されているプログラムを特定する特定部と、
特定したプログラムの実行中の状態における固有情報と、前記実行中のプログラムについて予め取得された正常状態における固有情報とが不一致の場合に、前記特定したプログラムが異常であると判定する判定部と、
を含む検知装置。
(付記13)
前記特定部は、前記アクセスを要求するプロセスの生成元のプロセスを順次遡って、前記アクセスを要求するプロセスに関連する全てのプロセスを特定し、特定した前記全てのプロセスの各々として実行されているプログラムの各々を特定する付記12に記載の検知装置。
(付記14)
前記固有情報を、前記プログラムのコードから算出される一意な値とする付記12又は付記13に記載の検知装置。
(付記15)
前記固有情報を、前記アクセスを要求するプロセスの実行時に取得されるシステムコールの情報、及び前記アクセスを要求するプロセスの前後に実行されるプロセスの情報の少なくとも一つを含む動作情報とする付記12又は付記13に記載の検知装置。
(付記16)
正常状態のプログラムから前記正常状態における固有情報を学習する学習部を含む付記12〜付記15のいずれか1項に記載の検知装置。
(付記17)
前記学習部は、プログラムが更新された場合、更新されたプログラムに関する固有情報を更新する付記16に記載の検知装置。
(付記18)
前記情報資産のうち、異常検知の対象とする情報資産を設定可能とする付記12〜付記17のいずれか1項に記載の検知装置。
(付記19)
前記情報資産へアクセスするユーザの本人性を認証し、前記情報資産に対する前記ユーザのアクセス権限を認可することにより、前記ユーザによる前記情報資産へのアクセス制御を行うアクセス制御部を含み、
前記アクセス制御の元で実行されるプロセスについて、前記特定部の処理、及び前記判定部の処理を実行する
付記12〜付記18のいずれか1項に記載の検知装置。
(付記20)
情報資産へのアクセスを要求するプロセスとして実行されているプログラムを特定し、
特定したプログラムの実行中の状態における固有情報と、前記実行中のプログラムについて予め取得された正常状態における固有情報とが不一致の場合に、前記特定したプログラムが異常であると判定する
ことを含む処理をコンピュータが実行する検知方法。