(57)【要約】【課題】本発明は、スタックスマッシングによるＤｏＳ攻撃に対する脆弱性を排除することができるようにする新たな技術の提供を目的とする。【解決手段】入力パケットをログとして保存し、スタックスマッシング攻撃を検出すると、狙われたリターンアドレスの位置を割り出して、それが指している位置を攻撃の痕跡の開始位置とする。続いて、入力パケットログ内から、攻撃の痕跡と最も長く一致するバイト列を見つけ、それを攻撃の痕跡とするとともに、入力パケットログから、その最長に一致したバイト列の指すパケットのヘッダ情報を得る。そして、攻撃の痕跡のバイト列とそのバイト列の持つヘッダ情報とをルール要素とする不正アクセス対処ルールを生成して、それを配付する。この配付を受けて、配付先では、以後、そのルールに含まれるスタックスマッシング攻撃と一致するパケットが外部から送られてくる場合に、それを遮断する。【選択図】          図１
2004334607.tif 000002
【特許請求の範囲】
【請求項１】
外部から送信されてくる不正なパケットをフィルタリングするために用いられる不正アクセス対処ルールを生成する方法であって、
関数のリターンアドレスに対して攻撃が行われたのかを検出する過程と、
上記攻撃により書き込まれた不正なリターンアドレスの位置を割り出す過程と、
上記不正なリターンアドレスの指す位置を上記攻撃の痕跡の開始位置として、その痕跡のバイト列を特定する過程と、
上記特定したバイト列をルール要素とする不正アクセス対処ルールを生成する過程とを備えることを、
特徴とする不正アクセス対処ルール生成方法。
【請求項２】
請求項１記載の不正アクセス対処ルール生成方法において、
入力パケットを保存する保存手段に対して、入力パケットを記録する過程を備え、
上記特定する過程では、上記保存手段に保存されるバイト列を検索対象として、上記痕跡の開始位置から最長に一致するバイト列を検索することで上記痕跡のバイト列を特定することを、
特徴とする不正アクセス対処ルール生成方法。
【請求項３】
請求項２記載の不正アクセス対処ルール生成方法において、
上記保存手段に保存される上記痕跡のバイト列の持つヘッダ情報を取得する過程を備え、
上記生成する過程では、上記ヘッダ情報をルール要素とする不正アクセス対処ルールを生成することを、
特徴とする不正アクセス対処ルール生成方法。
【請求項４】
外部から送信されてくる不正なパケットをフィルタリングするために用いられる不正アクセス対処ルールを生成する装置であって、
関数のリターンアドレスに対して攻撃が行われたのかを検出する手段と、
上記攻撃により書き込まれた不正なリターンアドレスの位置を割り出す手段と、
上記不正なリターンアドレスの指す位置を上記攻撃の痕跡の開始位置として、その痕跡のバイト列を特定する手段と、
上記特定したバイト列をルール要素とする不正アクセス対処ルールを生成する手段とを備えることを、
特徴とする不正アクセス対処ルール生成装置。
【請求項５】
請求項４記載の不正アクセス対処ルール生成装置において、
入力パケットを保存する保存手段を備え、
上記特定する手段は、上記保存手段に保存されるバイト列を検索対象として、上記痕跡の開始位置から最長に一致するバイト列を検索することで上記痕跡のバイト列を特定することを、
特徴とする不正アクセス対処ルール生成装置。
【請求項６】
請求項５記載の不正アクセス対処ルール生成装置において、
上記保存手段に保存される上記痕跡のバイト列の持つヘッダ情報を取得する手段を備え、
上記生成する手段は、上記ヘッダ情報をルール要素とする不正アクセス対処ルールを生成することを、
特徴とする不正アクセス対処ルール生成装置。
【請求項７】
請求項１ないし３のいずれか１項に記載の不正アクセス対処ルール生成方法の実現に用いられる処理をコンピュータに実行させるための不正アクセス対処ルール生成プログラム。
【請求項８】
請求項１ないし３のいずれか１項に記載の不正アクセス対処ルール生成方法の実現に用いられる処理をコンピュータに実行させるための不正アクセス対処ルール生成プログラムを記録した記録媒体。
【請求項９】
外部から送信されてくる不正なパケットをフィルタリングする方法であって、
関数のリターンアドレスに対して攻撃が行われたのかを検出して、その攻撃により書き込まれた不正なリターンアドレスの位置を割り出し、その不正なリターンアドレスの指す位置を攻撃の痕跡の開始位置として、その痕跡のバイト列を特定して、それをルール要素とすることで生成された不正アクセス対処ルールを保存する保存手段から、その不正アクセス対処ルールを読み出す過程と、
上記不正アクセス対処ルールに従って、外部から送信されてきたパケットが攻撃用のパケットであるのか否かを判断する過程と、
外部から送信されてきたパケットが攻撃用のパケットである場合に、そのパケットを遮断する過程とを備えることを、
特徴とする不正アクセス対処方法。
【請求項１０】
請求項９記載の不正アクセス対処方法において、
上記不正アクセス対処ルールを作成する装置から、上記不正アクセス対処ルールを入手して上記保存手段に登録する過程を備えることを、
特徴とする不正アクセス対処方法。
【請求項１１】
請求項９又は１０記載の不正アクセス対処方法において、
上記読み出す過程では、上記保存手段から、入力パケットのログから最長に一致するバイト列として検索された痕跡のバイト列をルール要素とすることで生成された不正アクセス対処ルールを読み出すことを、
特徴とする不正アクセス対処方法。
【請求項１２】
請求項１１記載の不正アクセス対処方法において、
上記読み出す過程では、上記保存手段から、上記痕跡のバイト列の持つヘッダ情報をルール要素とすることで生成された不正アクセス対処ルールを読み出すことを、
特徴とする不正アクセス対処方法。
【請求項１３】
外部から送信されてくる不正なパケットをフィルタリングする装置であって、
関数のリターンアドレスに対して攻撃が行われたのかを検出して、その攻撃により書き込まれた不正なリターンアドレスの位置を割り出し、その不正なリターンアドレスの指す位置を攻撃の痕跡の開始位置として、その痕跡のバイト列を特定して、それをルール要素とすることで生成された不正アクセス対処ルールを保存する手段と、
上記不正アクセス対処ルールに従って、外部から送信されてきたパケットが攻撃用のパケットであるのか否かを判断する手段と、
外部から送信されてきたパケットが攻撃用のパケットである場合に、そのパケットを遮断する手段とを備えることを、
特徴とする不正アクセス対処装置。
【請求項１４】
請求項１３記載の不正アクセス対処装置において、
上記不正アクセス対処ルールを作成する装置から、上記不正アクセス対処ルールを入手して上記保存手段に登録する手段を備えることを、
特徴とする不正アクセス対処装置。
【請求項１５】
請求項１３又は１４記載の不正アクセス対処装置において、
上記保存する手段は、入力パケットのログから最長に一致するバイト列として検索された痕跡のバイト列をルール要素とすることで生成された不正アクセス対処ルールを保存することを、
特徴とする不正アクセス対処装置。
【請求項１６】
請求項１５記載の不正アクセス対処装置において、
上記保存する手段は、上記痕跡のバイト列の持つヘッダ情報をルール要素とすることで生成された不正アクセス対処ルールを保存することを、
特徴とする不正アクセス対処装置。
【請求項１７】
請求項９ないし１２のいずれか１項に記載の不正アクセス対処方法の実現に用いられる処理をコンピュータに実行させるための不正アクセス対処プログラム。
【請求項１８】
請求項９ないし１２のいずれか１項に記載の不正アクセス対処方法の実現に用いられる処理をコンピュータに実行させるための不正アクセス対処プログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、バッファオーバーフローの脆弱性を悪用したスタックスマッシング攻撃に対する防御を実現するシステムの構築に用いられる不正アクセス対処ルール生成方法及びその装置ならびに不正アクセス対処方法及びその装置と、その不正アクセス対処ルール生成方法の実現に用いられる不正アクセス対処ルール生成プログラム及びそのプログラムを記録した記録媒体と、その不正アクセス対処方法の実現に用いられる不正アクセス対処プログラム及びそのプログラムを記録した記録媒体とに関する。
【０００２】
【従来の技術】
スタックメモリ上には、サブルーチン呼び出しの際に呼び出し元へ戻るためのリターンアドレスや、サブルーチン内でのみ利用される局所変数が格納される。これから、サブルーチン内でのみ利用される局所変数として宣言されたバッファに対して、バッファの境界を越えて書き込みが発生すると、リターンアドレスが書き換わることになる。
【０００３】
スタックスマッシング攻撃は、この性質を利用してプログラムの処理フローを変更して、任意のプログラムを実行させるという攻撃である。
【０００４】
このスタックスマッシング攻撃に対する防御を実現する従来技術として、保護対象プログラムに対して、コンパイル時にリターンアドレスの保護のための特別の値であるガード変数を挿入して、関数のリターン処理の直前に、ガード変数の有効性を確認し、ガード変数が破壊されているときはプロセスを異常終了する、という処理を挿入するものがある（例えば、特許文献１参照）。
【０００５】
これにより、スタックスマッシング攻撃によるサーバの乗っ取りやデータの改竄といった不正侵入からホストを防御できるようになる。
【０００６】
また、上記の従来技術の他にも、スタック上のリターンアドレス格納箇所を書き込み禁止にすることでリターンアドレスの書き換えを防止する手法や、リターンアドレス専用のスタックを作成し、関数の入口でリターンアドレスをリターンアドレス専用スタックにコピーし、関数リターン処理で専用スタックに格納されている値とリターンアドレスとを比較することにより、リターンアドレスを保護する手法などが提案されている。
【０００７】
また、バッファオーバーフローを原因とするあらゆる攻撃を防止するために、全ての配列へのアクセスに対して、配列の境界を越えるアクセスがないかをチェックする、という手法も考えられる。
【０００８】
【特許文献１】
特開２００１−２１６１６１
【０００９】
【発明が解決しようとする課題】
しかしながら、上述したスタックスマッシング攻撃を防止するための従来技術は、次のような欠点を有している。
【００１０】
すなわち、従来のホストでのスタックスマッシング攻撃対策では、検出契機がスタックスマッシング攻撃によるパケットがホスト内に侵入した後であったため、そのパケットを処理するプログラムを異常終了させるしかない。
【００１１】
これから、攻撃を受けたプログラムがメモリ常駐型のサーバプログラムであった場合は、たとえ攻撃検出機能と連動してサーバプログラムを再実行したとしても、継続的な攻撃によりサービスを停止されていた。
【００１２】
つまり、従来技術に従っていると、スタックスマッシング攻撃によるサーバの乗っ取りやデータの改竄といった不正侵入を防ぐことは出来ても、スタックスマッシングによるＤｏＳ攻撃（Ｄｅｎｉａｌ  Ｏｆ  Ｓｅｒｖｉｃｅ：あるサービスを利用不能な状態に陥れる攻撃）に対する脆弱性は残ったままとなっていた。
【００１３】
また、どの従来技術もホストでの攻撃を行うものであるため、サイト全体に対策を行おうとすると手間がかかっていた。
【００１４】
本発明はかかる事情に鑑みてなされたものであって、その目的は、スタックスマッシングによるＤｏＳ攻撃に対する脆弱性を排除することができるようにする新たなスタックスマッシング攻撃対策システムを提供することにある。
【００１５】
そして、本発明の他の目的は、ホストに存在するバッファオーバーフローの脆弱性に関する対策をネットワークで一元的に行うことで、手間をかけずにサイト全体に対策を施すことができるようにする新たなスタックスマッシング攻撃対策システムを提供することにある。
【００１６】
【課題を解決するための手段】
この目的を達成するために本発明によるスタックスマッシング攻撃対策システムは、外部から送信されてくる不正なパケットをフィルタリングするために用いられる不正アクセス対処ルールを生成する不正アクセス対処ルール生成装置と、その生成された不正アクセス対処ルールを使って、外部から送信されてくる不正なパケットをフィルタリングする不正アクセス対処装置とから構成される。
【００１７】
（１）不正アクセス対処ルール生成装置の構成
本発明の不正アクセス対処ルール生成装置は、外部から送信されてくる不正なパケットをフィルタリングするために用いられる不正アクセス対処ルールを生成する処理を行うために、（イ）関数のリターンアドレスに対して攻撃が行われたのかを検出する検出手段と、（ロ）その攻撃により書き込まれた不正なリターンアドレスの位置を割り出す割出手段と、（ハ）その不正なリターンアドレスの指す位置を攻撃の痕跡の開始位置として、その痕跡のバイト列を特定する特定手段と、（ニ）特定手段の特定したバイト列をルール要素とする不正アクセス対処ルールを生成する生成手段と、（ホ）入力パケットを保存する保存手段と、（ヘ）保存手段に保存される攻撃の痕跡のバイト列の持つヘッダ情報を取得する取得手段とを備えるように構成する。
【００１８】
以上の各処理手段が動作することで実現される本発明の不正アクセス対処ルール生成方法はコンピュータプログラムで実現できるものであり、このコンピュータプログラムは、半導体メモリなどの記録媒体に記録して提供したり、ネットワークを介して提供することができる。
【００１９】
このように構成される本発明の不正アクセス対処ルール生成装置では、関数のリターンアドレスに対して攻撃が行われたことを検出すると、その攻撃により書き込まれた不正なリターンアドレスの位置を割り出す。
【００２０】
そして、その不正なリターンアドレスの指す位置を攻撃の痕跡の開始位置として、例えば、入力パケットログのバイト列の中から、その痕跡の開始位置から最長に一致するバイト列を検索することで攻撃の痕跡のバイト列を特定することにより、その痕跡のバイト列を特定する。
【００２１】
そして、その特定したバイト列と、入力パケットログから取得されるその特定したバイト列の持つヘッダ情報とをルール要素とする不正アクセス対処ルールを生成する。
【００２２】
（２）本発明の不正アクセス対処装置の構成
本発明の不正アクセス対処装置は、外部から送信されてくる不正なパケットをフィルタリングする処理を行うために、（イ）関数のリターンアドレスに対して攻撃が行われたのかを検出して、その攻撃により書き込まれた不正なリターンアドレスの位置を割り出し、その不正なリターンアドレスの指す位置を攻撃の痕跡の開始位置として、その痕跡のバイト列を特定して、それをルール要素とすることで生成された不正アクセス対処ルールを保存する保存手段と、（ロ）不正アクセス対処ルールを作成する装置から、不正アクセス対処ルールを入手して保存手段に登録する登録手段と、（ハ）保存手段に保存される不正アクセス対処ルールに従って、外部から送信されてきたパケットが攻撃用のパケットであるのか否かを判断する判断手段と、（ニ）判断手段により外部から送信されてきたパケットが攻撃用のパケットであると判断される場合に、そのパケットを遮断する遮断手段とを備えるように構成する。
【００２３】
この構成を採るときに、保存手段は、入力パケットのログから最長に一致するバイト列として検索された痕跡のバイト列をルール要素とすることで生成された不正アクセス対処ルールを保存することがあり、このとき、その痕跡のバイト列の持つヘッダ情報をルール要素とすることで生成された不正アクセス対処ルールを保存することがある。
【００２４】
以上の各処理手段が動作することで実現される本発明の不正アクセス対処方法はコンピュータプログラムで実現できるものであり、このコンピュータプログラムは、半導体メモリなどの記録媒体に記録して提供したり、ネットワークを介して提供することができる。
【００２５】
このように構成される本発明の不正アクセス対処装置では、本発明の不正アクセス対処ルール生成装置の生成した不正アクセス対処ルールを使って、外部から送信されてきたパケットが攻撃用のパケットであるのか否かを判断して、その判断により、外部から送信されてきたパケットが攻撃用のパケットであると判断する場合には、そのパケットを遮断する。
【００２６】
（３）本発明により実現されるスタックスマッシング攻撃対策システム
次に、このように構成される本発明の不正アクセス対処ルール生成装置と本発明の不正アクセス対処装置とにより実現されるスタックスマッシング攻撃対策システムについて説明する。
【００２７】
本発明の不正アクセス対処ルール生成装置では、あらかじめネットワーク経由でのプログラムに対する入力パケットをログとして保存しておくとともに、例えば、従来技術であるガード変数を用いた手法によりスタックスマッシング攻撃を検出する。
【００２８】
スタックスマッシング攻撃を検出すると、スタックスマッシング攻撃により狙われたリターンアドレスの位置を割り出して、その割り出したリターンアドレスが指している位置をスタックスマッシング攻撃の痕跡の開始位置（攻撃対象のプログラムに書き込まれた攻撃用シェルコードの先頭位置）とする。
【００２９】
続いて、スタックスマッシング攻撃の痕跡の長さを確定するために、攻撃対象のプログラムに送信されてきた入力パケットログ内から、スタックスマッシング攻撃の痕跡と最も長く一致するバイト列を見つけ、その最も長く一致したバイト列をスタックスマッシング攻撃の痕跡とする。
【００３０】
続いて、攻撃対象のプログラムに送信されてきた入力パケットログから、その最長に一致したバイト列の指すパケットの持つヘッダ情報（ＩＰヘッダ・ＴＣＰヘッダ・ＵＤＰヘッダなどの情報）を得る。
【００３１】
そして、そのようにして得たスタックスマッシング攻撃の痕跡のバイト列と、そのバイト列の持つヘッダ情報とをルール要素とする不正アクセス対処ルールを生成して、それを本発明の不正アクセス対処装置に通知する。
【００３２】
これを受けて、本発明の不正アクセス対処装置は、本発明の不正アクセス対処装置から送信されてくる不正アクセス対処ルールを受信して、以後、その不正アクセス対処ルールに含まれるスタックスマッシング攻撃と一致するパケットが外部から送られてくる場合に、それを遮断する。
【００３３】
このようにして、本発明によれば、スタックスマッシング攻撃を１度受けると、２度目以降のスタックスマッシング攻撃がホストに到達することを防ぐことができるようになることで、スタックスマッシングによるＤｏＳ攻撃に対する脆弱性を排除することができるようになる。
【００３４】
そして、本発明によれば、同一ネットワーク上のスタックスマッシング攻撃対策が施されていないホストに対するスタックスマッシング攻撃についても、ネットワークで防ぐことができるようになる。つまり、手間をかけずにサイト全体に、スタックスマッシング攻撃に対する対策を施すことができるようになる。
【００３５】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００３６】
図１に、本発明により実現されるスタックスマッシング攻撃対策システムのシステム構成例を図示する。
【００３７】
この図に示すように、本発明により実現されるスタックスマッシング攻撃対策システムは、上述した本発明の不正アクセス対処ルール生成装置の一実施形態例であるパケットフィルタリングルール生成装置１と、上述した本発明の不正アクセス対処装置の一実施形態例であるパケットフィルタリング装置２とから構成される。
【００３８】
ここで、パケットフィルタリングルール生成装置１は、例えば特定のホスト上に構築され、一方、パケットフィルタリング装置２は、ネットワークに存在する全てのホスト上に構築されることになる。
【００３９】
図１を用いて、本発明によるスタックスマッシング攻撃対策についての大まかな処理の流れについて説明する。
【００４０】
先ず最初に、外部ネットワークからスタックスマッシング攻撃によるパケットが、パケットフィルタリングルール生成装置１に送信されてくる。
【００４１】
これを受けて、パケットフィルタリングルール生成装置１は、そのスタックスマッシング攻撃に対処するためのパケットフィルタリングルールを自動生成し、パケットフィルタリング装置２に対して、その自動生成したパケットフィルタリングルールを通知する。
【００４２】
これを受けて、パケットフィルタリング装置２は、パケットフィルタリングルール生成装置１から通知されたパケットフィルタリングルールを受信し、以後、外部ネットワークから入ってくる、そのパケットフィルタリングルールに含まれるスタックスマッシング攻撃と一致するパケットを遮断することにより、スタックスマッシング攻撃を遮断する。
【００４３】
図２に、この本発明によるスタックスマッシング攻撃対策についての処理を実現すべく用意されるパケットフィルタリングルール生成装置１の装置構成の一実施形態例を図示し、図３に、この本発明によるスタックスマッシング攻撃対策についての処理を実現すべく用意されるパケットフィルタリング装置２の装置構成の一実施形態例を図示する。
【００４４】
パケットフィルタリングルール生成装置１は、図２に示すように、プログラム毎の入力パケットを保存する入力パケット保存部１０と、外部ネットワークから送信されてくる入力パケットをログとして入力パケット保存部１０にロギングする入力パケットロギング部１１と、所定のサーバ処理を実行するサーバプログラム１２と、あらかじめサーバプログラム１２などに組み込まれて、バッファのオーバーフロー（すなわち、スタックスマッシング攻撃の有無）を検出するバッファオーバーフロー検出部１３と、スタックスマッシング攻撃の痕跡を抽出するスタックスマッシング攻撃痕跡抽出部１４と、スタックスマッシング攻撃を遮断するためのパケットフィルタリングルールを生成するパケットフィルタリングルール生成部１５と、パケットフィルタリング装置２に対して、生成されたパケットフィルタリングルールを通知するパケットフィルタリングルール通知部１６とを備える。
【００４５】
ここで、入力パケット保存部１０は、スタックスマッシング攻撃の痕跡を特定するために用意されるものであって、図４に示すように、プログラム毎に、そのプログラムに送信されてきたパケットのヘッダ情報（プロトコル種別、送信元ＩＰアドレス、送信元ポート番号、送信先ＩＰアドレス、送信先ポート番号など）と、そのパケットのペイロード（バイト列）などを保存することになる。
【００４６】
一方、パケットフィルタリング装置２は、図３に示すように、スタックスマッシング攻撃を遮断するためのパケットフィルタリングルールを保存するパケットフィルタリングルールテーブル部２０と、パケットフィルタリングルール生成装置１から送信されてくるパケットフィルタリングルールを受信するパケットフィルタリングルール受信部２１と、受信されたパケットフィルタリングルールをパケットフィルタリングルールテーブル部２０に登録するパケットフィルタリングルール登録部２２と、パケットフィルタリングルールテーブル部２０に保存されるパケットフィルタリングルールを元に、外部から送信されてるスタックスマッシング攻撃のパケットを遮断するパケットフィルタリング部２３とを備える。
【００４７】
次に、図５に従って、パケットフィルタリングルール生成装置１の実行するスタックスマッシング攻撃の痕跡の検出処理について説明する。
【００４８】
ここで、図５中に示す１００はスタックメモリ、２００はスタックスマッシング攻撃の対象となる攻撃対象プログラムである。
【００４９】
スタックスマッシング攻撃の攻撃者は、攻撃対象プログラム２００を攻撃する場合、攻撃対象プログラム２００に対して攻撃用シェルコードを書き込むとともに、関数リターンのときにその攻撃用シェルコードが呼び出されることになるようにと、バッファオーバーフローを使ってスタックメモリ１００に格納されるリターンアドレスを書き換えることで、スタックスマッシング攻撃を実行する。
【００５０】
このスタックスマッシング攻撃の有無を検出するために、パケットフィルタリングルール生成装置１は、バッファとリターンアドレス格納位置との間に、特別の値であるガード変数を挿入して、関数のリターン処理の直前に、このガード変数の有効性を確認するようにしている。すなわち、ガード変数が破壊されている場合には、スタックスマッシング攻撃が行われたと判断するようにしているのである。
【００５１】
そして、パケットフィルタリングルール生成装置１は、スタックスマッシング攻撃が行われたことを検出した場合には、攻撃用シェルコードを指すリターンアドレスの書込位置を割り出すことで、スタックスマッシング攻撃の痕跡の開始位置を求めて、その開始位置を用いて、入力パケット保存部１０に格納される攻撃対象プログラム２００についての入力パケットログの中から最も長く一致するバイト列を探し出し、そのバイト列をスタックスマッシング攻撃の痕跡とするようにしている。
【００５２】
ここで、スタックスマッシング攻撃の攻撃者は、ガード変数が挿入されていることを知らないので、本来のリターンアドレスの格納位置よりも１つ下の格納位置である図中の▲１▼に示す格納位置にリターンアドレスが格納されていると思って、リターンアドレスの書き換えを行うので、この▲１▼の格納位置に格納されるリターンアドレスを特定することにより、攻撃用シェルコードを指すリターンアドレスを特定することになる。
【００５３】
次に、図６の処理フローに従って、パケットフィルタリングルール生成装置１の実行するパケットフィルタリングルールの生成処理について説明する。
【００５４】
パケットフィルタリングルール生成装置１は、関数リターンの要求が発行されると、図６の処理フローに示すように、先ず最初に、ステップ１０で、ガード変数の値を読み取り、続くステップ１１で、その読み取ったガード変数が書き換えられているのか否かを判断して、ガード変数が書き換えられていないことを判断するときには、スタックスマッシング攻撃が行われなかったことを判断して、そのまま処理を終了する。
【００５５】
一方、ステップ１１で、ガード変数が書き換えられていることでスタックスマッシング攻撃が行われたことを判断するときには、ステップ１２に進んで、スタックスマッシング攻撃が設定したリターンアドレスの指す攻撃対象プログラム２００の位置を、スタックスマッシング攻撃の痕跡開始位置とする。
【００５６】
すなわち、図５で説明したように、図中の▲１▼の格納位置に格納されるリターンアドレスの指す攻撃対象プログラム２００の位置を、スタックスマッシング攻撃の痕跡開始位置とするのである。
【００５７】
続いて、ステップ１３で、入力パケット保存部１０に保存される攻撃対象プログラム２００に送られてきたパケットを検索対象として、攻撃開始位置を起点とするバイト列に最も長く一致するバイト列を検索して、それを攻撃用シェルコードとする。
【００５８】
すなわち、図５で説明したように、スタックスマッシング攻撃の痕跡の開始位置を用いて、攻撃対象プログラム２００についての入力パケットログの中から最も長く一致するバイト列を探し出し、そのバイト列をスタックスマッシング攻撃の痕跡とするのである。
【００５９】
続いて、ステップ１４で、入力パケット保存部１０を参照することで、その検索したバイト列の指すパケットの持つヘッダ情報を取得する。すなわち、プロトコル種別や送信先ポート番号などを取得するのである。
【００６０】
続いて、ステップ１５で、ステップ１３で検索したバイト列とステップ１４で取得したヘッダ情報とから、遮断するパケットについて記述するパケットフィルタリングルールを生成する。
【００６１】
例えば、図７に示すように、こういうプロトコル種別で、こういう送信先ポート番号で、こういうペイロード（バイト列）のパケットについては、スタックスマッシング攻撃のパケットであるので、それについては遮断する必要があるということについて記述するパケットフィルタリングルールを生成するのである。
【００６２】
続いて、ステップ１６で、パケットフィルタリング装置２に対して、生成したパケットフィルタリングルールを通知して、処理を終了する。
【００６３】
この通知を受けて、パケットフィルタリング装置２は、図３に示した構成に従って、パケットフィルタリングルール生成装置１から通知されたパケットフィルタリングルールを受信して、パケットフィルタリングルールテーブル部２０に保存するように処理する。
【００６４】
これから、パケットフィルタリング装置２のパケットフィルタリングルールテーブル部２０には、図８に示すようなルール構造を持つパケットフィルタリングルール（複数のこともある）が格納されることになる。
【００６５】
次に、図９の処理フローに従って、パケットフィルタリング装置２の実行するパケットフィルタリング処理について説明する。
【００６６】
パケットフィルタリング装置２は、外部ネットワークから送信されてくるパケットを受信すると、図９の処理フローに示すように、先ず最初に、ステップ２０で、受信したパケットのペイロードを抽出する。
【００６７】
続いて、ステップ２１で、受信したパケットのヘッダ情報から、プロトコル種別と送信先ポート番号とを取得する。
【００６８】
続いて、ステップ２２で、取得したプロトコル種別と一致するプロトコル種別をルール要素とするパケットフィルタリングルールがパケットフィルタリングルールテーブル部２０に登録されているのか否かを判断して、登録されていないことを判断するときには、受信したパケットがスタックスマッシング攻撃のパケットではないので、ステップ２３に進んで、受信したパケットをプログラムに渡して、処理を終了する。
【００６９】
一方、ステップ２２で、プロトコル種別が一致するパケットフィルタリングルールがパケットフィルタリングルールテーブル部２０に登録されていることを判断するときには、ステップ２４に進んで、そのパケットフィルタリングルールの持つ送信先ポート番号が取得した送信先ポート番号と一致するのか否かを判断して、一致しないことを判断するときには、受信したパケットがスタックスマッシング攻撃のパケットではないので、ステップ２５に進んで、受信したパケットをプログラムに渡して、処理を終了する。
【００７０】
一方、ステップ２４で、プロトコル種別が一致するパケットフィルタリングルールが送信先ポート番号についても一致することを判断するときには、ステップ２６に進んで、そのパケットフィルタリングルールの持つペイロードが抽出したペイロードと一致するのか否かを判断して、一致しないことを判断するときには、スタックスマッシング攻撃のパケットではないので、ステップ２７に進んで、受信したパケットをプログラムに渡して、処理を終了する。
【００７１】
一方、ステップ２６で、ペイロードについても一致することを判断するときには、受信したパケットがスタックスマッシング攻撃のパケットであるので、ステップ２８に進んで、受信したパケットを遮断して、処理を終了する。
【００７２】
このようにして、パケットフィルタリング装置２は、プロトコルと送信先ポート番号とペイロードとがパケットフィルタリングルールと一致するパケットを受信する場合に、その受信したパケットを遮断するように処理するのである。
【００７３】
ここで、バッファオーバーフローの脆弱性が存在するサービスを外部ネットワークに提供したくない場合は、運用によってパケットフィルタリングルールとして用いるルール要素を減らすこともできる。
【００７４】
例えば、プロトコルとポート番号とだけをパケットフィルタリングルールのルール要素として利用することで、バッファオーバーフローの脆弱性が存在するサービスの提供を停止するようにしてもよい。
【００７５】
【発明の効果】
本発明によって得られる効果は下記のとおりである。
【００７６】
まず１つ目は、スタックスマッシング攻撃を１度受けると、２度目以降の同様のスタックスマッシング攻撃をネットワークで遮断することができ、これにより、スタックスマッシングによるＤｏＳ攻撃に対する脆弱性を排除することができるようになることである。
【００７７】
従来のホストでのスタックスマッシング攻撃対策では、検出契機がスタックスマッシング攻撃によるパケットがホスト内に侵入した後であったため、そのパケットを処理するプログラムを異常終了させる他なく、攻撃を受けたプログラムがメモリ常駐型のサーバプログラムであった場合は、たとえ攻撃検出機能と連動してサーバプログラムを再実行したとしても、継続的な攻撃によりサービスを停止されていた。
【００７８】
これに対して、本発明では、１度目の攻撃でパケットフィルタリングルールを自動生成し、ネットワークで２度目以降の攻撃を遮断することで、サービスを継続することを可能にした。
【００７９】
２つ目は、ホストに存在するバッファオーバーフローの脆弱性に関する対策をネットワークで一元的に行うことで、手間をかけずにサイト全体に対策を施すことができるようになることである。
【００８０】
従来の未知のバッファオーバーフローの脆弱性を突いたスタックスマッシング攻撃に対する対策は、ホスト単位で行われていたため、サイト全体に対策を施すには手間がかかった。
【００８１】
これに対して、本発明では、ネットワークでスタックスマッシング攻撃を防ぐことで、手間をかけずにサイト全体に対策を施すことを可能にした。
【図面の簡単な説明】
【図１】本発明により実現されるスタックスマッシング攻撃対策システムのシステム構成例である。
【図２】パケットフィルタリングルール生成装置の装置構成の一実施形態例である。
【図３】パケットフィルタリング装置の装置構成の一実施形態例である。
【図４】入力パケット保存部に格納される入力パケットの説明図である。
【図５】パケットフィルタリングルール生成装置の実行するスタックスマッシング攻撃の痕跡の検出処理の説明図である。
【図６】パケットフィルタリングルール生成装置の実行する処理フローである。
【図７】パケットフィルタリングルールの一例を示す図である。
【図８】パケットフィルタリングルールテーブル部に格納されるパケットフィルタリングルールの説明図である。
【図９】パケットフィルタリング装置の実行する処理フローである。
【符号の説明】
１    パケットフィルタリングルール生成装置
２    パケットフィルタリング装置
１０  入力パケット保存部
１１  入力パケットロギング部
１２  サーバプログラム
１３  バッファオーバーフロー検出部
１４  スタックスマッシング攻撃痕跡抽出部
１５  パケットフィルタリングルール生成部
１６  パケットフィルタリングルール通知部
２０  パケットフィルタリングルールテーブル部
２１  パケットフィルタリングルール受信部
２２  パケットフィルタリングルール登録部
２３  パケットフィルタリング部
【図１】
2004334607.tif 000003
【図２】
2004334607.tif 000004
【図３】
2004334607.tif 000005
【図４】
2004334607.tif 000006
【図５】
2004334607.tif 000007
【図６】
2004334607.tif 000008
【図７】
2004334607.tif 000009
【図８】
2004334607.tif 000010
【図９】
2004334607.tif 000011