(57)【要約】【課題】通信プロトコルの構文要素を取り込んだパターン記述言語によりパターン検出処理プログラムを生成可能としたパターン検出処理プログラム生成システムを提供する。【解決手段】このパターン検出処理プログラム生成システムは、構文要素指定子によって修飾された正規表現で構成されるパターンシーケンスで検出対象の攻撃パターンを記述した攻撃パターン記述ファイル２２を入力する。そして、（字句解析部１２による字句解析を含む）構文解析部１１による構文解析および木構造生成部１３による構文要素のリスト構造から木構造への展開を経た後に、スキャナプログラム生成部１４が、正規表現パターンマッチングを行うための有限オートマトンを構成し、この有限オートマトンを表現する状態遷移データであるスキャナプログラム３１を出力する。【選択図】    図２
2004240766.tif 000002
【特許請求の範囲】
【請求項１】
構文要素指定子によって修飾された正規表現で構成されるパターンシーケンスで検出対象のパターンを記述したパターン記述を入力するパターン入力手段と、
前記パターン入力手段により入力されたパターン記述から正規表現パターンマッチングを行うための有限オートマトンを構成し、この有限オートマトンを表現する状態遷移データを出力する状態遷移データ出力手段と、
前記状態遷移データ出力手段により出力された状態遷移データを組み込んだパターン検出処理プログラムを生成するパターン検出処理プログラム生成手段と
を具備することを特徴とするパターン検出処理プログラム生成システム。
【請求項２】
前記状態遷移データ出力手段は、前記入力手段により入力されたパターン記述のパターンシーケンスを解釈する際、構文要素指定子が大文字の場合には、正規表現中のアルファベットの大文字および小文字を区別せず、構文要素指定子が小文字の場合には、正規表現中のアルファベットの大文字および小文字を区別するものとして解釈する手段を有することを特徴とする請求項１記載のパターン検出処理プログラム生成システム。
【請求項３】
前記状態遷移データ出力手段は、前記入力手段により入力されたパターン記述のパターンシーケンスを解釈する際、所定の記号を正規表現に対して境界条件を指定するものとして解釈する手段を有することを特徴とする請求項１記載のパターン検出処理プログラム生成システム。
【請求項４】
前記状態遷移データ出力手段は、前記入力手段により入力されたパターン記述のパターンシーケンスを解釈する際、所定の記号をパターンシーケンス間における遷移条件を指定するものとして解釈する手段を有することを特徴とする請求項１記載のパターン検出処理プログラム生成システム。
【請求項５】
前記パターンシーケンス間における遷移条件には、以降のパターン検出を行うか否かのほか、入力シーケンスの切り替えまたは入力文字列に対するフィルタ処理を行うコードが記述されることを特徴とする請求項４記載のパターン検出処理プログラム生成システム。
【請求項６】
前記状態遷移データ出力手段は、前記構文要素指定子の構文要素間に入れ子構造がある場合、下位の構文要素のパターン解析と同時に上位のパターンを解析可能な有限オートマトンの状態遷移データを生成することを特徴とする請求項１記載のパターン検出処理プログラム生成システム。
【請求項７】
前記状態遷移データ出力手段は、前記各パターンシーケンスでの正規表現間の依存関係を表現した有向グラフに基づいて状態間の遷移の可否を判定するチェック処理プログラムを生成して出力する手段を有し、
前記パターン検出処理プログラム生成手段は、前記状態遷移データ出力手段により出力されたチェック処理プログラムを前記パターン検出処理プログラムに組み込むことを特徴とする請求項１記載のパターン検出処理プログラム生成システム。
【請求項８】
構文要素指定子によって修飾された正規表現で構成されるパターンシーケンスで検出対象のパターンを記述したパターン記述を入力するパターン入力ステップと、
前記パターン入力ステップにより入力されたパターン記述から正規表現パターンマッチングを行うための有限オートマトンを構成し、この有限オートマトンを表現する状態遷移データを出力する状態遷移データ出力ステップと、
前記状態遷移データ出力ステップにより出力された状態遷移データを組み込んだパターン検出処理プログラムを生成するパターン検出処理プログラム生成ステップと
を具備することを特徴とするパターン検出処理プログラム生成方法。
【請求項９】
前記状態遷移データ出力ステップは、前記入力ステップにより入力されたパターン記述のパターンシーケンスを解釈する際、構文要素指定子が大文字の場合には、正規表現中のアルファベットの大文字および小文字を区別せず、構文要素指定子が小文字の場合には、正規表現中のアルファベットの大文字および小文字を区別するものとして解釈する手段を有することを特徴とする請求項８記載のパターン検出処理プログラム生成方法。
【請求項１０】
前記状態遷移データ出力ステップは、前記入力ステップにより入力されたパターン記述のパターンシーケンスを解釈する際、所定の記号を正規表現に対して境界条件を指定するものとして解釈する手段を有することを特徴とする請求項８記載のパターン検出処理プログラム生成方法。
【請求項１１】
前記状態遷移データ出力ステップは、前記入力ステップにより入力されたパターン記述のパターンシーケンスを解釈する際、所定の記号をパターンシーケンス間における遷移条件を指定するものとして解釈するステップを有することを特徴とする請求項８記載のパターン検出処理プログラム生成方法。
【請求項１２】
前記パターンシーケンス間における遷移条件には、以降のパターン検出を行うか否かのほか、入力シーケンスの切り替えまたは入力文字列に対するフィルタ処理を行うコードが記述されることを特徴とする請求項１１記載のパターン検出処理プログラム生成方法。
【請求項１３】
前記状態遷移データ出力ステップは、前記構文要素指定子の構文要素間に入れ子構造がある場合、下位の構文要素のパターン解析と同時に上位のパターンを解析可能な有限オートマトンの状態遷移データを生成することを特徴とする請求項８記載のパターン検出処理プログラム生成方法。
【請求項１４】
前記状態遷移データ出力ステップは、前記各パターンシーケンスでの正規表現間の依存関係を表現した有向グラフに基づいて状態間の遷移の可否を判定するチェック処理プログラムを生成して出力するステップを有し、
前記パターン検出処理プログラム生成ステップは、前記状態遷移データ出力ステップにより出力されたチェック処理プログラムを前記パターン検出処理プログラムに組み込むことを特徴とする請求項８記載のパターン検出処理プログラム生成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、例えばインターネットなどのネットワークに接続されるコンピュータを攻撃から防御するためのセキュリティ技術に関する。
【０００２】
【従来の技術】
近年、通信技術や情報技術の向上、あるいはインフラストラクチャーの整備などに伴って、インターネットが広く普及するに至っている。一方、この普及が進むにしたがって、インターネットに接続されたコンピュータに対するネットワーク越しの攻撃や不正アクセスが問題となってきている。
【０００３】
このような攻撃や不正アクセスからコンピュータを守るために、ネットワークの途中にファイヤーウォールと呼ばれる機器を接続し、ネットワークを通過するパケットのヘッダ情報を監視して、システム管理者が望まないパケットを通過させないというシステムが開発されている。また、パケットが運んでいるデータの中身まで調べて、攻撃や不正なパケットを通過させないようにすることで、ネットワーク上でサービスを提供するサーバを守るという機器（サーバ防御装置または不正アクセス防御装置）も開発されている（例えば特許文献１）。
【０００４】
通常、これらの機器でパケットを通過させるかしないかを判断する攻撃検出処理は、ネットワークの間に設置された機器上で動作するソフトウェアで実現されている。そして、このソフトウェアは、システム管理者や機器のベンダが作成したパターンまたはルールに基づき、パケットの１つ１つについて、用意したパターンやルールにマッチするかしないかを１つ１つ解析することで攻撃かそうでないかを判断する。
【０００５】
このため、多数の攻撃手法や不正アクセスからサーバを守ろうとすると、ルールやパターンの数が膨大になり、攻撃検出に時間がかかってしまい、通信の遅延を増大させ、さらには、通信のスループットが低下してしまうという問題があった。
【０００６】
一方で、正規表現によって記述されたパターンを高速に検出するためのツールとしてｌｅｘがある。このツールは、コンパイラなどの字句解析ルーチンとして使われることが多いが、複数の正規表現のパターンマッチを並行して実行できるという優れた機能もある。この機能は、あらかじめ入力文字によって遷移して正規表現のマッチングで停止する有限オートマトンを構築し、このオートマトンを表現する状態遷移表（データ）を生成しておき、入力文字列のマッチングにおいて、この状態遷移データを探索することでパターン検出を行うという方法で実現される。
【０００７】
この技術を使えば、多くの正規表現によるパターンを並行してマッチングすることができるので、前述したパターンの増加の影響を受けない高速な攻撃検出が実現できる。
【０００８】
また、ＨＴＴＰなどの様々な上位プロトコルには、何らかの構文規則があるので、通常のコンパイラの処理と同様に、パケットの中身について、字句解析や構文解析を行えば、パターン検出の効率化を図れる可能性もある。
【０００９】
攻撃検出処理の実装については、攻撃の種類毎に、その攻撃パターンを検出する処理を実装し、それぞれのパケットについて、この攻撃毎のパターン検出処理を実行するという方法や、攻撃パターンのテンプレートと汎用のパターン検出処理による方法、あるいは、専用のパターン記述言語を用意し、これをコンパイルして攻撃検出処理を生成する方法などがある。
【００１０】
【特許文献１】
特開２００２−６３０８４号公報
【００１１】
【発明が解決しようとする課題】
ところで、最近では、ネットワークの高速化が目覚ましく、この高速なネットワークに対応するためには、高速な攻撃検出処理が必要とされる。また、複雑化するサーバへの攻撃に対処するためには、多くの攻撃パターンを検出する必要がある。しかしながら、この検出を攻撃パターン毎の遂次処理で行うと、攻撃パターンが増え続けるにしたがって、通信速度が遅くなってしまう。
【００１２】
一方、Ｌｅｘのような状態遷移表（データ）によるパターンマッチは、多くの攻撃パターンを同時並行して検出可能である。しかしながら、この状態遷移表によるパターンマッチでは、部分文字列が同時に複数のパターンにマッチするケースの場合、状態遷移表の探索のバックトラックが発生してしまい、性能を悪化させる。
【００１３】
実際の攻撃検出では、文字列シーケンスについて、先行部分でパターンにマッチしても、その後の部分でパターンにマッチしない場合には、攻撃でないということになる。このとき、先行部分でのパターンマッチをなかったことにして、別のパターンにマッチする可能性を探らなければならない。これがいわゆるバックトラックである。
【００１４】
一般に、攻撃パターンは、パケット内の各構文要素の文字列パターンの組合せであり、このバックトラックを防ぐために、パターンの組合せを１つの長い正規表現で表すと、オートマトンの状態遷移表が大きくなるだけでなく、状態遷移表の探索の時間も長くなってしまう。また、長い正規表現を正確に記述するのは非常に困難である。
【００１５】
例えば、ＨＴＴＰプロトコルにおいて、ＣＧＩ名の最後に”｜”が付加されているようなパターンを１つの正規表現で記述すると、
［［：ｓｐａｃｅ：］］［＾？  ］＊￥／［＾？  ］＊￥｜（［［：ｓｐａｃｅ：］］｜￥？｜％００）
のようになるが、このパターンの前半部分の［［：ｓｐａｃｅ：］］＾？］＊￥／［＾？  ］＊は、あらゆるＵＲＬにマッチしてしまい、この部分までの状態表の探索が進んでから”｜”がないことがわかるので、大きなペナルティとなる。
【００１６】
また、構文解析によって、マッチングの範囲を絞り込めば、攻撃検出が効率良くなるが、ＨＴＴＰなどの上位プロトコルには、ＰＡＴＨ＿ＩＮＦＯのような曖昧な構文要素があるため、厳密な構文解析を行うことができない。
【００１７】
さらに、構文解析でバラバラになった構文要素ごとに対するパターンマッチでは、検出することができないような攻撃パターンについては、別のパスで攻撃検出を行う必要がある。
【００１８】
攻撃パターンの実装については、攻撃の種類毎に攻撃検出処理をＣ言語などの汎用のプログラミング言語でプログラミングするという方法もあるが、日々、増大する攻撃手法に対応するために、プログラミングやテストを実施しなければならないので、バグの混入も避けられない。
【００１９】
また、ＩＤＳ（Ｉｎｔｒｕｓｉｏｎ  Ｄｅｔｅｃｔｉｏｎ  Ｓｙｓｔｅｍ）の分野においては、専用の攻撃パターン記述言語による方法が一般的であるが、その習得は専門的な訓練を必要とする。そして、この記述言語を使ったパターン検出処理は、図１５に示すように、攻撃パターンを遂次的に検査するものが多く、攻撃検出に時間がかかる。
【００２０】
この発明は、このような事情を考慮してなされたものであり、通信プロトコルの構文要素を取り込んだ単純かつ容易なパターン記述言語でパターン検出処理を生成することを可能としたパターン検出処理プログラム生成システムおよびパターン検出処理プログラム生成方法を提供することを目的とする。
【００２１】
【課題を解決するための手段】
前述の目的を達成するために、この発明は、構文要素指定子によって修飾された正規表現で構成されるパターンシーケンスで検出対象のパターンを記述したパターン記述を入力するパターン入力手段と、前記パターン入力手段により入力されたパターン記述から正規表現パターンマッチングを行うための有限オートマトンを構成し、この有限オートマトンを表現する状態遷移データを出力する状態遷移データ出力手段と、前記状態遷移データ出力手段により出力された状態遷移データを組み込んだパターン検出処理プログラムを生成するパターン検出処理プログラム生成手段とを具備することを特徴とするパターン検出処理プログラム生成システムを提供する。
【００２２】
また、この発明は、構文要素指定子によって修飾された正規表現で構成されるパターンシーケンスで検出対象のパターンを記述したパターン記述を入力するパターン入力ステップと、前記パターン入力ステップにより入力されたパターン記述から正規表現パターンマッチングを行うための有限オートマトンを構成し、この有限オートマトンを表現する状態遷移データを出力する状態遷移データ出力ステップと、前記状態遷移データ出力ステップにより出力された状態遷移データを組み込んだパターン検出処理プログラムを生成するパターン検出処理プログラム生成ステップとを具備することを特徴とするパターン検出処理プログラム生成方法を提供する。
【００２３】
この発明のパターン検出処理プログラム生成システムおよびパターン検出処理プログラム生成方法においては、検出対象のパターンを記述する際、通信プロトコルの構文要素を、正規表現を修飾するための指定子として利用できるようにするため、パターンの記述およびメンテナンスを容易に行うことを可能とする。
【００２４】
【発明の実施の形態】
以下、図面を参照してこの発明の実施形態を説明する。
【００２５】
図１には、この発明の実施形態に係るパターン検出処理プログラム生成システムによって生成されるパターン検出処理プログラム（パターン検出ルーチン）の一適用例を示すためのネットワーク構成図である。
【００２６】
図中、サーバコンピュータ１は、複数のクライアントコンピュータ２に対してインターネット３経由で各種サービスを提供するサーバである。また、このサーバコンピュータ１とインターネット３との間には、インターネット３経由の攻撃や不正アクセスからサーバコンピュータ１を守るためのサーバ防御装置４が設置される。そして、この実施形態のパターン検出処理プログラム生成システムによって生成されるパターン検出処理プログラムは、このサーバ防御装置４の攻撃パターン検出部４１として、インターネット３側からサーバコンピュータ１側に通過しようとするすべてのパケットを監視し、侵入を阻止すべき攻撃パターンと一致する内容を含むパケットを検出する。
【００２７】
図２は、この実施形態のパターン検出処理プログラム生成システムの機能ブロックを示す図である。
【００２８】
パターン検出処理を作成・管理するシステム管理者は、まず、攻撃パターン記述言語を用いて攻撃パターンを記述する（攻撃パターン記述ファイル２２）。図３は、システム管理者が記述する攻撃パターンの構文を示す図である。
【００２９】
図３に示すように、この攻撃パターンの記述は、攻撃種別毎に、パターンシーケンスとアクションの組み合わせによって構成される。パターンシーケンスは、構文要素指定子によって修飾された正規表現の並びで記述され、また、アクションは、パターンシーケンスにマッチした場合にパターン検出処理プログラムが行うべき処理が記述される。
【００３０】
構文要素指定子は、ＨＴＴＰなどの上位プロトコルの構文要素に対するパターン検出を行わせるための指定子であり、検出パターンの適用範囲を限定するのと同時に、スキャンする入力文字列を切替えたり、デコードした上でパターン検出するといったフィルタ処理を構文要素ごとに実装することを可能にしている。そして、この構文要素指定子で正規表現を修飾できるようにした点が、この実施形態のパターン検出処理プログラム生成システムの特徴の一つであり、以下、この攻撃パターンの記述からどのように攻撃パターン検出処理プログラムを生成するのかを説明する。
【００３１】
なお、このパターン検出処理プログラム生成システムでは、構文要素指定子を大文字で記述した場合、括弧の中の正規表現のアルファベットは、大文字および小文字を区別しないものとして解釈し、一方、構文要素指定子を小文字で記述されている場合には、括弧の中の正規表現のアルファベットは、大文字および小文字を区別するものとして解釈する。
【００３２】
また、各正規表現には、構文要素の境界条件を指定可能である。構文要素の境界条件とは、正規表現でマッチングする文字列の先頭と後尾のそれぞれが、構文要素のセパレータに隣接しているかどうかという条件であり、例えばＨＴＴＰの変数値の場合、先頭の直前が”＝”であり、後尾の直後は、”＆”か、スペースまたは改行である。そして、この境界条件を指定する場合、例えば先頭の境界条件の場合、”（“の代わりに”（＾”を、後尾の場合、”）”の代わりに”＾）”を使用する。
【００３３】
この機能により、正規表現で書くと複雑になる構文要素の境界条件の記述を省略でき、パターン記述の負荷を軽減してバグの混入のリスクを避けられると同時に、上位プロトコルの構文仕様が変わった場合に、全てのパターンを書き直さずに対応することが可能となる。
【００３４】
また、文字列入力シーケンスの構文要素が切り替わる時に評価される遷移条件を指定することもでき、この遷移条件によって、それ以降のパターンマッチをやるか、直前のマッチングを無かったことにして他の候補を見つけるという動作を可能にする。さらに、この遷移条件に、入力文字シーケンスを切り替えるというコードを書くことにより、単一の入力ストリームのみのパターンマッチだけではなく、構文要素指定子のみでは対応できないような複数の領域に存在するパターンの組合せによる攻撃検出の記述も可能となる。なお、この遷移条件は、省略することが可能である。
【００３５】
同じ構文要素指定子で修飾した正規表現の並び（Ｓｎ（Ｒｎ１）  Ｓｎ（Ｒｎ２）  ．．．）は、入力文字列が、これらのどれかの１つの正規表現にマッチした場合に、次の構文要素のマッチング処理に進む、という意味を表す。一方、同じ構文要素指定子で修飾した正規表現をオペレータ”＊”または”／”によって連結した場合には、入力文字列がこれら全ての正規表現にマッチした時に、次のマッチングに進むという意味を表す。例えば、
Ｓｎ（Ｒｎ１）  ＊  Ｓｎ（Ｒｎ２）  ＊  ．．．  ［Ｔｎ］  ．．．
の“＊”は、可換オペレータである。すなわち、並びの順序はに関係なく、文字列に、どのような順序で、Ｒｎｉ（ｉ＝１，２，．．．）が現れてもよい。一方、“／”は、順序も含めたパターンである。
【００３６】
また、構文要素指定子に指定する構文要素については、入れ子構造があってもよい。図４は、ＨＴＴＰプロトコルにおける構文要素の入れ子構造を示した図であるが、図示のように、例えばＨＴＴＰのＵＲＬ指定において、ＣＧＩ名はＵＲＬ指定の一部である。
【００３７】
図５および図６は、この実施形態のパターン検出処理プログラム生成システムによる攻撃パターン検出処理プログラムの生成手順を示すフローチャートである。
【００３８】
以上のような構成をもつ攻撃パターンの記述は、攻撃パターン記述ファイル２２としてトランスレータ１０に入力される（図５ステップＡ１）。トランスレータ１０は、構文解析部１１、字句解析部１２、木構造生成部１３およびスキャナプログラム生成部１４を有しており、入力された攻撃パターンの記述は、構文解析部１１により構文解析が施され、また、この構文解析部１１から呼び出される字句解析部１２により字句解析が施される。
【００３９】
構文解析部１１は、攻撃パターン記述ファイル２２中のシンボルを字句解析部１２に抽出させ、これにより得られるシンボルリストと構文解析定義ファイル２１とを参照しながら、攻撃パターン記述ファイル２２の内容を構文解析し、その結果をリスト構造として出力する（図５ステップＡ２）。一方、字句解析部１２は、字句解析定義ファイル２３を参照しながら、攻撃パターン記述ファイル２２中のシンボルを抽出してシンボルリストとして出力する。
【００４０】
また、木構造生成部１２は、構文解析部１１から出力されたリスト構造を入力し、このリスト中の各ノードを探索しながらリスト構造を木構造に展開する（図５ステップＡ３）。
【００４１】
そして、スキャナプログラム生成部１４は、木構造生成部１２から出力された木構造を入力し、正規表現のパターンマッチを行うための有限オートマトンを表現した状態遷移データであるスキャナプログラム３１を以下の手順で作成する（図５ステップＡ４）。
【００４２】
木構造を入力したスキャナプログラム生成部１４は、まず、マッチング時におけるバックトラックを少なくするために、上位から見た場合に同等なノード（正規表現）の単一化を行う（図６ステップＢ１）。また、スキャナプログラム生成部１４は、後述する正規表現間の依存関係を示す依存関係グラフの生成を行うとともに（図６ステップＢ２）、構文要素毎の正規表現の抽出を行い（図６ステップＢ３）、正規表現のパターンマッチを行うための有限オートマトンを構成する（図６ステップＢ４）。そして、この有限オートマトンを構成すると、スキャナプログラム生成部１４は、その有限オートマトンを表現する状態遷移データをスキャナプログラム３１として出力する（図６ステップＢ５）。
【００４３】
このとき、構文要素に入れ子構造がある場合は、入れ子の先頭の構文要素について、より上位の構文要素の開始条件も付与することで、同時並行して正規表現のパターンマッチを行うオートマトンを構成する。
【００４４】
例えば、図４に示したＨＴＴＰプロトコルでは、ＵＲＩに対して、ＣＧＩは先頭の入れ子になっているので、ＣＧＩ名のパターンの開始条件は、
＜ＣＧＩ＿ｐａｔｔｅｒｎ，ＵＲＩ＿ｐａｔｔｅｒｎ＞
というような開始条件とする。
【００４５】
また、図６ステップＢ２で生成される依存関係グラフは、各パターンシーケンスでの正規表現の依存関係を有向グラフで表現するものであり、スキャナプログラム生成部１４は、この依存関係グラフに基づいた状態遷移チェック処理プログラムを生成する。この状態遷移チェック処理プログラムは、入力文字列が、ある正規表現にマッチしたときに、現在の有向グラフのノード位置からマッチパターンでの有向グラフの遷移先をチェックし、遷移可能なら、現在の状態をスタックにプッシュして有向グラフの現在位置を遷移し、新しい開始条件を設定して、後続の入力文字列のスキャンを継続するというものである。
【００４６】
実際のＨＴＴＰプロトコルで、ＣＧＩ名がａｔｔａｃｋ．ｐｌ、変数名ｖｕｌｎｅｒａｂｌｅの値にメタキャラクタがあるという攻撃パターンの記述は、
ＣＧＩ（＾ａｔｔａｃｋ．ｐｌ＾）  ｎａｍｅ（＾ｖｕｌｎｅｒａｂｌｅ＾）  ｖａｌｕｅ（［；＜｀￥￥｜］）  ａｃｔｉｏｎ；
となる。
【００４７】
また、ＣＧＩの最後に”｜”が付加されたパターンの記述は、
ＣＧＩ（￥｜＾）  ａｃｔｉｏｎ；
となる。この記述は、例えば、ｌｅｘのパターンだと、開始条件ＣＧＩ＿ｎａｍｅの正規表現として、
＜ＣＧＩ＿ｐａｔｔｅｒｎ＞  （￥｜）｛ＣＧＩ＿ｅｎｄ｝  ｛  ａｃｔｉｏｎ；  ｝
というパターンにコンパイルする。開始条件ＣＧＩ＿ｎａｍｅは、スペースか”？”を見つけると、別の開始条件に遷移するようにパターンを生成するので、”｜”の前にスペースや”？”がないことを正規表現で表す必要がなくなる。
【００４８】
そして、トランスレータ１０から出力されたスキャナプログラム３１は、コンパイラ１５によりスケルトンプログラム３２とともにコンパイルされて攻撃パターン検出ルーチン３３に変換される（図５ステップＡ５）。
【００４９】
このように、このパターン検出処理プログラム生成システムでは、構文要素指定子で正規表現を修飾すること等を可能とし、パターンの記述およびメンテナンスを容易に行うことを実現する。
【００５０】
図７には、攻撃パターン記述ファイル２２のサンプルが示されている。この攻撃パターン記述ファイル２２をトランスレータ１０に入力すると、トランスレータ１０は、（字句解析部１２による字句解析を含む）構文解析部１１による構文解析を実行し、その構文解析結果として出力されるリスト構造に基づき、木構造生成部１３が図８に示すような木構造を生成する。
【００５１】
そして、スキャナプログラム生成部１４は、この木構造を入力し、図９乃至図１０に示す正規表現パターンのテーブルを生成するとともに、図１１に示す依存関係グラフを生成する。
【００５２】
また、図１２には、スキャナプログラム生成部１４により生成された正規表現パターンのテーブルと有向グラフが組み込まれるスケルトンプログラム３２が示されている。このスケルトンプログラム３２のａ１の箇所に、正規表現パターンのテーブルが組み込まれ、ａ２の箇所に、依存関係グラフが組み込まれる。
【００５３】
この組み込みは、コンパイラ１５によるコンパイル時に行われ、その結果、サーバ防御装置４の攻撃パターン検出部４１で動作する攻撃パターン検出ルーチン３３が生成されることになる。
【００５４】
このように、この実施形態のパターン検出処理プログラム生成システムによれば、構文要素指定子で正規表現を修飾すること等を可能とし、パターンの記述およびメンテナンスを容易に行うことを実現する。
【００５５】
なお、前述した実施形態における攻撃パターン記述のオペレータや境界条件の記述の詳細は、単なる一例に過ぎず、本願発明は、ここで挙げた具体例に限定されるものではない。
【００５６】
つまり、本願発明は、前記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、前記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。たとえば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【００５７】
【発明の効果】
以上説明したように、本発明によれば、通信プロトコルの構文要素を取り込んだ単純かつ容易なパターン記述言語でパターン検出処理を生成することを可能としたパターン検出処理プログラム生成システムおよびパターン検出処理プログラム生成方法を提供することができる。
【図面の簡単な説明】
【図１】この発明の実施形態に係るパターン検出処理プログラム生成システムによって生成されるパターン検出処理プログラム（パターン検出ルーチン）の一適用例を示すためのネットワーク構成図。
【図２】同実施形態のパターン検出処理プログラム生成システムの機能ブロックを示す図。
【図３】同実施形態のシステム管理者が記述する攻撃パターンの構文を示す図。
【図４】ＨＴＴＰプロトコルにおける構文要素の入れ子構造を示した図。
【図５】同実施形態のパターン検出処理プログラム生成システムによる攻撃パターン検出処理の生成手順を示す第１のフローチャート。
【図６】同実施形態のパターン検出処理プログラム生成システムによる攻撃パターン検出処理の生成手順を示す第２のフローチャート。
【図７】同実施形態のパターン検出処理プログラム生成システムが入力する攻撃パターン記述ファイルのサンプルを示す図。
【図８】同実施形態のパターン検出処理プログラム生成システムが図７の攻撃パターン記述ファイルのサンプルから中間的に生成する木構造を示す図。
【図９】同実施形態のパターン検出処理プログラム生成システムが図８の木構造から生成する正規表現パターンのテーブルを示す第１の図。
【図１０】同実施形態のパターン検出処理プログラム生成システムが図８の木構造から生成する正規表現パターンのテーブルを示す第２の図。
【図１１】同実施形態のパターン検出処理プログラム生成システムが図８の木構造から生成する探索グラフを示す図。
【図１２】同実施形態のパターン検出処理プログラム生成システムが生成する正規表現パターンのテーブルおよび探索グラフが組み込まれるスケルトンプログラムの例を示す図。
【図１３】従来の記述言語を使ったパターン検出処理プログラムの記述例を示す図。
【符号の説明】
１…サーバコンピュータ、２…クライアントコンピュータ、３…インターネット、４…サーバ防御装置、１０…トランスレータ、１１…構文解析部、１２…字句解析部、１３…木構造生成部、１４…スキャナプログラム、１５…コンパイラ、２１…構文解析定義ファイル、２２…攻撃パターン記述ファイル、２３…字句解析定義ファイル、３１…スキャナプログラム、３２…スケルトンプログラム、３３…攻撃パターン検出ルーチン、４１…攻撃パターン検出部。
【図１】
2004240766.tif 000003
【図２】
2004240766.tif 000004
【図３】
2004240766.tif 000005
【図４】
2004240766.tif 000006
【図５】
2004240766.tif 000007
【図６】
2004240766.tif 000008
【図７】
2004240766.tif 000009
【図８】
2004240766.tif 000010
【図９】
2004240766.tif 000011
【図１０】
2004240766.tif 000012
【図１１】
2004240766.tif 000013
【図１２】
2004240766.tif 000014
【図１３】
2004240766.tif 000015