(57)【特許請求の範囲】
【請求項１】
既知の脆弱性を有する所定プログラムに対して入力される入力データが攻撃であるかを検知する攻撃検知方法をコンピュータに実行させる攻撃検知プログラムであって、
前記既知の脆弱性を有する所定プログラムのうち脆弱性を有する処理部分に至るまで前記入力データを前記所定プログラムと同様に処理し、前記脆弱性を有する処理部分による処理が開始される前に、当該脆弱性を有する処理部分に受け入れられるデータと、前記脆弱性を有する処理部分に対して攻撃として入力されるデータが予め基準化された攻撃基準とを比較することにより、前記攻撃であるかを検知する攻撃検知手順をコンピュータに実行させることを特徴とする攻撃検知プログラム。
【請求項２】
既知の脆弱性を有する所定プログラムに対して入力される入力データが攻撃であるかを検知する攻撃検知方法をコンピュータに実行させる攻撃検知プログラムであって、
前記入力データを前記所定プログラムと同様に処理し、前記脆弱性を有する処理部分による処理が開始された後に、当該脆弱性を有する処理部分によって使用される資源の状況に基づいて、前記攻撃であるかを検知する攻撃検知手順をコンピュータに実行させることを特徴とする攻撃検知プログラム。
【請求項３】
前記入力データに係るログ情報を当該入力データの処理前から所定のログ情報記憶手段に格納するログ情報格納手順と、
前記攻撃検知手順によって攻撃が検知された場合に、前記ログ情報記憶手段に記憶された前記ログ情報を読み出して出力するログ情報出力手順と、
をさらにコンピュータに実行させることを特徴とする請求項１または２に記載の攻撃検知プログラム。
【請求項４】
既知の脆弱性を有する所定プログラムに対して入力される入力データが攻撃であるかを検知する攻撃検知装置であって、
前記既知の脆弱性を有する所定プログラムのうち脆弱性を有する処理部分に至るまで前記入力データを前記所定プログラムと同様に処理し、前記脆弱性を有する処理部分による処理が開始される前に、当該脆弱性を有する処理部分に受け入れられるデータと、前記脆弱性を有する処理部分に対して攻撃として入力されるデータが予め基準化された攻撃基準とを比較することにより、前記攻撃であるかを検知する攻撃検知手段を備えたことを特徴とする攻撃検知装置。
【請求項５】
既知の脆弱性を有する所定プログラムに対して入力される入力データが攻撃であるかを検知する攻撃検知方法であって、
前記既知の脆弱性を有する所定プログラムのうち脆弱性を有する処理部分に至るまで前記入力データを前記所定プログラムと同様に処理し、前記脆弱性を有する処理部分による処理が開始される前に、当該脆弱性を有する処理部分に受け入れられるデータと、前記脆弱性を有する処理部分に対して攻撃として入力されるデータが予め基準化された攻撃基準とを比較することにより、前記攻撃であるかを検知する攻撃検知工程を含んだことを特徴とする攻撃検知方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、所定の脆弱性を有する所定プログラムに対して入力される入力データが攻撃であるかを検知する攻撃検知装置、攻撃検知方法および攻撃検知プログラムに関する。
【背景技術】
【０００２】
従来より、ホスト上でサービスを提供するプログラム（アプリケーション）が有する既知の脆弱性（セキュリティホール）を狙った攻撃が問題になっている。例えば、そのようなプログラムが想定していないデータを入力することでプログラムを異常動作させ、ホストによるサービスの提供を妨害したり、ホストから制御を奪う攻撃などである。そして、このような脆弱性を有するプログラムに対して入力されるデータが攻撃であるかを検知して、システムの管理者やユーザに警告を行うという攻撃検知システムの技術も従来から知られている。
【０００３】
このような攻撃検知システムとしては、例えば、パターンマッチング型の攻撃検知システムがある。具体的には、想定される攻撃パターンを予め記憶しておき、脆弱性を有するプログラムに入力される入力データと攻撃パターンとを比較し、両者が一致する場合に、攻撃であると検知するものである（例えば、下記の非特許文献１参照）。
【０００４】
また、他の例を挙げれば、異常検知型の攻撃検知システムがある。具体的には、攻撃検知対象とするホスト上の正常状態におけるＣＰＵ負荷率、ディスク使用率、メモリ利用率などの値を予め記憶しておき、脆弱性を有するプログラムに入力データが入力された後の現在状態と正常状態とを比較し、現在状態が正常状態から乖離した場合に、攻撃であると検知するものである（例えば、下記の非特許文献２参照）。
【０００５】
さらに、他の例を挙げれば、未知なる攻撃を検知するエミュレートによる攻撃検知システムがある。具体的には、脆弱性を有するプログラムに入力される入力データ（パケット内のデータ）をエミュレータ上で模擬的に実行し、攻撃を成功させるために必要な命令がエミュレータによって発行された場合に、攻撃であると検知するものである（例えば、下記の特許文献１参照）。
【０００６】
【非特許文献１】“Snort Lightweight Intrusion Detection for Network”  Martin Roesch,Stanford Telecommunications,Inc  USENIX13th Systems Administration Conference LISA'99  ［online］、［平成１７年１２月３１日検索］、インターネット＜http://www.usenix.org/publications/library/proceedings/lisa99/roesch.html＞
【非特許文献２】“ホストベースのＩＤＳの概要と適用について”ＪＮＳＡ２００１年度ＷＧ活動成果物  ［online］、［平成１７年１２月３１日検索］、インターネット＜http://www.jnsa.org/active/houkoku/IDSBasic.pdf＞
【特許文献１】特開２００５−１８２１８７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、上記した従来の技術は、以下に説明するように、既知の脆弱性を狙って行われる攻撃を検知できずに漏らしてしまう攻撃の検知漏れ（False Negative）や、攻撃でないものを誤って攻撃であると検知してしまう攻撃の誤検知（False Positive）という課題がある。
【０００８】
すなわち、上記したパターンマッチング型の攻撃検知システムでは、プログラムに入力される入力データとパターンマッチングするので、入力データに暗号化や難読化の処理が施されているような場合には、攻撃を検知することができないという課題がある。また、脆弱性がある処理部分に入力されるデータとは無関係に、入力データそのものとパターンマッチングするので、攻撃でない入力データ（攻撃パターンに似ているが、実際には脆弱性を狙ったものではない入力データ）を誤って攻撃であると検知してしまうという課題がある。
【０００９】
同様に、上記した異常検知型の攻撃検知システムでは、ＯＳ等の持つ資源の使用量を監視することで異常を検知するので、資源の使用量が上昇して異常が検知された場合でも、脆弱性を有するプログラムが攻撃を受けたことによる異常であるのか、他のプログラムが暴走したり高負荷になったことによる異常であるのかを判別することが困難であり、結果的に、誤って攻撃であると検知してしまうという課題がある。また、脆弱性を有するプログラム固有の資源としては枯渇しているにもかかわらず、ＯＳの持つ使用量としては十分に余裕があるような場合には、プログラム自体は異常状態であるが、ＯＳ自体は正常状態と大差が無く、このような異常状態を正確に判別することが困難であり、結果的に、攻撃を検知することができないという課題がある。
【００１０】
さらに、上記したエミュレートによる攻撃検知システムでは、パケット内のデータ（脆弱性を有するプログラムに入力される入力データ）が暗号化や難読化の処理が施されているような場合には、攻撃を検知することができないという課題がある。また、攻撃に必要な命令に相当するようなデータ（実際には脆弱性を狙ったものではない入力データ）がパケット内に含まれているような場合には、そのデータが攻撃とは無関係であるにもかかわらず、誤って攻撃であると検知してしまうという課題がある。
【００１１】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、既知の脆弱性に対して行われる攻撃を誤りなくかつ漏れなく検知することが可能な攻撃検知装置、攻撃検知方法および攻撃検知プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するため、本発明は、既知の脆弱性を有する所定プログラムに対して入力される入力データが攻撃であるかを検知する攻撃検知方法をコンピュータに実行させる攻撃検知プログラムであって、前記入力データを前記所定プログラムと同様に処理し、前記脆弱性を有する処理部分において前記攻撃であるかを検知する攻撃検知手順をコンピュータに実行させることを特徴とする。
【００１３】
また、本発明は、上記の発明において、前記攻撃検知手順は、前記脆弱性を有する処理部分による処理が開始される前に、当該脆弱性を有する処理部分に受け入れられるデータに基づいて、前記攻撃であるかを検知することを特徴とする。
【００１４】
また、本発明は、上記の発明において、前記攻撃検知手順は、前記脆弱性を有する処理部分による処理が開始された後に、当該脆弱性を有する処理部分によって使用される資源の状況に基づいて、前記攻撃であるかを検知することを特徴とする。
【００１５】
また、本発明は、上記の発明において、前記入力データに係るログ情報を当該入力データの処理前から所定のログ情報記憶手段に格納するログ情報格納手順と、前記攻撃検知手順によって攻撃が検知された場合に、前記ログ情報記憶手段に記憶された前記ログ情報を読み出して出力するログ情報出力手順と、をさらにコンピュータに実行させることを特徴とする。
【００１６】
また、本発明は、既知の脆弱性を有する所定プログラムに対して入力される入力データが攻撃であるかを検知する攻撃検知装置であって、前記入力データを前記所定プログラムと同様に処理し、前記脆弱性を有する処理部分において前記攻撃であるかを検知する攻撃検知手段を備えたことを特徴とする。
【００１７】
また、本発明は、既知の脆弱性を有する所定プログラムに対して入力される入力データが攻撃であるかを検知する攻撃検知方法であって、前記入力データを前記所定プログラムと同様に処理し、前記脆弱性を有する処理部分において前記攻撃であるかを検知する攻撃検知工程を含んだことを特徴とする。
【発明の効果】
【００１８】
本発明によれば、入力データを所定プログラムと同様に処理し、脆弱性を有する処理部分において攻撃であるかを検知するので、暗号化や難読化の処理が施されている入力データであっても復号処理を行って同様に処理し、かつ、脆弱性を有する処理部分に着目して攻撃を検知することができ、これによって、他の攻撃検知手法（例えば、パターンマッチング型の攻撃検知システム、異常検知型の攻撃検知システム、エミュレートによる攻撃検知システム）に比較して、既知の脆弱性に対して行われる攻撃を誤りなくかつ漏れなく検知することが可能である。
【００１９】
また、本発明によれば、脆弱性を有する処理部分による処理が開始される前に、当該脆弱性を有する処理部分に受け入れられるデータに基づいて、攻撃であるかを検知するので、例えば、脆弱性を有するプログラムと同じように入力データを途中まで（脆弱性を有する処理部分に至るまで）処理し、脆弱性を有する処理の直前で、脆弱性を有する処理部分に受け入れられるデータと予め脆弱性ごとに用意しておいた攻撃基準（例えば、データのサイズ、データに含まれる特定コード）とを比較し、データが攻撃基準を満たす場合に、攻撃であると検知するなどでき、これによって、暗号化や難読化の処理が施されている入力データからも漏れなく攻撃を検知する一方で、攻撃でない入力データ（実際には脆弱性を狙ったものではない入力データ）を誤って攻撃であると検知することもなくなる結果、既知の脆弱性に対して行われる攻撃を誤りなくかつ漏れなく検知することが可能である。
【００２０】
また、本発明によれば、脆弱性を有する処理部分による処理が開始された後に、当該脆弱性を有する処理部分によって使用される資源の状況に基づいて、攻撃であるかを検知するので、例えば、脆弱性を有するプログラムと同じように入力データを処理していき、脆弱性を有する処理部分による処理が開始されると、プログラム固有の資源使用状況（例えば、許容される通信セッション数、開くことができるファイル数など）を監視し、予め脆弱性ごとに用意しておいた閾値を超えた場合に、攻撃であると検知するなどでき、これによって、脆弱性を有するプログラム固有の資源として枯渇していれば、ＯＳの持つ使用量としては十分に余裕があるような場合でも漏れなく攻撃を検知する一方で、他のプログラムが暴走したり高負荷になったことによる異常を誤って攻撃であると検知することもなくなる結果、既知の脆弱性に対して行われる攻撃を誤りなくかつ漏れなく検知することが可能である。
【００２１】
また、本発明によれば、入力データに係るログ情報を当該入力データの処理前から所定のログ情報記憶手段に格納しておき、攻撃が検知された場合に、記憶されたログ情報を読み出して出力するので、例えば、入力データの送信元情報（例えば、送信元の端末を一意に識別するＩＰアドレス、送信時刻など）や、脆弱性を有する処理部分に至るまでの処理状況（例えば、加工される前の暗号化された状態のデータなど）、脆弱性を有する処理部分における処理状況をログ情報として格納しておき、これらのログ情報を攻撃の検知に応じて出力することなどができ、これによって、攻撃が検知された瞬間の情報のみならず、攻撃に関する情報を広く詳細に取得することが可能である。
【発明を実施するための最良の形態】
【００２２】
以下に添付図面を参照して、この発明に係る攻撃検知装置、攻撃検知方法および攻撃検知プログラムの実施例を詳細に説明する。
【実施例１】
【００２３】
以下では、実施例１に係る攻撃検知装置の概要および特徴を説明した後に、実施例１に係る攻撃検知装置の構成、攻撃検知処理の流れを説明し、最後に、実施例１による効果を説明する。
【００２４】
［攻撃検知装置の概要および特徴］
最初に、実施例１に係る攻撃検知装置の概要および主たる特徴を説明する。図１は、実施例１に係る攻撃検知装置を含むシステムの全体構成を示すシステム構成図である。
【００２５】
図１に示すように、実施例１に係る攻撃検知装置１０は、一般ユーザ端末２０にサービスを提供する実ホスト３０と同様、インターネット１に接続され、いわば実ホスト３０のおとりサーバとして、一般ユーザ端末２０からの攻撃対象となり得るものである。つまり、実ホスト３０上でサービスを提供するプログラム（アプリケーション）は、既知の脆弱性（セキュリティホール）を有するものであるが、一般ユーザ端末２０は、かかる脆弱性を狙って、実ホスト３０や攻撃検知装置１０に対してプログラムが想定していないデータを送信することで攻撃を行う。
【００２６】
そして、実施例１に係る攻撃検知装置１０は、自己（既知の脆弱性を有する所定プログラム）に対して入力される入力データが攻撃であるかを検知することを概要とするものであり、以下に、簡単に説明するように、既知の脆弱性に対して行われる攻撃を誤りなくかつ漏れなく検知することができるようにしている点に主たる特徴がある。
【００２７】
この主たる特徴を簡単に説明すると、実施例１に係る攻撃検知装置１０は、一般ユーザ端末２０から送信されて自己に入力される入力データを、例えば、暗号化や難読化の処理が施されていれば復号処理を行って処理するなど、実ホスト３０のプログラム（既知の脆弱性を有する所定プログラム）と同様に処理し、脆弱性を有する処理部分において攻撃であるかを検知する。具体的には、図１に示すように、脆弱性を有するプログラムと同じように入力データを途中まで（脆弱性を有する処理部分に至るまで）処理し（図１の（１）参照）、脆弱性を有する処理の直前で、脆弱性を有する処理部分に受け入れられるデータと予め脆弱性ごとに用意しておいた攻撃基準（例えば、データのサイズ、データに含まれる特定コード）とを比較し、データが攻撃基準を満たす場合に、攻撃であると検知する（図１の（２）参照）。
【００２８】
このように、実施例１に係る攻撃検知装置１０によれば、暗号化や難読化の処理が施されている入力データであっても復号処理を行って同様に処理し、かつ、脆弱性を有する処理部分に着目して攻撃を検知することができ、これによって、他の攻撃検知手法（例えば、パターンマッチング型の攻撃検知システム、異常検知型の攻撃検知システム、エミュレートによる攻撃検知システム）に比較して、上記した主たる特徴のごとく、既知の脆弱性に対して行われる攻撃を誤りなくかつ漏れなく検知することが可能である。
【００２９】
［攻撃検知装置の構成］
続いて、図２を用いて、実施例１に係る攻撃検知装置１０の構成を説明する。図２は、実施例１に係る攻撃検知装置の構成を示すブロック図である。同図に示すように、実施例１に係る攻撃検知装置１０は、通信制御ＩＦ部１１と、出力部１２と、記憶部１３と、攻撃検知制御部１４とを備えて構成される。
【００３０】
このうち、通信制御ＩＦ部１１は、一般ユーザ端末２０から攻撃検知装置１０に対して送信されたデータを受け入れて攻撃検知装置１０内に入力する処理部である。また、出力部１２は、後述するレポート部１４ｄによって作成されたレポート（攻撃詳細ログ）を攻撃検知装置１０の外部（例えば、攻撃検知装置１０を管理する管理者の端末など）に出力する処理部である。
【００３１】
記憶部１３は、攻撃検知制御部１４による各種処理に必要なデータおよびプログラムを格納する格納手段（記憶手段）であり、特に本発明に密接に関連するものとしては、ログ情報ＤＢ１３ａと、攻撃基準ＤＢ１３ｂとを備える。なお、ログ情報ＤＢ１３ａは、特許請求の範囲に記載の「ログ情報記憶手段」に対応する。
【００３２】
かかる記憶部１３のうち、ログ情報ＤＢ１３ａは、後述するロギング部１４ａにより取得されたログ情報（入力データに係るログ情報）を記憶する手段であり、具体的には、入力データの送信元情報（例えば、送信元の端末を一意に識別するＩＰアドレス、送信時刻など）や、脆弱性を有する処理部分に至るまでの処理状況（例えば、加工される前の暗号化された状態のデータなど）、脆弱性を有する処理部分における処理状況などをログ情報として記憶する。
【００３３】
攻撃基準１３ｂは、後述する攻撃検知部１４ｂによる攻撃検知に用いられる攻撃基準を記憶する手段であり、具体的には、脆弱性ごとに攻撃として想定されるデータの基準（例えば、このサイズを超えていれば攻撃であるとみなされるデータサイズ、このコードが含まれていれば攻撃であるとみなされる特定コードなど）を攻撃基準として記憶する。なお、ここでいう攻撃基準は、攻撃検知装置１０に対して攻撃として入力されるデータそのものを基準化したものではなく、脆弱性を有する処理部分に対して攻撃として入力されるデータ（攻撃検知装置１０に入力され、脆弱性を有する処理部分に至るまで処理されることで得られるデータ）を基準化したものである。
【００３４】
攻撃検知制御部１４は、各種の処理手順などを規定したプログラムおよび所要データを格納するための内部メモリを有し、これらによって種々の処理を実行する処理部であり、特に本発明に密接に関連するものとしては、ロギング部１４ａと、攻撃検知部１４ｂと、レポート部１４ｃとを備える。なお、ロギング部１４ａは、特許請求の範囲に記載の「ログ情報格納手順」に対応し、攻撃検知部１４ｂは、同じく「攻撃検知手順」に対応し、レポート部１４ｃは、同じく「ログ情報出力手順」に対応する。
【００３５】
かかる攻撃検知制御部１４のうち、ロギング部１４ａは、入力データに係るログ情報を取得してログ情報ＤＢ１３ａに格納する処理部である。具体的には、脆弱性に対する攻撃の詳細な情報を取得するために必要な箇所に仕掛けられ、例えば、入力データの送信元情報（例えば、送信元の端末を一意に識別するＩＰアドレス、送信時刻など）や、脆弱性を有する処理部分に至るまでの処理状況（例えば、加工される前の暗号化された状態のデータなど）、脆弱性を有する処理部分における処理状況などを取得する。
【００３６】
攻撃検知部１４ｂは、入力データを既知の脆弱性を有する所定プログラム（実ホスト３０上のプログラム）と同様に処理し、脆弱性を有する処理部分において攻撃であるかを検知する処理部である。具体的には、暗号化や難読化の処理が施されている入力データであれば復号処理を行って処理するなど、脆弱性を有するプログラムと同じように入力データを途中まで（脆弱性を有する処理部分に至るまで）処理し、脆弱性を有する処理の直前で、脆弱性を有する処理部分に受け入れられるデータと攻撃基準ＤＢ１３ｂに記憶された攻撃基準（例えば、データのサイズ、データに含まれる特定コード）とを比較し、データが攻撃基準を満たす場合に、攻撃であると検知する。
【００３７】
また、攻撃を検知した場合には、攻撃検知部１４ｂは、その旨を後述するレポート部１４ｃに出力するとともに、脆弱性を有する処理部分に受け入れられるデータを無害化し、脆弱性を有する処理部分に無害化したデータを入力して、脆弱性を有するプログラムと同じように処理を継続する。なお、ここでは、攻撃を検知すると、データを無害化する場合を説明したが、必ずしもこれに限定されるものではなく、攻撃者の挙動把握を目的にして、データを無害化することなく脆弱性を有する処理部分に入力し、故意に攻撃を成功させるようにしてもよく、または、攻撃を検知すると、脆弱性を有する処理部分による処理をスキップして、当該処理部分に続く処理部分から処理を継続するようにしてもよい。
【００３８】
レポート部１４ｃは、攻撃検知部１４ｂによって攻撃が検知された場合には、レポート（攻撃詳細ログ）を作成し、出力部１２を介してレポートを外部（例えば、攻撃検知装置１０を管理する管理者の端末など）に出力する処理部である。具体的には、攻撃が検知されると、当該攻撃に関連するログ情報がログ情報ＤＢ１３ａに記憶されているかを検索し、該当するログ情報が記憶されている場合には、ログ情報を取得し、攻撃を検知したことを示す攻撃検知情報およびログ情報ＤＢ１３ａから取得したログ情報からなるレポートを作成して出力する。なお、攻撃に関連するログ情報がログ情報ＤＢ１３ａに記憶されていない場合には、攻撃を検知したことを示す攻撃検知情報のみからなるレポートを作成して出力する。
【００３９】
ところで、上記した攻撃検知装置１０は、既知のパーソナルコンピュータやワークステーションなどの情報処理装置に、上記した攻撃検知制御部１４の各部の各機能を搭載することによって実現することもできる。また、上記した攻撃検知制御部１４は、脆弱性を有するプログラムに各部の機能（モジュール）を組み込むことによって実現することもでき、このようにすることによって、入力データの処理やプログラム固有の資源を忠実に再現することができ、既知の脆弱性に対して行われる攻撃をより一層誤りなくかつ漏れなく検知することが可能になる。
【００４０】
［攻撃検知処理の流れ］
次に、図３を用いて、実施例１に係る攻撃検知装置１０による攻撃検知処理の流れを説明する。図３は、実施例１に係る攻撃検知装置による攻撃検知処理の流れを示すフローチャートである。
【００４１】
同図に示すように、実施例１に係る攻撃検知装置１０の攻撃検知部１４ｂは、攻撃検知制御部１４にデータが入力されると（ステップＳ３０１肯定）、暗号化や難読化の処理が施されている入力データであれば復号処理を行って処理するなど、脆弱性を有するプログラムと同じように入力データを途中まで（脆弱性を有する処理部分に至るまで）処理する（ステップＳ３０２）。
【００４２】
そして、攻撃検知部１４ｂは、脆弱性を有する処理部分の手前まで処理が進行すると（ステップＳ３０３肯定）、攻撃であるかを検知する（ステップＳ３０４）。具体的には、脆弱性を有する処理部分に受け入れられるデータと攻撃基準ＤＢ１３ｂに記憶された攻撃基準（例えば、データのサイズ、データに含まれる特定コード）とを比較し、データが攻撃基準を満たす場合に、攻撃であると検知する。
【００４３】
ここで、攻撃でないとされた場合には（ステップＳ３０４否定）、攻撃検知部１４ｂは、脆弱性を有する処理部分にデータを入力し、脆弱性を有するプログラムと同じように処理を継続する（ステップＳ３０７）。なお、脆弱性を有する処理部分が他にもある場合には、攻撃検知部１４ｂは、上記したステップＳ３０３に処理を戻し、脆弱性を有する処理部分の手前まで処理が進行する度に、攻撃であるかを検知する（ステップＳ３０４）。
【００４４】
一方、上記したステップＳ３０４において攻撃であると検知された場合には（ステップＳ３０４肯定）、攻撃検知部１４ｂは、その旨をレポート部１４ｃに出力し、これを受けたレポート部１４ｃは、レポート（攻撃詳細ログ）を作成し、出力部１２を介してレポートを外部（例えば、攻撃検知装置１０を管理する管理者の端末など）に出力する（ステップＳ３０５）。なお、レポート部１４ｃによるレポート処理については、後に詳述する。
【００４５】
さらに、上記したステップＳ３０５の処理に続いて、攻撃検知部１４ｂは、脆弱性を有する処理部分に受け入れられるデータを無害化し（ステップＳ３０６）、脆弱性を有する処理部分に無害化したデータを入力して、脆弱性を有するプログラムと同じように処理を継続する（ステップＳ３０７）。なお、脆弱性を有する処理部分が他にもある場合には、攻撃検知部１４ｂは、上記したステップＳ３０３に処理を戻し、脆弱性を有する処理部分の手前まで処理が進行する度に、攻撃であるかを検知する（ステップＳ３０４）。
【００４６】
［レポート処理の流れ］
続いて、図４を用いて、実施例１に係る攻撃検知装置１０によるレポート処理の流れを説明する。図４は、実施例１に係る攻撃検知装置によるレポート処理の流れを示すフローチャートである。
【００４７】
同図に示すように、実施例１に係る攻撃検知装置１０のレポート部１４ｃは、攻撃検知部１４ｂによって攻撃が検知されると（ステップＳ４０１肯定）、当該攻撃に関連するログ情報がログ情報ＤＢ１３ａに記憶されているかを検索する（ステップＳ４０２）。
【００４８】
そして、該当するログ情報がログ情報ＤＢ１３ａに記憶されている場合には（ステップＳ４０２肯定）、レポート部１４ｃは、ログ情報ＤＢ１３ａからログ情報を取得し、攻撃を検知したことを示す攻撃検知情報およびログ情報ＤＢ１３ａから取得したログ情報からなるレポートを作成して出力する（ステップＳ４０３およびＳ４０４）。一方、攻撃に関連するログ情報がログ情報ＤＢ１３ａに記憶されていない場合には（ステップＳ４０２否定）、レポート部１４ｃは、攻撃を検知したことを示す攻撃検知情報のみからなるレポートを作成して出力する（ステップＳ４０４）。
【００４９】
［実施例１による効果］
上述してきたように、実施例１によれば、脆弱性を有する所定プログラムと同様に入力データを処理し、脆弱性を有する処理部分において攻撃であるかを検知するので、暗号化や難読化の処理が施されている入力データであっても復号処理を行って同様に処理し、かつ、脆弱性を有する処理部分に着目して攻撃を検知することができ、これによって、他の攻撃検知手法（例えば、パターンマッチング型の攻撃検知システム、異常検知型の攻撃検知システム、エミュレートによる攻撃検知システム）に比較して、既知の脆弱性に対して行われる攻撃を誤りなくかつ漏れなく検知することが可能である。
【００５０】
また、実施例１によれば、脆弱性を有する処理部分による処理が開始される前に、当該脆弱性を有する処理部分に受け入れられるデータに基づいて、攻撃であるかを検知するので、例えば、脆弱性を有するプログラムと同じように入力データを途中まで（脆弱性を有する処理部分に至るまで）処理し、脆弱性を有する処理の直前で、脆弱性を有する処理部分に受け入れられるデータと予め脆弱性ごとに用意しておいた攻撃基準（例えば、データのサイズ、データに含まれる特定コード）とを比較し、データが攻撃基準を満たす場合に、攻撃であると検知するなどでき、これによって、暗号化や難読化の処理が施されている入力データからも漏れなく攻撃を検知する一方で、攻撃でない入力データ（実際には脆弱性を狙ったものではない入力データ）を誤って攻撃であると検知することもなくなる結果、既知の脆弱性に対して行われる攻撃を誤りなくかつ漏れなく検知することが可能である。
【００５１】
また、実施例１によれば、入力データに係るログ情報を当該入力データの処理前から所定のログ情報記憶手段に格納しておき、攻撃が検知された場合に、記憶されたログ情報を読み出して出力するので、例えば、入力データの送信元情報（例えば、送信元の端末を一意に識別するＩＰアドレス、送信時刻など）や、脆弱性を有する処理部分に至るまでの処理状況（例えば、加工される前の暗号化された状態のデータなど）、脆弱性を有する処理部分における処理状況をログ情報として格納しておき、これらのログ情報を攻撃の検知に応じて出力することなどができ、これによって、攻撃が検知された瞬間の情報のみならず、攻撃に関する情報を広く詳細に取得することが可能である。
【実施例２】
【００５２】
ところで、上記した実施例１では、脆弱性を有する処理部分に受け入れられるデータに基づいて攻撃であるかを検知する場合を説明したが、本発明はこれに限定されるものではなく、脆弱性を有する処理部分によって使用される資源の状況に基づいて攻撃であるかを検知するようにしてもよい。
【００５３】
そこで、以下では、脆弱性を有する処理部分によって使用される資源の状況に基づいて攻撃であるかを検知する場合を実施例２として説明する。なお、実施例２に係る攻撃検知装置１０は、基本的には、図２に示した実施例１に係る攻撃検知装置１０と同様の構成であり、攻撃基準ＤＢ１３ｂおよび攻撃検知部１４ｂの機能が僅かに異なるのみであるので、以下では、これらの攻撃基準ＤＢ１３ｂおよび攻撃検知部１４ｂを説明する。
【００５４】
実施例２における攻撃基準ＤＢ１３ｂは、後述する攻撃検知部１４ｂによる攻撃検知に用いられる攻撃基準を記憶する手段であり、具体的には、脆弱性ごとに攻撃として想定されるプログラム固有の資源使用状況（例えば、許容される通信セッション数、開くことができるファイル数など）を閾値として記憶する。なお、ここでいう閾値は、他のプログラムを含む全体の資源使用状況を想定して定められるものではなく、脆弱性を有するプログラム固有の資源使用状況を想定して定められるものである。
【００５５】
また、実施例２における攻撃検知部１４ｂは、脆弱性を有する処理部分による処理が開始された後に、当該脆弱性を有する処理部分によって使用される資源の状況に基づいて、攻撃であるかを検知する処理部である。具体的には、暗号化や難読化の処理が施されている入力データであれば復号処理を行って処理するなど、脆弱性を有するプログラムと同じように入力データを処理していき、脆弱性を有する処理部分による処理が開始されると、プログラム固有の資源使用状況（例えば、許容される通信セッション数、開くことができるファイル数など）を監視し、予め脆弱性ごとに用意しておいた閾値を超えた場合に、攻撃であると検知する。なお、攻撃を検知した後の処理は、上記した実施例１と同様である。
【００５６】
続いて、図５を用いて、実施例２に係る攻撃検知装置１０による攻撃検知処理の流れを説明する。図５は、実施例２に係る攻撃検知装置による攻撃検知処理の流れを示すフローチャートである。
【００５７】
同図に示すように、実施例２に係る攻撃検知装置１０の攻撃検知部１４ｂは、攻撃検知制御部１４にデータが入力されると（ステップＳ５０１肯定）、暗号化や難読化の処理が施されている入力データであれば復号処理を行って処理するなど、脆弱性を有するプログラムと同じように入力データを処理する（ステップＳ５０２）。
【００５８】
そして、攻撃検知部１４ｂは、脆弱性を有する処理部分による処理が開始されると（ステップＳ５０３肯定）、攻撃であるかを検知する（ステップＳ５０４）。具体的には、プログラム固有の資源使用状況（例えば、許容される通信セッション数、開くことができるファイル数など）を監視し、予め脆弱性ごとに用意しておいた閾値を超えた場合に、攻撃であると検知する。
【００５９】
ここで、攻撃でないとされた場合には（ステップＳ５０４否定）、攻撃検知部１４ｂは、脆弱性を有するプログラムと同じように処理を継続する（ステップＳ５０７）。なお、脆弱性を有する処理部分が他にもある場合には、攻撃検知部１４ｂは、上記したステップＳ５０３に処理を戻し、脆弱性を有する処理部分の処理が開始される度に、攻撃であるかを検知する（ステップＳ５０４）。
【００６０】
一方、上記したステップＳ５０４において攻撃であると検知された場合には（ステップＳ５０４肯定）、攻撃検知部１４ｂは、その旨をレポート部１４ｃに出力し、これを受けたレポート部１４ｃは、レポート（攻撃詳細ログ）を作成し、出力部１２を介してレポートを外部（例えば、攻撃検知装置１０を管理する管理者の端末など）に出力する（ステップＳ５０５）。なお、レポート部１４ｃによるレポート処理については、図４を用いて説明した通りである。
【００６１】
さらに、上記したステップＳ５０５の処理に続いて、攻撃検知部１４ｂは、脆弱性を有する処理部分に受け入れられたデータを無害化し（ステップＳ５０６）、脆弱性を有する処理部分に無害化したデータを改めて入力して、脆弱性を有するプログラムと同じように処理を継続する（ステップＳ５０７）。なお、脆弱性を有する処理部分が他にもある場合には、攻撃検知部１４ｂは、上記したステップＳ５０３に処理を戻し、脆弱性を有する処理部分の処理が開始される度に、攻撃であるかを検知する（ステップＳ５０４）。
【００６２】
上述してきたように、実施例２によれば、脆弱性を有する処理部分による処理が開始された後に、当該脆弱性を有する処理部分によって使用される資源の状況に基づいて、攻撃であるかを検知するので、例えば、脆弱性を有するプログラムと同じように入力データを処理していき、脆弱性を有する処理部分による処理が開始されると、プログラム固有の資源使用状況（例えば、許容される通信セッション数、開くことができるファイル数など）を監視し、予め脆弱性ごとに用意しておいた閾値を超えた場合に、攻撃であると検知するなどでき、これによって、脆弱性を有するプログラム固有の資源として枯渇していれば、ＯＳの持つ使用量としては十分に余裕があるような場合でも漏れなく攻撃を検知する一方で、他のプログラムが暴走したり高負荷になったことによる異常を誤って攻撃であると検知することもなくなる結果、既知の脆弱性に対して行われる攻撃を誤りなくかつ漏れなく検知することが可能である。
【実施例３】
【００６３】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例１および２以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では実施例３として本発明に含まれる他の実施例を説明する。
【００６４】
例えば、上記した実施例１および２では、脆弱性を有する処理部分に受け入れられるデータに基づいて攻撃であるかを検知する場合と、脆弱性を有する処理部分によって使用される資源の状況に基づいて攻撃であるかを検知する場合とをそれぞれ説明したが、本発明はこれに限定されるものではなく、両者の攻撃検知手法を攻撃検知装置１０内で実現するようにしてもよい。
【００６５】
すなわち、この場合には、脆弱性を有するプログラムと同じように入力データを途中まで（脆弱性を有する処理部分に至るまで）処理し、脆弱性を有する処理部分の手前まで処理が進行すると、脆弱性を有する処理部分に受け入れられるデータと攻撃基準ＤＢ１３ｂに記憶された攻撃基準とを比較して、攻撃であるかを検知する。さらに、その後、脆弱性を有する処理部分による処理が開始されると、プログラム固有の資源使用状況（例えば、許容される通信セッション数、開くことができるファイル数など）を監視して、攻撃であるかを検知する。このように、両者の攻撃検知手法を攻撃検知装置１０内で実現するようにすれば、既知の脆弱性に対して行われる攻撃をより一層誤りなくかつ漏れなく検知することが可能になる。
【００６６】
また、上記した実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００６７】
また、図２に示した攻撃検知装置１０の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、攻撃検知装置１０の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。さらに、攻撃検知装置１０にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００６８】
なお、上記した実施例で説明した攻撃検知方法は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。このプログラムは、インターネットなどのネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することもできる。
【産業上の利用可能性】
【００６９】
以上のように、本発明に係る攻撃検知装置、攻撃検知方法および攻撃検知プログラムは、既知の脆弱性を有する所定プログラムに対して入力される入力データが攻撃であるかを検知する場合に有用であり、特に、既知の脆弱性に対して行われる攻撃を誤りなくかつ漏れなく検知することに適する。
【図面の簡単な説明】
【００７０】
【図１】実施例１に係る攻撃検知装置を含むシステムの全体構成を示すシステム構成図である。
【図２】実施例１に係る攻撃検知装置の構成を示すブロック図である。
【図３】実施例１に係る攻撃検知装置による攻撃検知処理の流れを示すフローチャートである。
【図４】実施例１に係る攻撃検知装置によるレポート処理の流れを示すフローチャートである。
【図５】実施例２に係る攻撃検知装置による攻撃検知処理の流れを示すフローチャートである。
【符号の説明】
【００７１】
１  インターネット
１０  攻撃検知装置
１１  通信制御ＩＦ部
１２  出力部
１３  記憶部
１３ａ  ログ情報ＤＢ（データベース）
１３ｂ  攻撃基準ＤＢ（データベース）
１４  攻撃検知制御部
１４ａ  ロギング部
１４ｂ  攻撃検知部
１４ｃ  レポート部
２０  一般ユーザ端末
３０  実ホスト
【図１】
0004739962.tif 000002
【図２】
0004739962.tif 000003
【図３】
0004739962.tif 000004
【図４】
0004739962.tif 000005
【図５】
0004739962.tif 000006