(57)【要約】  情報処理装置に対する攻撃か否かの判定基準となるプロファイルを保存するための記憶部（１２）と、アクセスリクエストから各パラメタを抽出するパラメタ抽出部（３１）と、各パラメタについて、パラメタ値の部分毎に予め定義された文字列クラスと比較し、一致する長さが最長になる文字列クラスにその部分を置換し、置換した順に並べたクラス列に変換する文字列クラス変換部（３２）と、学習データとして正常なデータのアクセスリクエストについての上記クラス列の集合のうち、出現頻度が所定値以上のクラス列をプロファイルとして記憶部（１２）に保存するプロファイル保存部（４３）と、分析対象のアクセスリクエストについて上記クラス列とプロファイルとの類似度にしたがって攻撃の有無を判定する異常検知部（５３）と、を有する。
2015186662.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続される情報処理装置からアクセスログを収集して分析するログ分析装置であって、
分析対象データが前記情報処理装置に対する攻撃を示すものであるか否かを判定するための基準となるプロファイルを保存するための記憶部と、
前記アクセスログのリクエストから各パラメタを抽出するパラメタ抽出部と、
前記パラメタ抽出部によって抽出された各パラメタについて、パラメタ値を先頭文字から部分毎に予め定義された文字列クラスと比較し、該文字列クラスとの一致が最長になる文字列クラスに該部分を置換し、置換した文字列クラスを順に並べたクラス列に変換するクラス変換部と、
学習データとして正常なデータの前記アクセスログについて前記パラメタ抽出部および前記クラス変換部によって求められた前記クラス列の集合のうち、出現頻度が所定値以上のクラス列を前記プロファイルとして前記記憶部に保存するプロファイル保存部と、
前記分析対象データの前記アクセスログについて前記パラメタ抽出部および前記クラス変換部によって求められた前記クラス列と前記プロファイルとの類似度を計算し、該類似度にしたがって前記情報処理装置への攻撃が発生したか否かを判定する異常検知部と、
を有するログ分析装置。
【請求項２】
ネットワークに接続される情報処理装置に対する攻撃を検知する攻撃検知装置であって、
前記情報処理装置へのアクセスリクエストが該情報処理装置を攻撃するものであるか否かを判定するための基準となるプロファイルを保存するための記憶部と、
前記アクセスリクエストから各パラメタを抽出するパラメタ抽出部と、
前記パラメタ抽出部によって抽出された各パラメタについて、パラメタ値を先頭文字から部分毎に予め定義された文字列クラスと比較し、該文字列クラスとの一致が最長になる文字列クラスに該部分を置換し、置換した文字列クラスを順に並べたクラス列に変換するクラス変換部と、
学習データとして正常なデータの前記アクセスリクエストについて前記パラメタ抽出部および前記クラス変換部によって求められた前記クラス列の集合のうち、出現頻度が所定値以上のクラス列を前記プロファイルとして前記記憶部に保存するプロファイル保存部と、
分析対象の前記アクセスリクエストについて前記パラメタ抽出部および前記クラス変換部によって求められた前記クラス列と前記プロファイルとの類似度を計算し、該類似度にしたがって前記情報処理装置への攻撃が発生したか否かを判定する異常検知部と、
を有する攻撃検知装置。
【請求項３】
請求項２に記載の攻撃検知装置において、
前記プロファイル保存部は、
前記クラス列の集合のうち、前記出現頻度が最大となる１つのクラス列を前記プロファイルとして前記記憶部に保存する、攻撃検知装置。
【請求項４】
請求項２に記載の攻撃検知装置において、
前記プロファイル保存部は、
前記クラス列の集合のうち、前記出現頻度が所定値以上となる複数のクラス列を前記プロファイルとして前記記憶部に保存する、攻撃検知装置。
【請求項５】
請求項２に記載の攻撃検知装置において、
前記プロファイル保存部は、
前記クラス列の集合が所定の条件を満たす場合、該クラス列の集合に含まれる全ての前記文字列クラスのユニークな集合を前記プロファイルとして前記記憶部に保存し、
前記異常検知部は、
前記クラス列の集合が所定の条件を満たす場合、前記類似度による判定の際、分析対象データのクラス列の前記文字列クラスのユニークな集合が前記プロファイルに全て含まれているか否かで攻撃が発生したか否かを判定し、
前記クラス列の集合が所定の条件を満たさない場合、前記分析対象データの前記クラス列と前記プロファイルとの前記類似度を計算する、攻撃検知装置。
【請求項６】
請求項４に記載の攻撃検知装置において、
前記プロファイル保存部は、
前記複数のクラス列が所定の条件を満たす場合、該複数のクラス列に含まれる全ての前記文字列クラスのユニークな集合を前記プロファイルとして前記記憶部に保存し、
前記異常検知部は、
前記複数のクラス列の集合が所定の条件を満たす場合、前記類似度による判定の際、分析対象データのクラス列の前記文字列クラスのユニークな集合が前記プロファイルに全て含まれているか否かで攻撃が発生したか否かを判定し、
前記複数のクラス列の集合が所定の条件を満たさない場合、前記分析対象データのクラス列と前記プロファイルに含まれる前記複数のクラス列のそれぞれとの前記類似度のうち、最大値の類似度を用いて判定する、攻撃検知装置。
【請求項７】
ネットワークに接続される情報処理装置に対する攻撃を検知する攻撃検知装置による攻撃検知方法であって、
学習データとして正常なデータの前記情報処理装置へのアクセスリクエストから各パラメタを抽出し、各パラメタについて、パラメタ値を先頭文字から部分毎に予め定義された文字列クラスと比較し、該文字列クラスとの一致が最長になる文字列クラスに該部分を置換し、置換した文字列クラスを順に並べたクラス列に変換し、該クラス列の集合のうち、出現頻度が所定値以上のクラス列を、分析対象データが前記情報処理装置に対する攻撃を示すものであるか否かを判定するための基準となるプロファイルとして記憶部に保存し、
前記分析対象データの前記アクセスリクエストからパラメタを抽出し、
抽出したパラメタの値を前記文字列クラスに基づいて前記クラス列に変換し、
前記クラス列と前記プロファイルとの類似度を計算し、
前記類似度にしたがって前記情報処理装置への攻撃が発生したか否かを判定する、攻撃検知方法。
【請求項８】
ネットワークに接続される情報処理装置に対する攻撃を検知するコンピュータに、
学習データとして正常なデータの前記情報処理装置へのアクセスリクエストから各パラメタを抽出し、各パラメタについて、パラメタ値を先頭文字から部分毎に予め定義された文字列クラスと比較し、該文字列クラスとの一致が最長になる文字列クラスに該部分を置換し、置換した文字列クラスを順に並べたクラス列に変換し、該クラス列の集合のうち、出現頻度が所定値以上のクラス列を、分析対象データが前記情報処理装置に対する攻撃を示すものであるか否かを判定するための基準となるプロファイルとして記憶部に保存する手順と、
前記分析対象データの前記アクセスリクエストからパラメタを抽出する手順と、
抽出したパラメタの値を前記文字列クラスに基づいて前記クラス列に変換する手順と、
前記クラス列と前記プロファイルとの類似度を計算する手順と、
前記類似度にしたがって前記情報処理装置への攻撃が発生したか否かを判定する手順とを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークセキュリティに関する技術であり、特に、ＷｅｂサーバおよびＷｅｂアプリケーションに対して攻撃を行うアクセスに対して、アクセスを分析し、検知する技術に関する。
【背景技術】
【０００２】
Ｗｅｂを使用したシステムはＥＣ（Electronic  Commerce）をはじめ、社会の様々な所で利用されている。しかし、そのようなシステムは一般利用者が使用する基盤であるが故に、Ｗｅｂサーバは常に攻撃の危険性に晒されている。Ｗｅｂサーバに対して攻撃を行うアクセスを検知する方法が種々検討されている。
攻撃を検知する方式として、ＷＡＦ（Web  Application  Firewall）でアクセス内容を分析する方式と、Ｗｅｂサーバやアプリケーションサーバに残るログを分析する方式が一般的である。攻撃検知方法には、シグネチャ型とアノマリ型の２種類の検知方法が知られている。
図１７は従来の攻撃検知方法を説明するための図である。図１７（ａ）はシグネチャ型の攻撃検知方法を示す図であり、図１７（ｂ）はアノマリ型の攻撃検知方法を示す図である。
シグネチャ型は、図１７（ａ）に示すように、攻撃コードから攻撃を判定できる部分を抽出し、パターンに一致したリクエストを攻撃として検知するものである。ＷｅｂＡＰ（Web  Application）に存在する脆弱性が増加したため、１つ１つの脆弱性について対策を行うシグネチャ型検知で攻撃を防ぐことが困難になった。そのため、ＷｅｂＡＰに対して通常リクエストからプロファイルを作成し、異常を検知するアノマリ検知に対する研究が行われてきた。
アノマリ型は、図１７（ｂ）に示すように、正常なリクエストからプロファイルを作成し、プロファイルとの類似度を計算し、異なるリクエストを異常として検知するものである（非特許文献１および２参照）。以下では、プロファイルを作成する処理を学習処理と称し、プロファイルを用いて、分析対象のリクエストが攻撃か否かを判定する処理を検知処理と称する。【０００３】
非特許文献１および２に開示された方法では、ＷｅｂＡＰのパス部を元にそのパス部が持つパラメタに対していくつかの特徴量をもつプロファイルを作成する。プロファイルの作成方法を説明する。
ここでは、検知結果に影響が大きいと考えられる、文字列の構造と文字列のクラスの特徴量についてのみ考える。図１８はプロファイルの特徴量を説明するための図である。
文字列の構造を特徴量とする場合を従来技術１とし、文字列のクラスを特徴量とする場合を従来技術２として、これらの技術を簡単に説明する。【０００４】
はじめに、従来技術１による、文字列構造を特徴量としたプロファイル作成方法を説明する。図１９は従来技術１の状態遷移モデルの作成方法を説明するための図である。
学習処理の手順は、次の通りである。
（手順１）出現する文字を状態とし、全パラメタ値を列挙した状態遷移モデルを作成する。
（手順２）初期状態（ｓ）から同じ状態を結合し、結合できなくなるまで繰り返し、出来上がった状態遷移モデルをプロファイルとする（状態遷移モデルの作り方は非特許文献３参照）。
なお、モデルを作るときは状態遷移の確率を考慮に入れなければいけないが、従来技術１では検知時に確率を考慮しないため遷移確率を考慮しないモデルを作成することと同等と考える。
検知処理では、文字列がプロファイル（状態遷移モデル）から出力不可能であれば異常と判定する。【０００５】
次に、従来技術２による、文字列型を特徴量としたプロファイル作成方法を説明する。図２０は従来技術２の異常判定方法を説明するための図である。
学習処理の手順は、次の通りである。
（手順１）文字列クラスをあらかじめ定義する（定義方法の一例は非特許文献４を参照）。
（手順２）パラメタ値全体に対してそのクラスに当てはまるかを判定し、当てはまるクラスをそのパラメタに対するプロファイルとしてそのクラス名を保持する。
検知処理では、パラメタ値全体をクラスに変換し、それがプロファイルのクラスと一致しない場合は異常と判定する。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Kruegel,  Christopher,  and  Giovanni  Vigna,  "Anomaly  Detection  of  Web-based  Attacks",  Proceedings  of  the  10th  ACM  conference  on  Computer  and  communications  security,  ACM,  2003.
【非特許文献２】ModSecurity,  SpiderLabs，インターネット＜ＵＲＬ：http://  blog.  spiderlabs.com/2011/02/modsecurity-dvanced-topic-of-the-week-real-time-  application-profiling.  html＞,  2012
【非特許文献３】Stolcke,  Andreas,  and  Stephen  Omohundro,  "Hidden  Markov  model  induction  by  Bayesian  model  merging",  Advances  in  neural  information  processing  systems  (1993):  11-11.
【非特許文献４】OWSP  Validation  Regex  Repository，［平成２６年５月２６日検索］,インターネット＜ＵＲＬ：  https://www.owasp.org/index.php/  OWASP_Validation_  Regex_Repository＞
【発明の概要】
【発明が解決しようとする課題】
【０００７】
図２１を参照して、従来技術の課題を説明する。
従来技術１では、図２１の「課題１」に示すように、学習データに現われる各文字を状態として状態遷移モデルを作成するため学習データにないデータ（学習データが少ない場合）では誤検知が多く発生するという問題がある。
従来技術２では、図２１の「課題２」に示すように、１つのパラメタに対して１つの文字列クラスしか作成しないため、複雑な構造を持つパラメタ（例えば、予め定義されている文字列クラスが複数個連接、複合したもの）の場合はプロファイルが作成されないという問題がある。
また、従来技術２では、図２１の「課題３」に示すように、人間が見れば類似していると分かるが、厳密には異なる形式を持っており、用意された文字列クラスの正規表現にマッチしない場合、プロファイルが作成されないという問題がある。【０００８】
本発明は上述したような技術が有する問題点を解決するためになされたものであり、ネットワークを介してＷｅｂサーバのような情報処理装置に送信されるリクエストについて、正常なデータを異常と判定することを抑制可能にしたログ分析装置、攻撃検知装置、攻撃検知方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するための本発明のログ分析装置は、ネットワークに接続される情報処理装置からアクセスログを収集して分析するログ分析装置であって、
分析対象データが前記情報処理装置に対する攻撃を示すものであるか否かを判定するための基準となるプロファイルを保存するための記憶部と、
前記アクセスログのリクエストから各パラメタを抽出するパラメタ抽出部と、
前記パラメタ抽出部によって抽出された各パラメタについて、パラメタ値を先頭文字から部分毎に予め定義された文字列クラスと比較し、該文字列クラスとの一致が最長になる文字列クラスに該部分を置換し、置換した文字列クラスを順に並べたクラス列に変換するクラス変換部と、
学習データとして正常なデータの前記アクセスログについて前記パラメタ抽出部および前記クラス変換部によって求められた前記クラス列の集合のうち、出現頻度が所定値以上のクラス列を前記プロファイルとして前記記憶部に保存するプロファイル保存部と、
前記分析対象データの前記アクセスログについて前記パラメタ抽出部および前記クラス変換部によって求められた前記クラス列と前記プロファイルとの類似度を計算し、該類似度にしたがって前記情報処理装置への攻撃が発生したか否かを判定する異常検知部と、
を有する。【００１０】
また、本発明の攻撃検知装置は、ネットワークに接続される情報処理装置に対する攻撃を検知する攻撃検知装置であって、
前記情報処理装置へのアクセスリクエストが該情報処理装置を攻撃するものであるか否かを判定するための基準となるプロファイルを保存するための記憶部と、
前記アクセスリクエストから各パラメタを抽出するパラメタ抽出部と、
前記パラメタ抽出部によって抽出された各パラメタについて、パラメタ値を先頭文字から部分毎に予め定義された文字列クラスと比較し、該文字列クラスとの一致が最長になる文字列クラスに該部分を置換し、置換した文字列クラスを順に並べたクラス列に変換するクラス変換部と、
学習データとして正常なデータの前記アクセスリクエストについて前記パラメタ抽出部および前記クラス変換部によって求められた前記クラス列の集合のうち、出現頻度が所定値以上のクラス列を前記プロファイルとして前記記憶部に保存するプロファイル保存部と、
分析対象の前記アクセスリクエストについて前記パラメタ抽出部および前記クラス変換部によって求められた前記クラス列と前記プロファイルとの類似度を計算し、該類似度にしたがって前記情報処理装置への攻撃が発生したか否かを判定する異常検知部と、
を有する。【００１１】
また、本発明の攻撃検知方法は、ネットワークに接続される情報処理装置に対する攻撃を検知する攻撃検知装置による攻撃検知方法であって、
学習データとして正常なデータの前記情報処理装置へのアクセスリクエストから各パラメタを抽出し、各パラメタについて、パラメタ値を先頭文字から部分毎に予め定義された文字列クラスと比較し、該文字列クラスとの一致が最長になる文字列クラスに該部分を置換し、置換した文字列クラスを順に並べたクラス列に変換し、該クラス列の集合のうち、出現頻度が所定値以上のクラス列を、分析対象データが前記情報処理装置に対する攻撃を示すものであるか否かを判定するための基準となるプロファイルとして記憶部に保存し、
前記分析対象データの前記アクセスリクエストからパラメタを抽出し、
抽出したパラメタの値を前記文字列クラスに基づいて前記クラス列に変換し、
前記クラス列と前記プロファイルとの類似度を計算し、
前記類似度にしたがって前記情報処理装置への攻撃が発生したか否かを判定するものである。【００１２】
さらに、本発明のプログラムは、ネットワークに接続される情報処理装置に対する攻撃を検知するコンピュータに、
学習データとして正常なデータの前記情報処理装置へのアクセスリクエストから各パラメタを抽出し、各パラメタについて、パラメタ値を先頭文字から部分毎に予め定義された文字列クラスと比較し、該文字列クラスとの一致が最長になる文字列クラスに該部分を置換し、置換した文字列クラスを順に並べたクラス列に変換し、該クラス列の集合のうち、出現頻度が所定値以上のクラス列を、分析対象データが前記情報処理装置に対する攻撃を示すものであるか否かを判定するための基準となるプロファイルとして記憶部に保存する手順と、
前記分析対象データの前記アクセスリクエストからパラメタを抽出する手順と、
抽出したパラメタの値を前記文字列クラスに基づいて前記クラス列に変換する手順と、
前記クラス列と前記プロファイルとの類似度を計算する手順と、
前記類似度にしたがって前記情報処理装置への攻撃が発生したか否かを判定する手順を実行させるものである。
【発明の効果】
【００１３】
本発明によれば、情報処理装置にネットワークを介して入力されるリクエストについて、リクエストから抽出したパラメタ値を種々の形態のパラメタ値に対応したクラス列に抽象化し、分析対象のデータが正常か不正かを判定しているので、分析対象の正常なデータを異常と判定する誤検知の可能性を減少させることができる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施形態のＷＡＦを含む通信システムの一構成例を示すブロック図である。
【図２】第１の実施形態のＷＡＦの一構成例を示すブロック図である。
【図３】第１の実施形態のＷＡＦによる攻撃検知方法の処理の流れを示す図である。
【図４】第１の実施形態におけるプロファイル化部による学習処理の手順を示すフローチャートである。
【図５】図４に示すステップ１０３および１０５の処理の詳細を説明するための図である。
【図６】第１の実施形態において、プロファイルとの類似度の計算方法を説明するための図である。
【図７】第１の実施形態の実施例を示す図である。
【図８】第２の実施形態における変形例３を説明するための図である。
【図９】第２の実施形態におけるプロファイル化部による学習処理の手順を示すフローチャートである。
【図１０】第２の実施形態において、プロファイルとの類似度の計算方法を説明するための図である。
【図１１】第２の実施形態の実施例を示す図である。
【図１２】第３の実施形態のプロファイル作成方法を説明するための図である。
【図１３】第３の実施形態における類似度計算を説明するための図である。
【図１４】第３の実施形態におけるプロファイル化部による学習処理の手順を示すフローチャートである。
【図１５】第３の実施形態の実施例を示す図である。
【図１６】ログ分析サーバとして本発明の攻撃検知装置を含むログ分析システムの一構成例を示すブロック図である。
【図１７】従来の攻撃検知方法を説明するための図である。
【図１８】プロファイルの特徴量を説明するための図である。
【図１９】従来技術１の状態遷移モデルの作成方法を説明するための図である。
【図２０】従来技術２の異常判定方法を説明するための図である。
【図２１】従来技術の課題を説明するための図である。
【図２２】従来技術１の別の課題を説明するための図である。
【発明を実施するための形態】
【００１５】
本発明は、Ｗｅｂサーバに対して攻撃を行うアクセスを検知する情報処理装置およびコンピュータに関するものであり、以下の実施形態では、情報処理装置がＷＡＦの場合で説明するが、Ｗｅｂサーバに対するアクセス内容（ログであってもよい）を分析するログ分析装置であってもよい。
【００１６】
（第１の実施形態）
本実施形態のＷＡＦを含む通信システムの構成を説明する。
図１は本実施形態のＷＡＦを含む通信システムの一構成例を示すブロック図である。
図１に示すように、通信システムは、ネットワーク８０を介してクライアント７０にサービスを提供する情報処理装置の一種であるＷｅｂサーバ６０と、Ｗｅｂサーバ６０に対する攻撃を検知するＷＡＦ１０とを有する。ＷＡＦ１０は、ネットワーク８０とＷｅｂサーバ６０との間に設けられる。クライアント７０はネットワーク８０およびＷＡＦ１０を介してＷｅｂサーバ６０と接続される。
図２は本実施形態のＷＡＦの一構成例を示すブロック図である。
図２に示すように、ＷＡＦ１０は、入力部１１と、記憶部１２と、制御部１３と、検知結果出力部１４とを有する。入力部１１は、学習データ入力部２１および分析対象データ入力部２２を有する。
学習データ入力部２１には、学習データとして、Ｗｅｂサーバ６０への正常なデータがネットワーク８０から入力される。分析対象データ入力部２２には、Ｗｅｂサーバ６０を攻撃するものであるか否かの判定対象となるデータである分析対象データがネットワーク８０から入力される。
【００１７】
記憶部１２には、分析対象データがＷｅｂサーバ６０に対する攻撃を示すものであるか否かを判定するための基準となるプロファイルが保存される。
制御部１３は、プロファイル化部４０と、分析対象データ処理部５０とを有する。プロファイル化部４０は、パラメタ抽出部３１と、文字列クラス変換部３２と、プロファイル保存部４３とを有する。分析対象データ処理部５０は、パラメタ抽出部３１と、文字列クラス変換部３２と、異常検知部５３とを有する。パラメタ抽出部３１と文字列クラス変換部３２はプロファイル化部４０と分析対象データ処理部５０の処理に携わる。
制御部１３は、プログラムを記憶するメモリ（不図示）と、プログラムにしたがって処理を実行するＣＰＵ（Central  Processing  Unit）（不図示）とを有する。ＣＰＵがプログラムにしたがって処理を実行することで、パラメタ抽出部３１、文字列クラス変換部３２、プロファイル保存部４３、および異常検知部５３がＷＡＦ１０に構成される。また、メモリ（不図示）には、アクセスリクエストから抽出されるパラメタの値について、文字列をどのようにクラス分けするかを定めた文字列クラスの情報が格納されている。文字列クラスの詳細は後で説明する。
【００１８】
パラメタ抽出部３１は、学習データ入力部２１を介してＷｅｂサーバ６０から入力される学習データとなるアクセスリクエストからアクセスの各パラメタを抽出して文字列クラス変換部３２に出力する。また、パラメタ抽出部３１は、分析対象データ入力部２２を介してネットワーク８０から入力される分析対象データとなるアクセスリクエストからアクセスの各パラメタを抽出して文字列クラス変換部３２に出力する。
文字列クラス変換部３２は、学習データに関して、パラメタ抽出部３１から受け取るパラメタの値を文字列クラスに基づいてクラス列に変換してプロファイル保存部４３に出力する。また、文字列クラス変換部３２は、分析対象データに関して、パラメタ抽出部３１から受け取るパラメタの値を文字列クラスに基づいてクラス列に変換して異常検知部５３に出力する。
プロファイル保存部４３は、学習データに関して、文字列クラス変換部３２による変換後のクラス列の集合を受け取ると、各パラメタのクラス列の集合から最も頻出するクラス列を選択し、選択したクラス列をパラメタのプロファイルとして記憶部１２に保存する。
異常検知部５３は、分析対象データに関して、文字列クラス変換部３２による変換後のクラス列を受け取ると、そのパラメタのプロファイルとの類似度を計算し、算出した類似度を予め決められた閾値と比較することで、アクセスが異常か否かを検知する。異常検知部５３は、その検知結果を検知結果出力部１４に通知する。具体的には、異常検知部５３は、算出した類似度が閾値より大きい場合、正常と判定し、類似度が閾値より小さい場合、異常と判定する。つまり、Ｗｅｂサーバ６０に対して、または、Ｗｅｂサーバ６０のＷｅｂＡＰに対して、攻撃が発生したと判定する。
検知結果出力部１４は、異常検知部５３から受け取る検知結果を出力する。
【００１９】
次に、本実施形態のＷＡＦの動作を説明する。
図３は本実施形態のＷＡＦによる攻撃検知方法の処理の流れを示す図である。
本実施形態では、「プロファイルの作成に使用する特徴量」、「学習時におけるプロファイルの作成方法および作成されるプロファイル（の構造、データ）」および「検知時におけるプロファイルと分析対象との比較、照合の方法」に特徴がある。
本実施形態の攻撃検知方法は、学習処理と検知処理の２フェーズに分かれる。
学習処理では、学習データ入力部２１がネットワーク８０からアクセスリクエスト（学習データ）を取得する。プロファイル化部４０は、取得したアクセスリクエストから各パラメタを抽出し（パラメタ抽出部３１）、パラメタの値をクラス列に変換する（文字列クラス変換部３２）。次に、各パラメタのクラス列の集合から最も頻出するクラス列を選択し、パラメタのプロファイルとする（プロファイル保存部４３）。
検知処理では、分析対象データ入力部２２がネットワーク８０からアクセスリクエスト（分析対象データ）を取得する。分析対象データ処理部５０は、取得した分析対象データのアクセスリクエストからパラメタを学習処理と同様に抽出してクラス列に変換し（パラメタ抽出部３１、文字列クラス変換部３２）、そのパラメタのクラス列とプロファイルのクラス列との類似度を計算し、閾値によって異常を検知する（異常検知部５３）。その後、検知結果出力部１４は、異常検知部５３の検知結果を出力する。
なお、リクエストのパラメタを抽出する元データとしては、アクセスリクエストからではなく、パケットキャプチャなどを用いてもよい。
【００２０】
次に、プロファイル化部４０による学習処理の手順を詳細に説明する。
図４は本実施形態におけるプロファイル化部による学習処理の手順を示すフローチャートである。
プロファイル化部４０は、学習対象のパラメタｐ毎に次のような処理を実施し、当該パラメタｐのプロファイルＬを作成する。
当該パラメタに関する全ての学習データ（パラメタ値：ｄ１〜ｄｎ）が入力されると（ステップ１０１）、プロファイル化部４０は未処理の学習データ（ｄｘ）を取り出す（ステップ１０２）。そして、プロファイル化部４０は当該学習データｄｘを予め定めた文字列クラスの定義に基づき、クラス列ｃｘに変換し、記録する（ステップ１０３）。
プロファイル化部４０は、未処理の学習データがあるか否かを判定し（ステップ１０４）、未処理の学習データがある場合には、ステップ１０２に戻り、未処理の学習データがない場合には、ステップ１０５に進む。ステップ１０５において、プロファイル化部４０は記録した全てのクラス列のうち、出現回数が最大となるクラス列のみを選択する（ステップ１０５）。その後、プロファイル化部４０はパラメタｐのプロファイルとしてＬを記憶部１２に記録する（ステップ１０６）。
【００２１】
図４に示したフローチャートのうち、ステップ１０３とステップ１０５の処理を、具体例を用いて詳細に説明する。図５は図４に示すステップ１０３および１０５の処理の詳細を説明するための図である。
図５の上段は、同種のパラメタ値を示す、複数種の文字列を１つのクラスに分類した文字列クラスの定義の一例を示す。文字列クラスには、例えば、「numeric」や「space」などのクラスがある。
図５の中段は、パラメタ値の先頭文字から最後の文字にかけて部分毎に文字列クラスと比較し、文字列クラスとの一致が最長になる文字列クラスにその部分を置換し、文字列クラスが順に配置されたクラス列に変換される様子を示している。図５の下段は、上記のようにして、パラメタ毎にクラス列を求め、クラス列の集合について、クラス列毎の出現頻度を算出し、出現頻度が最大となるクラス列をプロファイルとして保存する様子を示している。
【００２２】
上述の動作を、図４を参照して説明する。
ステップ１０３において、プロファイル化部４０は、パラメタ値をクラス列に変換する際、予め用意した文字列クラスの正規表現に対して、パラメタ値のマッチした部分文字列とクラスが最長一致した部分を１つのクラスと判定し、左から順にすべての文字列をクラスへ変換する。これにより、従来の定義で１つの文字列クラスに定義されたものが複数個連接されたもの、複合されたものなどの、複雑な構造を持つパラメタも、いずれかのクラスに分類可能となる。
ステップ１０５において、プロファイル化部４０は、クラス列を選出する際、出現頻度が最大となるクラス列を選択し、それをプロファイルとして保存する。
なお、具体的には、ステップ１０３の処理は文字列クラス変換部３２で実行され、ステップ１０５の処理はプロファイル保存部４３で実行される。また、文字列クラスの定義の情報は、記憶部１２に格納されていてもよい。
【００２３】
次に、分析対象データ処理部５０における検知処理を説明する。
図６は本実施形態において、プロファイルとの類似度の計算方法を説明するための図である。分析対象データ処理部５０の異常検知部５３は次の手順で検知判定を行う。ここでは、分析対象データにテストデータを用いている。
（手順１）学習処理と同様に、パラメタ値をクラス列に変換する。
（手順２）プロファイルとのクラス列類似度を求める。類似度算出方法としては、例えば、図６に示すＬＣＳ（最長共通部分列）を用いることができる。
（手順３）類似度Ｓが閾値Ｓｔより小さい場合、異常と判定、そうでなければ正常と判定する。
【００２４】
本実施形態の実施例を説明する。図７は本実施形態の実施例を示す図である。本実施例では、ｆｉｌｅパラメタの場合で説明する。また、分析対象データとして、テストデータを用いている。
学習処理では、プロファイル化部４０が、出現頻度が最大となるクラス列を１個選出する。検知処理では、分析対象データ処理部５０は、クラス列変換を行った後、類似度計算を行い、その結果により、正常か、異常かを判定する。
【００２５】
本実施形態によれば、Ｗｅｂアプリケーションのパラメタ値の文字列構造を利用したＷＡＦにおいて、パラメタの持つ特性と文字列のフォーマットを利用することで、パラメタ値を種々の形態のパラメタ値に対応したクラス列に抽象化し、分析対象のデータが正常か不正かを判定しているので、学習データにない正常データを異常と判定する誤検知の可能性を、減少させることができる。
【００２６】
（第２の実施形態）
第１の実施形態では、クラス列の選出において出現頻度が最大となるクラス列を１つだけ選択し、そのクラス列をプロファイルとしたが、本実施形態では、クラス列の選択方法の別の案として、次の変形例１〜３のいずれかを適用するものである。
（変形例１）出現頻度が大きい順にu個のクラス列を選出する。
（変形例２）出現頻度がv％以上となるクラス列を選出する。
（変形例３）出現頻度fxを大きい順にソート（f'1,  f'2,  f'3  …）し、出現頻度の和（寄与率）が初めてFtを超える（f'1  +  f'2  +  …  +  f'u  >  Ft）u個のクラス列（c'1,  c'2,  …  c'u）を選出する。
図８は本実施形態における変形例３を説明するための図である。
プロファイル保存部４３は、出現頻度を示すグラフから出現頻度をソートし、図８に示す式を満たすようなｕ個のクラス列を抽出する。
【００２７】
本実施形態におけるプロファイル化部による学習処理を説明する。
図９は本実施形態におけるプロファイル化部による学習処理の手順を示すフローチャートである。
本実施形態では、図４に示したフローチャートにおいて、ステップ１０５の処理の代わりに、図９に示すステップ１０５−ａｂｃの処理が実行される。本実施形態では、ステップ１０５−ａｂｃの処理について説明し、他のステップの処理の説明を省略する。
ステップ１０５−ａｂｃにおいて、プロファイル化部４０は、記録した全てのクラス列のうち、変形例１〜３の方法のうち、いずれかの方法によって複数のクラス列を選択する。
【００２８】
本実施形態における検知時の類似度計算を説明する。図１０は本実施形態において、プロファイルとの類似度の計算方法を説明するための図である。
変形例１〜３においてｕ個のクラス列を選出した場合、検知においての類似度はプロファイルのクラス列とｕ個のクラス列それぞれとの類似度（s1,  s2,  …  ,  su）から最大となる類似度Smax  =  max(s1,  s2,  …  su)をプロファイルとの類似度とする。
この例の場合テストデータとプロファイルの類似度Ｓは０．８となる。
【００２９】
本実施形態の実施例を説明する。図１１は本実施形態の実施例を示す図である。本実施例においても、ｆｉｌｅパラメタの場合で説明する。
学習処理では、プロファイル化部４０が、変形例１〜３のうち、いずれかの案を用いて、クラス列を複数個選出する。検知処理では、分析対象データ処理部５０は、クラス列変換を行った後、類似度計算を行い、その結果により、正常か、異常かを判定する。
【００３０】
（第３の実施形態）
第１の実施形態では単独のクラス列をプロファイルとし、第２の実施形態では複数のクラス列をプロファイルとするものであったが、本実施形態は、プロファイルに、複数のクラス列（以下では、「クラス列集合」と称する）を用いるか、クラスの順序を考慮しないクラス集合を用いるかを選択するものである。
なお、本実施形態に第２の実施形態で選出される複数のクラス列を適用してもよく、また、本実施形態では、第２の実施形態で説明した変形例１〜３のいずれかを適用することが可能である。
ここで、従来技術１の別の課題を説明する。従来技術１では、学習データに実際に現われた１文字ずつの状態遷移モデルを作成するため文字列の自由度が高いパラメタでは誤検知が多く発生するという問題がある。この問題を「課題４」とする。課題４の一例を図２２に示す。
【００３１】
本実施形態のプロファイル作成方法を説明する。
図１２は本実施形態のプロファイル作成方法を説明するための図であり、圧縮率Ｒを利用したプロファイルの作成方法を示す。
本実施形態では、図２に示したプロファイル保存部４３は、図１２に示すように、クラス列集合の圧縮率（Ｒ）が閾値Ｒｔより小さいかを求め、圧縮率が閾値よりも小さい場合はクラス列の集合をプロファイルとする。
一方、圧縮率が閾値よりも大きい場合、プロファイル保存部４３は、クラス集合をプロファイルとする。クラス集合とは、出現するユニークなクラスの集まりのことであり、クラスの出現順序は保持されない。つまり、クラス集合では、クラス列の集合に含まれる文字列クラス（alpha、numericなど）が重ならず、また、出現する順序も決められていない。
本実施形態では、クラス列の集合は文字列クラスの順序を考慮するが、クラス集合では文字列クラスの順序を考慮しない。
【００３２】
本実施形態における検知時の類似度計算を説明する。図１３は本実施形態における類似度計算を説明するための図である。
本実施形態では、クラス列集合を利用してプロファイルを作成した場合と、クラス集合を利用してプロファイルを作成した場合とで、検知における類似度計算方法を変更する必要がある。
図１３（ａ）はプロファイルがクラス列集合型の場合の類似度計算方法を示し、図１３（ｂ）はプロファイルがクラス集合型の場合の類似度計算方法を示す。
（１）プロファイルがクラス列集合型の場合、検知においての類似度はプロファイルのクラス列とu個のクラス列それぞれとの類似度（s1,  s2,  …  ,  su）から最大となる類似度Smax  =  max(s1,  s2,  …  su)をプロファイルとの類似度とする（変形例１〜３の類似度計算方法と同じ）。
（２）プロファイルがクラス集合型の場合、クラス集合がプロファイルのクラス集合に含まれる場合、類似度Ｓを１．０とする、一致しない場合は０．０とする。
【００３３】
本実施形態におけるプロファイル化部による学習処理を説明する。ここでは、第２の実施形態における変形例２の場合で説明する。
図１４は本実施形態におけるプロファイル化部による学習処理の手順を示すフローチャートである。
本実施形態では、図９に示したフローチャートにおいて、ステップ１０５−ａｂｃを変形例２に対応したステップ１０５−ｂとし、ステップ１０５−ｂとステップ１０６の処理の間に、図１４に示すように、ステップ１１１〜１１３が追加される。本実施形態では、ステップ１０５−ｂ、およびステップ１１１〜１１３の処理について説明し、他のステップの処理の説明を省略する。
ステップ１０５−ｂにおいて、プロファイル化部４０は、記録した全てのクラス列（ｃ１〜ｃｎ）より、圧縮率Ｒを算出する。ステップ１１１において、プロファイル化部４０は、圧縮率Ｒは予め定められた圧縮率閾値Ｒｔより小さいか否かを判定する。
ステップ１１１の判定でＲ＜Ｒｔの場合、プロファイル化部４０は、記録した全てのクラス列のうち、ユニークなもの（クラス列集合）をプロファイルＬとする（ステップ１１２）。一方、ステップ１１１の判定でＲ＞Ｒｔの場合、プロファイル化部４０は、記録したクラス列に表れる全てのクラスのユニークな集合（クラス集合）をプロファイルＬとする（ステップ１１３）。
【００３４】
本実施形態の実施例を説明する。図１５は本実施形態の実施例を示す図である。本実施例では、ｆｉｌｅパラメタの場合で説明する。
学習処理では、プロファイル化部４０が、変形例１〜３の手法のいずれかにより、クラス列を複数個選出する。その後、圧縮率Ｒ＜Ｒｔのためクラス列集合を保存する。検知処理では、分析対象データ処理部５０は、クラス列変換を行った後、プロファイルはクラス列のためクラス列で類似度計算を行い、その結果により、正常か、異常かを判定する。
【００３５】
本発明の攻撃検知装置による作用を、図２１および図２２を参照して説明した課題１〜４と対比して説明する。
図２１を参照して説明した課題１に対して、本発明では、文字列をクラスへと抽象化して扱うことで添字の異なりなどを考慮した異常判定を行えるため、誤検知を減少させられる。また、検知時にクラス列のＬＣＳ類似度を利用することで学習時のデータに添字を付加したようなデータが現れても高い類似度を示すことから誤検知を減少させられる。
図２１を参照して説明した課題２に対して、本発明では、文字列クラス変換部でパラメタを文字列クラスが複数個連接、複合したものと考えてクラス列を作成しているため、そのパラメタに適合したプロファイルが作成できる。
図２１を参照して説明した課題３に対して、本発明では、文字列クラスにはｕｒｌ、ｉｐなどの複雑な文字列クラスを定義する以外に単純文字列クラスnumeric,  alphaなどを定義することで、文字列"2014.1.1"をdate型と判定できなくてもクラス列(numeric,  symbol,  numeric,  symbol,  numeric)をプロファイルとして作成できる。
図２２を参照して説明した課題４に対して、第３の実施形態で説明した発明では、クラス集合という概念を導入することで自由度の高いパラメタについてはクラスの順序ではなく制約を下げたクラスが出現するかどうかの条件で異常かどうか判定するため誤検知を減少させることができる。
【００３６】
本発明によれば、Ｗｅｂアプリケーションに対する攻撃検知方法において、パラメタ値の文字列構造を利用し、パラメタの持つ特性と文字列のフォーマットを利用することで、学習データにない正常データを異常と判定する誤検知および自由度の高いパラメタにおける誤検知の可能性を減少させることができる。
【００３７】
なお、上述の実施形態で説明したＷＡＦをログ分析サーバとして含むログ分析システムに適用してもよい。図１６はログ分析サーバとして本発明の攻撃検知装置を含むログ分析システムの一構成例を示すブロック図である。
ログ分析システムは、Ｗｅｂサーバ６０と、ログサーバ９０と、ログ分析サーバ１５とを有する。ログサーバ９０はＷｅｂサーバ６０と接続されている。ログサーバ９０は、定期的にＷｅｂサーバ６０からアクセスログの情報を取得して自装置の記憶部に保存する。
ログ分析サーバ１５はログサーバ９０と接続されている。ログ分析サーバ１５が、上述の実施形態で説明したＷＡＦ１０の機能を備え、アクセスログからアクセスリクエストを読み出して分析することで、Ｗｅｂサーバ６０への攻撃を検知する。
【符号の説明】
【００３８】
１０    ＷＡＦ
１５    ログ分析サーバ
１３    制御部
１２    記憶部
３１    パラメタ抽出部
３２    文字列クラス変換部
４０    プロファイル化部
４３    プロファイル保存部
５０    分析対象データ処理部
５３    異常検知部
６０    Ｗｅｂサーバ
【図１】
2015186662.tif 000003
【図２】
2015186662.tif 000004
【図３】
2015186662.tif 000005
【図４】
2015186662.tif 000006
【図５】
2015186662.tif 000007
【図６】
2015186662.tif 000008
【図７】
2015186662.tif 000009
【図８】
2015186662.tif 000010
【図９】
2015186662.tif 000011
【図１０】
2015186662.tif 000012
【図１１】
2015186662.tif 000013
【図１２】
2015186662.tif 000014
【図１３】
2015186662.tif 000015
【図１４】
2015186662.tif 000016
【図１５】
2015186662.tif 000017
【図１６】
2015186662.tif 000018
【図１７】
2015186662.tif 000019
【図１８】
2015186662.tif 000020
【図１９】
2015186662.tif 000021
【図２０】
2015186662.tif 000022
【図２１】
2015186662.tif 000023
【図２２】
2015186662.tif 000024
【国際調査報告】
2015186662.tif 000025
2015186662.tif 000026
2015186662.tif 000027
2015186662.tif 000028