(57)【要約】【課題】  予め記憶されていないアクセスデータに対しても、正常なアクセスデータであるか否かを判断する異常データ検出装置及び異常データ検出プログラムを提供する。【解決手段】  アクセスデータに含まれるパラメータ値に基づいて異常データの特徴を示す特徴量を算出するデータ解析手段１１と、算出された特徴量を蓄積して記憶する特徴量蓄積手段１６と、特徴量の平均値、標準偏差、アクセス回数を含む統計情報を記憶する統計情報記憶手段１５と、特徴量蓄積手段１６に記憶された特徴量の平均値と標準偏差とアクセス回数とを含む統計情報を生成し、統計情報記憶手段１５に記憶された前記統計情報を更新する統計処理実行手段１４と、入力されたアクセスデータに関する過去のアクセス回数を判定するアクセス判定手段１２と、判定された結果に基づいて、前記入力されたアクセスデータが正常であるか否かを判定する統計的異常判定手段１３とを備える。【選択図】      図１
2006133992.tif 000002
【特許請求の範囲】
【請求項１】
接続されるネットワークセグメントから入力されるアクセスデータに含まれるパラメータ値に基づいて異常データの特徴を示す特徴量を算出するデータ解析手段と、
前記データ解析手段で算出された特徴量を蓄積して記憶する特徴量蓄積手段と、
前記特徴量の平均値、標準偏差、アクセス回数を含む統計情報を記憶する統計情報記憶手段と、
前記特徴量蓄積手段に記憶された前記特徴量の平均値と標準偏差とアクセス回数とを含む統計情報を生成し、前記統計情報記憶手段に記憶された前記統計情報を更新する統計処理実行手段と、
前記統計情報記憶手段を参照して前記入力されたアクセスデータに関する過去のアクセス回数を判定するアクセス判定手段と、
前記アクセス判定手段で判定された結果に基づいて、データ解析手段とで算出された特徴量と前記統計情報記憶手段に記憶される統計情報とを比較して、前記入力されたアクセスデータが正常であるか否かを判定する統計的異常判定手段と、
を備えることを特徴とする異常データ検出装置。
【請求項２】
接続されるネットワークセグメントからアクセスデータが入力されると、前記アクセスデータに含まれるパラメータ値に基づいて、ＣＧＩ変数名毎に異常データの特徴を示す特徴量を算出するデータ解析手段と、
前記データ解析手段で算出された特徴量を蓄積して記憶する特徴量蓄積手段と、
前記特徴量の平均値、標準偏差、アクセス回数を含む統計情報を記憶する統計情報記憶手段と、
前記特徴量蓄積手段に記憶された前記特徴量の平均値と標準偏差とアクセス回数とを含む統計情報を生成し、前記統計情報記憶手段に記憶された前記統計情報を更新する統計処理実行手段と、
前記統計情報記憶手段を参照して前記入力されたアクセスデータに関する過去のアクセス回数を判定するアクセス判定手段と、
前記アクセス判定手段で判定された結果に基づいて、前記データ解析手段とで算出された特徴量と前記統計情報記憶手段に記憶される統計情報とを比較して、アクセスデータが正常であるか否かを判定する統計的異常判定手段部と、
を備えることを特徴とする異常データ検出装置。
【請求項３】
前記アクセス判定手段は、入力されたアクセスデータに含まれる前記ＣＧＩ変数と対応する統計情報が前記統計情報記憶手段に存在するか否かを判定するＣＧＩ判定手段と、前記ＣＧＩ判定手段で統計情報が存在していることを判定した場合、前記統計情報記憶手段を参照して前記入力されたアクセスデータに含まれる前記ＣＧＩ名及び前記ＣＧＩ変数と関連付けられる過去のアクセス回数を判定するＣＧＩ変数判定手段とを有し、
前記統計的異常判定手段は、前記ＣＧＩ判定手段で統計情報が存在しないと判断した場合、アクセスデータを異常と判定する
ことを特徴とする請求項２記載の異常データ検出装置。
【請求項４】
接続されるネットワークセグメントから入力されるアクセスデータに含まれるパラメータ値に基づいて異常データの特徴を示す特徴量を算出し、
算出された特徴量を蓄積して記憶する特徴量蓄積手段に記憶された前記特徴量の平均値と標準偏差とアクセス回数とを含む統計情報を生成し、前記特徴量の平均値、標準偏差、アクセス回数を含む統計情報を記憶する統計情報記憶手段に記憶された前記統計情報を更新し、
前記統計情報記憶手段を参照して前記入力されたアクセスデータに関する過去のアクセス回数を判定し、
判定された結果に基づいて、算出された特徴量と前記統計情報記憶手段に記憶される統計情報とを比較して、前記入力されたアクセスデータが正常であるか否かを判定する
ことを特徴とする異常データ検出方法。
【請求項５】
接続されるネットワークセグメントからアクセスデータが入力されると、前記アクセスデータに含まれるパラメータ値に基づいて、ＣＧＩ変数名毎に異常データの特徴を示す特徴量を算出し、
前記データ解析手段で算出された特徴量を蓄積して記憶する特徴量蓄積手段に記憶された前記特徴量の平均値と標準偏差とアクセス回数とを含む統計情報を生成し、前記特徴量の平均値、標準偏差、アクセス回数を含む統計情報を記憶する統計情報記憶手段に記憶された前記統計情報を更新し、
前記統計情報記憶手段を参照して前記入力されたアクセスデータに関する過去のアクセス回数を判定し、
判定された結果に基づいて、算出された特徴量と前記統計情報記憶手段に記憶される統計情報とを比較して、アクセスデータが正常であるか否かを判定する
ことを特徴とする異常データ検出方法。
【請求項６】
入力されたアクセスデータに含まれる前記ＣＧＩ変数と対応する統計情報が前記統計情報記憶手段に存在するか否かを判定し、統計情報が存在していることを判定した場合、前記統計情報記憶手段を参照して前記入力されたアクセスデータに含まれる前記ＣＧＩ名及び前記ＣＧＩ変数と関連付けられる過去のアクセス回数を判定し、
統計情報が存在しないと判断した場合、アクセスデータを異常と判定する
ことを特徴とする請求項５記載の異常データ検出方法。
【請求項７】
接続されるネットワークセグメントから入力されるアクセスデータに含まれるパラメータ値に基づいて異常データの特徴を示す特徴量を算出するステップと、
算出された特徴量を蓄積して記憶する特徴量蓄積手段に記憶された前記特徴量の平均値と標準偏差とアクセス回数とを含む統計情報を生成し、前記特徴量の平均値、標準偏差、アクセス回数を含む統計情報を記憶する統計情報記憶手段に記憶された前記統計情報を更新するステップと、
前記統計情報記憶手段を参照して前記入力されたアクセスデータに関する過去のアクセス回数を判定するステップと、
前記アクセス判定手段で判定された結果に基づいて、データ解析手段とで算出された特徴量と前記統計情報記憶手段に記憶される統計情報とを比較して、前記入力されたアクセスデータが正常であるか否かを判定するステップと、
をコンピュータに実行させることを特徴とする異常データ検出プログラム。
【請求項８】
接続されるネットワークセグメントからアクセスデータが入力されると、前記アクセスデータに含まれるパラメータ値に基づいて、ＣＧＩ変数名毎に異常データの特徴を示す特徴量を算出するステップと、
前記データ解析手段で算出された特徴量を蓄積して記憶する特徴量蓄積手段に記憶された前記特徴量の平均値と標準偏差とアクセス回数とを含む統計情報を生成し、前記特徴量の平均値、標準偏差、アクセス回数を含む統計情報を記憶する統計情報記憶手段に記憶された前記統計情報を更新するステップと、
前記統計情報記憶手段を参照して前記入力されたアクセスデータに関する過去のアクセス回数を判定するステップと、
判定された結果に基づいて、算出された特徴量と前記統計情報記憶手段に記憶される統計情報とを比較して、アクセスデータが正常であるか否かを判定するステップと、
をコンピュータに実行させることを特徴とする異常データ検出プログラム。
【請求項９】
入力されたアクセスデータに含まれる前記ＣＧＩ変数と対応する統計情報が前記統計情報記憶手段に存在するか否かを判定し、統計情報が存在していることを判定した場合、前記統計情報記憶手段を参照して前記入力されたアクセスデータに含まれる前記ＣＧＩ名及び前記ＣＧＩ変数と関連付けられる過去のアクセス回数を判定し、
統計情報が存在しないと判断した場合、アクセスデータを異常と判定する
ことを特徴とする請求項８記載の異常データ検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信ネットワークから入力するアクセスデータにおいて、異常データを検知する異常データ検出装置、異常データ検出方法及び異常データ検出プログラムに関する。
【背景技術】
【０００２】
一般的に、インターネット等の通信ネットワークにおける異常データの検出として、ファイアウォール等を介して所定のＩＰアドレス及びポート番号から受信したパケットについては通過させない方法が一般的である。しかし、このファイアウォールで防ぐことのできない攻撃は多様であるが、その中で、ウェブサーバ上のセキュリティーホール、即ちオペレーティングシステムやブラウザなどのソフトウェアのバグや脆弱性を狙った攻撃も多い。例えば、ＨＴＴＰリクエストに特定の文字列が含まれていると、そのＨＴＴＰリクエストが解読され実行されることにより、ウェブサーバ上で稼働しているＣＧＩ（Common gateway Interface）等のソフトウェアが、バッファオーバーフローなどにより予期せぬ動作を引き起こすといったことが挙げられる。この様なウェブサーバ上のソフトウェアの脆弱性を狙った攻撃に対応するために、クライアントからウェブサーバに送信されるＨＴＴＰリクエストをアプリケーション層で中継及び解析し、予め既知の攻撃の特徴を格納した攻撃パターンファイルと比較し、マッチした場合にセッション中継を遮断することにより、ウェブサーバを防御する方法がある（例えば、特許文献１）。
【０００３】
しかし上述した方法においては、攻撃パターンファイルに格納されていない未知の攻撃からはウェブサーバを防御することができない問題点があった。
【０００４】
そこで、ウェブサーバなどインターネットに接続された装置送信されたアクセスデータにおいて、異常データを検知する技術分野において、アクセスデータに含まれる値の範囲や文字種別などを分析し、その平均値や分散を求め、統計的に異常とされる閾値を計算する。更にその閾値に基づいて、あるアクセスデータが統計的に正常であるか異常であるかを判断することにより、そのアクセスデータが異常データに関わるものであるか否かを検出する技術を確立することが求められている。この技術は、予め与えられた既知の異常パターン或いは正常パターンからだけでは検出できない、未知の異常データを検出できることが期待されている（例えば、非特許文献１）。
【０００５】
しかし上述した技術においては、単純に統計的に計算された閾値のみに依存する場合、未知の異常データが真に異常データであるか否かの判断能力が必ずしも十分ではない。例えば、特に閾値の近傍に評価されるアクセスデータについては、判断の正確性が弱くなる傾向があり、その閾値の設定が適切でないと、具体的には、正常であるものを異常として検出してしまう後検出、又は異常なものを検出できない不検出を引き起こす一員となる。
【０００６】
未知の異常データの誤検出と不検出を削除するためには、管理者や専門家の知識に基づく判断によって、管理端末において正常であるか異常であるかの閾値を補正することが考えられ得る。しかしこの方法においては、インターネットに接続された機器に対するアクセスは膨大かつ多様であり、管理端末へ出力される警報ログの量が多すぎると、管理者の手に負えず、結局放置されてしまう問題が生じる。
【０００７】
これを解決するため、発明者らは管理端末において運用中に閾値を適切に補正する方法を発明した（例えば、特許文献２）。特許文献２に記載の方法においては、閾値よりわずかに異常と評価される、閾値外の予め定められた閾値近傍に属するアクセスデータについては誤検出の可能性があるものとして、誤検出補正管理部へ受け渡し、閾値よりわずかに正常とされる、閾値内の予め定めた閾値近傍に属するアクセスデータについては不検出の可能性があるものとして、不検出補正管理部へ受け渡す。
【特許文献１】特開２００２−０６３０８４号公報
【特許文献２】特願２００３−３１８７９６号公報
【非特許文献１】ＩＳＳＮ  ０９１９−６０７２  情報処理学会研究報告  情処研報  Ｖｏｌ．２００３，Ｎｏ．７４  ２００３年７月１７日〜１８日発行  発行人  社団法人  情報処理学会  ｐ．９１〜９６  「ＨＴＴＰリクエスト解析による未知攻撃防御システム」  今野  徹、楯岡  正道
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、特許文献２に記載の方法においては、管理者の存在を前提として、管理端末により補正されるので、管理者に負担が強いられる問題がある。更に、運用中にデータの異常性の判断基準、例えば閾値を変更するための手段がなかった。従って、運用時間が長期に及ぶ場合、アクセスデータの傾向の変化に対し、適切に追随するためには管理端末に置いて常に監視をするなどの対策を採る必要があり、負担やコストがかかる問題があった。
【０００９】
従って本発明の目的は、予め記憶されていないアクセスデータに対しても、正常なアクセスデータであるか否かを判断することができる異常データ検出装置及び異常データ検出プログラムを提供することである。
【課題を解決するための手段】
【００１０】
上記課題を解決するために、本発明の第１の特徴は、接続されるネットワークセグメントから入力されるアクセスデータに含まれるパラメータ値に基づいて異常データの特徴を示す特徴量を算出するデータ解析手段と、データ解析手段で算出された特徴量を蓄積して記憶する特徴量蓄積手段と、特徴量の平均値、標準偏差、アクセス回数を含む統計情報を記憶する統計情報記憶手段と、特徴量蓄積手段に記憶された特徴量の平均値と標準偏差とアクセス回数とを含む統計情報を生成し、統計情報記憶手段に記憶された統計情報を更新する統計処理実行手段と、統計情報記憶手段を参照して前記入力されたアクセスデータに関する過去のアクセス回数を判定するアクセス判定手段と、アクセス判定手段で判定された結果に基づいて、データ解析手段とで算出された特徴量と統計情報記憶手段に記憶される統計情報とを比較して、入力されたアクセスデータが正常であるか否かを判定する統計的異常判定手段とを備える異常データ検出装置である。
【００１１】
この様な本発明によれば、予め記憶されていないアクセスデータに対しても、正常なアクセスデータであるか否かを判断することができる。
【発明の効果】
【００１２】
本発明によれば、予め記憶されていないアクセスデータに対しても、正常なアクセスデータであるか否かを判断する異常データ検出装置及び異常データ検出プログラムを提供することができる。
【発明を実施するための最良の形態】
【００１３】
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。
【００１４】
［第１の実施の形態］
［異常データ検出装置］
図１を参照して、本発明の第１の実施の形態に係る異常データ検出装置１を説明する。
【００１５】
本発明の第１の実施の形態に係る異常データ検出装置１は、接続されるネットワークを介して入力される既知の異常データを検出するとともに、未知の異常データを検出する。異常データ検出装置１は、図１に示すように、データ解析部１１、アクセス判定部１２、統計的異常判定部１３、統計処理実行部１４、統計情報テーブル１５および特徴量蓄積テーブル１６を有している。
【００１６】
具体的には、異常データ検出装置１は、インターネットやイントラネットなどの第１のネットワークセグメント２から入力した図示しない第１のネットワークセグメント２に接続されたクライアントコンピュータから出力された第２のネットワークセグメント３に接続された図示しないサーバ（Ｗｅｂサーバ）に対するアクセスデータが正常なアクセスデータである場合、入力したアクセスデータを第２のネットワークセグメント３に通過させる。一方、異常データ検出装置１は、入力したアクセスデータが異常なアクセスデータである場合、アクセスデータを第２のネットワークセグメント３に通過させることなく破棄するか、アクセスデータに異常なアクセスデータである可能性がある旨の付加情報を添付し、第２のネットワークセグメント３へ通過させる。
【００１７】
ここで、アクセスデータは、例えばＨＴＴＰリクエスト、ＳＭＴＰリクエストなどの通信プロトコルに基づく情報である。異常データ検出装置１は、例えば一般的なコンピュータに異常データ検出プログラムなどのソフトウェアプログラムがインストールされ、そのソフトウェアプログラムが中央処理制御装置において実行されることにより実現される。
【００１８】
図２に示すように、本発明の第１の実施の形態に係る異常データ検出装置１は、中央処理制御装置１０１、ＲＯＭ（Read Only Memory）１０２、ＲＡＭ（Random Access Memory）１０３及び入出力インタフェース１０９が、バス１１０を介して接続されている。入出力インタフェース１０９には、入力装置１０４、表示装置１０５、通信制御装置１０６、記憶装置１０７及びリムーバブルディスク１０８が接続されている。
【００１９】
中央処理制御装置１０１は、入力装置１０４からの入力信号に基づいてＲＯＭ１０２から異常データ検出装置１を起動するためのブートプログラムを読み出して実行し、更に記憶装置１０７に記憶されたオペレーティングシステムを読み出す。更に中央処理制御装置１０１は、入力装置１０４や通信制御装置１０６などの入力信号に基づいて、各種装置の制御を行ったり、ＲＡＭ１０３や記憶装置１０７などに記憶されたプログラム及びデータを読み出してＲＡＭ１０３にロードするとともに、ＲＡＭ１０３から読み出されたプログラムのコマンドに基づいて、データの計算又は加工など、後述する一連の処理を実現する処理装置である。
【００２０】
入力装置１０４は、操作者が各種の操作を入力するキーボード、マウスなどの入力デバイスにより構成されており、操作者の操作に基づいて入力信号を作成し、入出力インタフェース１０９及びバス１１０を介して中央処理制御装置１０１に送信される。表示装置１０５は、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイなどであり、中央処理制御装置１０１からバス１１０及び入出力インタフェース１０９を介して表示装置１０５において表示させる出力信号を受信し、例えば中央処理制御装置１０１の処理結果などを表示する装置である。通信制御装置１０６は、ＬＡＮカードやモデムなどの装置であり、異常データ検出装置１をインターネットやＬＡＮなどの通信ネットワークに接続する装置である。通信制御装置１０６を介して通信ネットワークと送受信したデータは入力信号又は出力信号として、入出力インタフェース及びバス１１０を介して中央処理制御装置１０１に送受信される。
【００２１】
記憶装置１０７は磁気ディスク装置であって、中央処理制御装置１０１で実行されるプログラムやデータが記憶されている。リムーバブルディスク１０８は、光ディスクやフレキシブルディスクのことであり、ディスクドライブによって読み書きされた信号は、入出力インタフェース１０９及びバス１１０を介して中央処理制御装置１０１に送受信される。
【００２２】
本発明の第１の実施の形態に係る異常データ検出装置１の記憶装置１０７には、異常データ検出プログラムが記憶されるとともに、統計情報テーブル１５および特徴量蓄積テーブル１６が記憶される。また、異常データ検出プログラムが異常データ検出装置１の中央処理制御装置１０１に読み込まれ実行されることによって、データ解析部１１、アクセス判定部１２、統計的異常判定部１３および統計処理実行部１４が異常データ検出装置１に実装される。
【００２３】
データ解析部１１は、接続される第１のネットワークセグメント２からアクセスデータが入力されると、入力されたアクセスデータに含まれるパラメータ値に基づいて、パラメータの識別子毎に、異常データの特徴を示す特徴量を算出する。また、データ解析部１１は算出した特徴量をアクセスデータとともに出力する。
【００２４】
例えばデータ解析部１１は、図３に示すようなＨＴＴＰリクエストのアクセスデータを解析してパラメータ値の特徴量を算出する。図３に示すアクセスデータを入力して解析する場合、データ解析部１１は、ＣＧＩ変数名１である変数「Ｐ」のパラメータ値として数値である「１２３」を切り出す。また、ＣＧＩ変数名２である変数「Ｑ」のパラメータ値としてＡＳＣＩＩ文字である「ｕｓｅｒ」、ＣＧＩ変数名３である変数「Ｒ」のパラメータ値として数値である「４５６」を切り出す。
【００２５】
各ＣＧＩ変数名の値を切り出すと、データ解析部１１は、切り出した値に基づいて特徴量を算出する。
【００２６】
アクセス判定部１２は、統計情報テーブル１５を読み出して、入力されたアクセスデータに含まれるパラメータの識別子と関連付けられる過去のアクセス回数を判定する。
【００２７】
ここでは、ＣＧＩ名とＣＧＩ変数名との組み合わせをパラメータの識別子とする。アクセス判定部１２は、具体的には、データ解析部１１から出力されたアクセスデータ及び特徴量を入力すると、統計情報テーブル１５に判定の対象とするアクセスデータに含まれるパラメータの識別子であるＣＧＩ変数及びＣＧＩ名の組み合わせに関連付けられる統計情報のアクセス回数を参照し、過去にこのパラメータ識別子に対してアクセスが存在するか否かを判定する。また、アクセス判定部１２は、アクセスが存在するか否かの判定結果をアクセスデータ及び特徴量とともに出力する。
【００２８】
統計的異常判定部１３は、アクセス判定部１２で判定された結果に基づいて、データ解析部１１で算出された特徴量と統計情報テーブル１５に記憶される統計情報とを比較して、入力されたアクセスデータが正常であるか否かを判定する。
【００２９】
まず、統計異常判定部１３は、アクセス判定部１２からアクセスデータ、特徴量及び判定結果を入力すると、アクセス判定部１２で過去にこのパラメータ識別子に対してアクセスが存在すると判定されたとき、データ解析部１１で算出された特徴量が「０」である場合にこのパラメータ値を正常と判断し、特徴量が「０」でない場合にこのパラメータ値を異常と判断する。
【００３０】
また、アクセス判定部１２で過去にこのパラメータの識別子に対してアクセスが存在しないと判定されたとき、アクセスデータの特徴量に基づいた統計分布が算出された統計的に異常とみなしうる閾値を利用してアクセスデータが正常であるか否かを判定する。たとえば、パラメータ値について求められた特徴量が式１のｆ（ｘ）の範囲内の場合、このパラメータ値を正常であると判定し、範囲外のときにパラメータ値であると判定する。  
μmn−Ａmn×σmn≦ｆ（ｘ）mn≦μmn＋Ａmn×σmn  ・・・（式１）
【００３１】
式１における平均値μと標準偏差σは、アクセスデータの特徴量の統計を取ることにより、図７に示すように決定される。閾値係数Ａは、統計処理実行部１４によって設定される値である。この閾値係数Ａは、本発明の実施例１に係る異常データ検出装置１では、「数値」、「メタキャラクタ」及び「バイナリコード」に対して、それぞれのパラメータ値に応じて定められる値である。具体的には、２〜１１程度の値とするのが実用上好ましいが、これに限られず、最良の値が設定される。
【００３２】
アクセスデータに含まれる全てのパラメータ値について正常と判定されると、統計的異常判定部１３は、アクセスデータを正常なアクセスデータであると判定する。また、異常なパラメータ値が含まれるアクセスデータは異常なアクセスデータであると判定する。
【００３３】
統計処理実行部１４は、データ解析部１１において算出された特徴量が特徴量蓄積テーブル１６に記憶されると、特徴量蓄積テーブル１６に記憶された特徴量の平均値と標準偏差とアクセス回数とを含む統計情報を生成する。また、統計処理実行部１４は、生成された統計情報を  用いてパラメータの識別子毎に統計情報テーブル１５に記憶されている統計情報を再計算して更新する。
【００３４】
統計情報テーブル１５は、パラメータの識別子をキーとして、特徴量の平均値、標準偏差及びアクセス回数を含む統計情報を記憶している。また、統計情報テーブル１５は、新しいアクセスが特徴量蓄積テーブル１６に追加される度に統計処理実行部１４の制御により更新される。
【００３５】
統計情報テーブル１５は、例えば図４に示すように、各ＣＧＩ名とＣＧＩ変数名の組み合わせであるパラメータの識別子について統計情報を記憶する。図４（ａ）に示す例では、統計情報テーブル１５は、ＣＧＩ名とＣＧＩ変数名の組み合わせについて統計情報に対応するポインタ変数が記述されている。
【００３６】
たとえば、ＣＧＩ名ｂ及びＣＧＩ変数名２と関連付けられる統計情報２ｂとして記憶されるポインタ変数は、図４（ｂ）に示す統計情報２ｂと関連付けられている。図４（ｂ）に示す統計情報２ｂは、「数値」、「メタキャラクタ」及び「バイナリコード」に対して、特徴量に基づいて求められた「平均値」及び「標準偏差」を記憶している。また、統計情報２ｂは、このＣＧＩ名とＣＧＩ変数名の組み合わせであるパラメータの識別子に対する「アクセス回数」を記憶している。なお、統計情報は、特徴量蓄積テーブル１６に新たに特徴量が蓄積される度に、統計処理実行部１４により、更新される。
【００３７】
特徴量蓄積テーブル１６は、パラメータの識別子をキーとして、データ解析部１１で算出された特徴量を蓄積して記憶している。
【００３８】
具体的には図５にその一例を示すように特徴量蓄積テーブル１６はＷｅｂサーバに対するアクセスデータとして入力されたパケットデータに含まれているＣＧＩ変数名の値（パラメータ）から求められた特徴量をＣＧＩ変数名に対する特徴量として記憶している。図５は、アクセスデータとして、図６に示す第１〜第４のパケットデータが入力された場合に、ＣＧＩ変数の「数値」、「メタキャラクタ」及び「バイナリコード」について求められた特徴量である。「メタキャラクタ」とは、ＨＴＴＰ等の通信プロトコルにおいて特殊な意味を持つ文字のことである。
【００３９】
図６（ａ）は、第１のパケットデータであり、ＣＧＩ変数名２の「Ｑ」の値は数値「１２３４５」である。また、図６（ｂ）は、第２のパケットデータであり、ＣＧＩ変数名２の「Ｑ」の値はＡＳＣＩＩ文字「ａｂｃｄｅ」である。さらに、図６（ｃ）は、第３のパケットデータであり、ＣＧＩ変数名２の「Ｑ」の値はメタキャラクタ「”‘；」である。さらに、図６（ｄ）は、第４のパケットデータであり、ＣＧＩ変数名２の「Ｑ」値はバイナリコード「△△△△」である。なお、この「△」はバイナリコードを仮想的に図示している。また、ここで「ｃｇｉ−ｂｉｎ／ｐｈｆ」は「ＣＧＩ名ｂ」である。
【００４０】
このように、第１〜第４のパケットデータに含まれるＣＧＩ変数名２である「Ｑ」の値を利用して、パラメータ値における「数値」、「メタキャラクタ」及び「バイナリコード」の総数を特徴量として特徴量蓄積テーブル１６に記憶する。
【００４１】
例えば、第１のパケットデータの「Ｑ」のパラメータ値に「数値」が含まれる数は「５」であり、「メタキャラクタ」及び「バイナリコード」は含まれていない。そのため、第１のパケットデータの特徴量は、それぞれ「５、０、０」となる。また、第２のパケットデータの「Ｑ」のパラメータ値には「数値」、「メタキャラクタ」及び「バイナリコード」のいずれも含まれていないため、第２のパケットデータの特徴量は、それぞれ「０、０、０」となる。同様に第３のパケットデータでは「メタキャラクタ」が３つ含まれているから特徴量は「０、３、０」となり、第４のパケットデータでは「バイナリコード」が４つ含まれているから特徴量は「０、０、４」となり、図５に示すように特徴量蓄積テーブル１６に蓄積されている。
【００４２】
なお、図４（ｂ）に示した統計情報２ｂは、この図５に示した特徴量蓄積テーブル１６に蓄積されている特徴量に基づいて生成されたものである。例えば、「数値」の「平均値」は、第１〜第４のパケットデータの「数値」の特徴量の合計である「５」をアクセス回数「４」で割ることにより求めている。また、「メタキャラクタ」と「バイナリコード」に対する「平均値」も第１から第４のパケットデータの「メタキャラクタ」と「バイナリコード」の特徴量の合計をアクセス回数「４」で割ることにより求めている。また、「標準偏差」は、第１から第４のパケットデータの特徴量および平均値を利用して求める。
【００４３】
［異常データ検出処理］
次に、図８に示すフローチャートを参照して、本発明の第１の実施の形態に係る異常データ検出装置１における異常データ検出処理を説明する。
【００４４】
異常データ検出装置１のデータ解析部１１に、異常データ検出装置１と接続されるネットワークセグメント２を介してアクセスデータが入力されると（Ｓ００１）、データ解析部１１は、アクセスデータを解析して特徴量を算出し、入力したアクセスデータと共に出力する（Ｓ００２）。
【００４５】
アクセスデータは図３に示したようなＨＴＴＰリクエストのアクセスデータである。特徴量の算出は、図６に示したようにデータの「数値」、「メタキャラクタ」及び「バイナリコード」の各文字種類についての数を求めることにより、算出される。
【００４６】
アクセス判定部１２は、データ解析部１１からアクセスデータとともにアクセスデータに基づいて算出された特徴量を入力すると（Ｓ００３）、アクセス判定部１２は、データ解析部１１から特徴量とともに入力したアクセスデータについて、アクセスデータに含まれるＣＧＩ名及びＣＧＩ変数名について、統計情報テーブル１５のアクセス回数を参照して過去にアクセスされたか否か判定し、判定結果としてアクセスの有無をアクセスデータ及び特徴量とともに出力する（Ｓ００４）。このステップＳ００４における判定処理については後に詳述する。
【００４７】
統計的異常判定部１３は、アクセス判定部１２からアクセスの有無の判定結果及びアクセスデータを入力すると、アクセスデータに含まれている全てのＣＧＩ変数のパラメータ値が正常であるか否かを判断する（Ｓ００５）。例えば、図３に示したアクセスデータの場合、ＣＧＩ名変数１〜３のパラメータ値の全てが「正常」であるか否かを判断する。
【００４８】
アクセスデータに含まれていた全てのＣＧＩ変数が「正常」である場合、統計的異常判定部１３は、アクセスデータを「正常」であると判定する（Ｓ００６）。一方、アクセスデータに「異常」と判定されたＣＧＩ変数が一つでも含まれていた場合、統計的異常判定部１３は、アクセスデータを「異常」と判断する（Ｓ００７）。
【００４９】
ステップＳ００６において、統計的異常判定部１３が入力されたアクセスデータを「正常」であると判断すると、統計的異常判定部１３は、ステップＳ００２で算出された特徴量を記憶させて特徴量蓄積テーブル１６を更新する。（Ｓ００８）。
【００５０】
ステップＳ００８において特徴量蓄積テーブル１６が更新されると、統計処理実行部１４は特徴量蓄積テーブル１６を読み出して統計情報を再計算するとともに、算出した統計情報を統計情報テーブル１５に記憶させる（Ｓ１０９）。
【００５１】
［判定処理］
次に、図９に示すフローチャートを用いて、ステップＳ００４における判定処理について説明する。
【００５２】
アクセス判定部１２は、データ解析部１１からアクセスデータおよび特徴量を入力すると、アクセスデータに含まれる１つのＣＧＩ変数名を選択する（Ｓ１０１）。
【００５３】
続いて、アクセス判定部１２は、選択されたＣＧＩ名とＣＧＩ変数名との組み合わせであるパラメータの識別子で識別される統計情報について統計情報テーブル１５のアクセス回数を参照し、過去にアクセスがされたか否かを判定する（Ｓ１０２）。
【００５４】
ステップＳ１０２で、選択されたＣＧＩ名とＣＧＩ変数名との組み合わせについて過去にアクセスがされていた場合（Ｓ１０２でＹＥＳ）、統計的異常判定部１３は、図８に示したステップＳ００２で算出された特徴量が「０」であるか否かを判定する（Ｓ１０３）。上述した例では、「数値」、「メタキャラクタ」及び「バイナリコード」について特徴量を算出しているが、このように複数の文字種類について特徴量を算出した場合、その全ての特徴量が「０」の場合、その特徴量を「０」とする。
【００５５】
ステップＳ００２で算出された特徴量が「０」である場合、統計的異常判定部１３は、対象としているＣＧＩ変数名のパラメータ値について「正常」であると判定する（Ｓ１０４）。一方、特徴量が「０」でない場合、統計的異常判定部１３は、ＣＧＩ変数名のパラメータ値について「異常」であると判定する（Ｓ１０５）。
【００５６】
具体的には、図５では、第１のパケットデータは「数値」のパラメータ値の特徴量が「０」でないため、パラメータ値は「異常」と判定される。また、第２のパケットデータについては「数値」、「メタキャラクタ」及び「バイナリコード」のパラメータ値についての特徴量が全て「０」であるため、パラメータ値は「正常」と判定される。さらに、第３及び第４のパケットデータのパラメータ値は「異常」と判定される。
【００５７】
また、ステップＳ１０２で選択されたＣＧＩ名とＣＧＩ変数名との組み合わせについて過去にアクセスがされていない場合（Ｓ１０２でＮＯ）、統計的異常判定部１３は、ステップＳ００２で算出された特徴量が規定の範囲内であるか否かを判定する（Ｓ１０６）。具体的にはステップＳ００２で算出された特徴量について求められた標準偏差が、図７で示す閾値の範囲内である場合、統計的異常判定部１３は、規定の範囲内であると判定する。
【００５８】
統計的異常判定部１３は、算出された特徴量が規定の範囲内であると判定された場合、ＣＧＩ変数名の値について「正常」と判定し（Ｓ１０７）、規定の範囲内でないと判定された場合、ＣＧＩ変数名の値について「異常」と判定する（Ｓ１０８）。
【００５９】
全てのＣＧＩ変数について「正常」または「異常」の判定がされていない場合、ステップＳ１０１に戻り（Ｓ１０９でＮＯ）、全てのＣＧＩ変数名の値について判定処理がされた場合（Ｓ１０９でＹＥＳ）、判定処理を終了する（Ｓ１１０）。
【００６０】
上述した第１の実施の形態に係る異常データ検出装置１は、初めて現れたＣＧＩ名及びＣＧＩ変数名を含むアクセスデータについて、このＣＧＩ名及びＣＧＩ変数名を識別子とする値に基づいて特徴量を算出し、算出された特徴量に基づいて正常または異常の判定をする。このように予め記憶されないアクセスデータを検出することにより、未知の攻撃を検知することができる。
【００６１】
［第２の実施の形態］
次に、本発明の第２の実施の形態に係る異常データ検出装置１ａについて説明する。
【００６２】
図１０に示すように、第２の実施の形態に係る異常データ検出装置１ａは、第１の実施の形態に係る異常データ検出装置１と比較して、アクセス判定部１２に替えてアクセス判定部１７を有している点で異なる。なお、第１の実施の形態に係る異常データ検出装置１と同一の構成については同一の番号を付して説明を省略する。
【００６３】
アクセス判定部１７は、ＣＧＩ判定部１７ａ及びＣＧＩ変数判定部１７ｂを有している。
【００６４】
ＣＧＩ判定部１７ａは、入力されたアクセスデータに含まれるＣＧＩ名及びＣＧＩ変数と対応する統計情報が統計情報テーブル１５に存在しているか否かを判定する。
【００６５】
ＣＧＩ変数判定部１７ｂは、ＣＧＩ判定部１７ａで統計情報が存在していることを判定した場合、統計情報テーブル１５を読み出して入力されたアクセスデータに含まれるＣＧＩ名及びＣＧＩ変数と関連付けられる過去のアクセス回数を判定する。
【００６６】
なお、ＣＧＩ判定部１７ａで該当するパラメータ識別子の統計情報が存在していないと判定された場合、統計的異常判定部１３は、このパラメータ値を含むアクセスデータを異常と判定する。
【００６７】
なお、異常データ検出装置１ａは、実際の運用が開始されるまで、学習モードとして、統計情報テーブル１５に統計情報を蓄積する。そのため、たとえば、異常データ検出装置１aは運用初期には異常データの検出は実行せず、学習モードにおいて一定のアクセス回数があり統計情報テーブル１５に一定の統計情報が蓄積されるまで、あるいは、所定の時間が経過して学習モードにおいて統計情報テーブル１５に統計情報が蓄積されるまでは、企業内等の限られた範囲で使用され、異常データ検出は行わずに統計情報の蓄積のみを行うのが好ましい。これは、運用初期においては、統計情報テーブル１５が構成されておらず、入力されるアクセスデータの異常を適切に検出することができず、誤検出がされる可能性が高いためである。異常データ検出装置１ａは、たとえば、一定の数のアクセスデータが入力されることにより、あるいは、所定時間が経過することにより、統計情報テーブル１５にアクセスデータの異常を検出するために十分な統計情報を蓄積したと判断すると、学習モードを終了する。また、異常データ検出装置１ａは学習モードを終了すると、入力されるアクセスデータの異常の検出の実行を開始する。
【００６８】
図１１に示すのは、第２の実施の形態に係る異常データ検出装置１ａにおける異常データ検出処理を説明するフローチャートである。なお、図８に示したフローチャートと同一の処理をするステップについては同一の番号を付して説明を省略する。
【００６９】
図１１において、図８に示したフローチャートと異なる点は、ステップＳ００２においてデータ解析部１１で算出された特徴量を、ＣＧＩ判定部１７ａがアクセスデータとともに入力すると（Ｓ２０１）、ＣＧＩ判定部１７ａがアクセスデータに含まれているパラメータの識別子であるＣＧＩ名とＣＧＩ変数名との組み合わせが統計情報テーブル１５に含まれているか否かを判定する（Ｓ２０２）点である。
【００７０】
ＣＧＩ判定部１７ａが、データ解析部１１から入力されたアクセスデータに含まれるパラメータの識別子が統計情報テーブル１５に存在すると判定した場合（Ｓ２０２でＹＥＳ）、ステップＳ００４の処理に進み、このパラメータの識別子に対するパラメータ値が「正常」であるか又は「異常」であるかの判定処理がされる。このステップＳ００４における処理は図９に示す処理である。
【００７１】
一方、ＣＧＩ判定部１７ａが、データ解析部１１から入力されたアクセスデータに含まれるパラメータの識別子が統計情報テーブル１５に存在しないと判定された場合（Ｓ２０２でＹＥＳ）、ステップＳ００７の処理に進み、統計的異常判定部１３は、入力されたアクセスデータを「異常」と判定する。
【００７２】
上述した第２の実施の形態に係る異常データ検出装置１ａは、統計情報テーブルの内容を追加して更新することで、ＷｅｂサーバにおけるＣＧＩ名の追加に追従することができる。また、統計情報テーブルに予め記憶されているＣＧＩ名を含むアクセスデータのみを判断の対象とすることで、処理速度を向上させることが可能となる。さらに、誤検知率の増大を抑制し、異常なアクセスデータの検知率を向上させることができる。
【００７３】
なお、上記各実施形態において、ＣＧＩ変数名のパラメータとして「数値」、「メタキャラクタ」、「バイナリコード」の３つについて統計情報を作成したが、「ＡＳＣＩＩ文字」を追加しても良い。
【００７４】
上記のように、本発明の第１および第２の実施の形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなる。
【００７５】
本発明はここでは記載していない様々な実施の形態等を含むことは勿論である。従って、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【図面の簡単な説明】
【００７６】
【図１】本発明の第１の実施の形態に係る異常データ検出装置のブロック構成図である。
【図２】本発明の第１の実施の形態に係る異常データ検出装置の構成図である。
【図３】本発明の第１の実施の形態に係る異常データ検出装置が入力するアクセスデータの一例である。
【図４】本発明の第１の実施の形態に係る異常データ検出装置で記憶される統計情報テーブルの一例である。
【図５】本発明の第１の実施の形態に係る異常データ検出装置で記憶される特徴量蓄積データの一例である。
【図６】本発明の第１の実施の形態に係る異常データ検出装置が入力するアクセスデータの一例である。
【図７】本発明の第１の実施の形態に係る異常データで異常の判定に用いられる特徴量の一例である。
【図８】本発明の第１の実施の形態に係る異常データ検出装置における異常データ検出処理を説明するフローチャートである。
【図９】本発明の第１の実施の形態に係る異常データ検出装置における判定処理を説明するフローチャートである。
【図１０】本発明の第２の実施の形態に係る異常データ検出装置のブロック構成図である。
【図１１】本発明の第２の実施の形態に係る異常データ検出装置における異常データ検出処理を説明するフローチャートである。
【符号の説明】
【００７７】
１，１ａ…異常データ検出装置
２…第１のネットワークセグメント
３…第２のネットワークセグメント
１１…データ解析部
１２…アクセス判定部
１３…統計的異常判定部
１４…統計処理実行部
１５…統計情報テーブル
１６…特徴量蓄積テーブル
１０１…中央処理制御装置
１０２…ＲＯＭ
１０３…ＲＡＭ
１０４…入力装置
１０５…表示装置
１０６…通信制御装置
１０７…記憶装置
１０８…リムーバブルディスク
１０９…入出力インタフェース
１１０…バス
【図１】
2006133992.tif 000003
【図２】
2006133992.tif 000004
【図３】
2006133992.tif 000005
【図４】
2006133992.tif 000006
【図５】
2006133992.tif 000007
【図６】
2006133992.tif 000008
【図７】
2006133992.tif 000009
【図８】
2006133992.tif 000010
【図９】
2006133992.tif 000011
【図１０】
2006133992.tif 000012
【図１１】
2006133992.tif 000013