(57)【要約】【課題】受信パケットの中から未知の攻撃パケットを検出できるようにする。【解決手段】受信パケット管理部１３５は受信パケットをパケット保存領域１３４ｂに保存すると共にパケット比較部１３６に渡す。パケット比較部１３６は、受信パケットをパターンファイル格納領域１３４ｃに格納されている各パターン情報の示すパターンと比較することで既知の攻撃パケットを検出する。受信パケットが既知の攻撃パケットでない場合、当該パケットはパケット処理モジュール１２で処理され、処理が終了した時点で当該パケットはパケット保存領域１３４ｂから削除される。受信パケット管理部１３５は、パケット保存領域１３４ｂに一定時間を超えて保存されているパケットを検出し、未知の攻撃パケットであるとしてパターンファイル格納領域１３４ｃに追加する。【選択図】      図１
2005045649.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークから受信されたパケットを処理するパケット処理モジュールを備えたパケット処理装置に設けられ、受信パケットの中から攻撃パケットを検出する攻撃パケット検出装置であって、
受信パケットを保存するパケット保存手段と、
受信パケットに対する前記パケット処理モジュールによる処理が終了した時点で当該パケットを前記パケット保存手段から削除する手段と、
前記パケット保存手段に保存されてから一定時間を経過しても当該パケット保存手段に残されている受信パケットを検出する手段と、
前記検出手段により検出された受信パケットを前記パケット処理装置に対する未知の攻撃パケットであると決定する手段と
を具備することを特徴とする攻撃パケット検出装置。
【請求項２】
前記決定手段により未知の攻撃パケットであると決定された受信パケットから抽出された当該パケットを特定するためのパターンを示すパターン情報を格納するパターン格納手段と、
受信パケットを前記パターン格納手段に格納されている各パターン情報の示すパターンと比較するパケット比較手段と、
前記パケット比較手段による比較で一致が検出された場合、対応する受信パケットを攻撃パケットであるとして破棄する手段と、
前記パケット比較手段による比較で一致が検出されなかった場合、対応する受信パケットを前記パケット処理モジュールに転送する手段と
を更に具備し、
前記削除手段は、前記破棄手段により受信パケットが破棄された場合にも、当該パケットを前記パケット保存手段から削除する
ことを特徴とする請求項１記載の攻撃パケット検出装置。
【請求項３】
前記パケット保存手段に保存された受信パケットを管理するための管理情報であって、当該受信パケットの保存時刻を示す時刻情報を含む管理情報を保存するパケット管理情報保存手段を更に具備し、
前記検出手段は、前記パケット管理情報保存手段に保存されている管理情報の中から、当該管理情報に含まれている時刻情報の示す時刻から現在時刻までの経過時間が前記一定時間を経過している管理情報を検出することにより、当該検出された管理情報により管理されている受信パケットを検出し、
前記削除手段は、前記検出手段により検出された受信パケットの管理情報を前記パケット管理情報保存手段から削除することで、当該管理情報により管理されるパケットを前記パケット保存手段から論理的に削除する
ことを特徴とする請求項２記載の攻撃パケット検出装置。
【請求項４】
前記パケット保存手段に保存された受信パケットを管理するための、対応するパケットが存在しない第１の状態、対応するパケットが前記攻撃パケット検出装置内で処理されている第２の状態、または対応するパケットが前記攻撃パケット検出装置外で処理されている第３の状態を示すフラグ情報と、当該フラグ情報が前記第２または第３の状態を示す際の時刻を示す時刻情報とを含む管理情報を保存するパケット管理情報保存手段であって、前記パケット保存手段への受信パケットの保存時には、前記第２の状態を示すフラグ情報と、当該受信パケットの保存時の時刻を示す時刻情報とを含む管理情報を保存するパケット管理情報保存手段と、
前記パケット比較手段による比較で不一致が検出された場合、前記パケット管理情報保存手段に保存されている対応する受信パケットの管理情報に含まれているフラグ情報を前記第３の状態を示すように変更すると共に、当該管理情報中の時刻情報をその際の時刻を示すように変更する手段と
を更に具備し、
前記検出手段は、前記パケット管理情報保存手段に保存されている管理情報の中から、当該管理情報に含まれているフラグ情報が前記第２の状態を示し、且つ当該管理情報に含まれている時刻情報の示す時刻から現在時刻までの経過時間が第１の一定時間を経過している管理情報を検出すると共に、前記パケット管理情報保存手段に保存されている管理情報の中から、当該管理情報に含まれているフラグ情報が前記第３の状態を示し、且つ当該管理情報に含まれている時刻情報の示す時刻から現在時刻までの経過時間が第２の一定時間を経過している管理情報を検出することにより、当該検出された管理情報により管理されている受信パケットを検出し、
前記削除手段は、前記検出手段により受信パケットが検出された場合には、前記パケット管理情報保存手段に保存されている当該受信パケットの管理情報に含まれているフラグ情報を前記第１の状態に変更することにより、前記破棄手段により受信パケットが破棄された場合には、前記パケット管理情報保存手段に保存されている当該破棄された受信パケットの管理情報に含まれているフラグ情報を前記第１の状態に変更することにより、いずれも当該受信パケットの管理情報を前記パケット管理情報保存手段から論理的に削除して、当該受信パケットを前記パケット保存手段から論理的に削除する
ことを特徴とする請求項２記載の攻撃パケット検出装置。
【請求項５】
前記決定手段は、前記検出手段により検出された受信パケットが未知の攻撃パケットであるかを決定するために、前記攻撃パケット検出装置内部または前記攻撃パケット検出装置外部のうち、当該受信パケットを処理中の部分の状態が異常であるかを監視する手段を含み、異常である場合だけ当該受信パケットが未知の攻撃パケットであると決定することを特徴とする請求項１記載の攻撃パケット検出装置。
【請求項６】
前記検出手段は、前記攻撃パケット検出装置の動作期間中、定期的に起動されることを特徴とする請求項１記載の攻撃パケット検出装置。
【請求項７】
前記パケット保存手段は書き換えが可能な不揮発性記憶手段であり、
前記検出手段は、前記攻撃パケット検出装置の終了時にも起動され、
前記削除手段は、前記攻撃パケット検出装置の終了時に、前記検出手段による検出動作完了後に、前記パケット保存手段から全ての受信パケットを削除することを特徴とする請求項６記載の攻撃パケット検出装置。
【請求項８】
前記検出手段は、前記攻撃パケット検出装置の起動時にも、前記パケット保存手段に残されている受信パケットを検出することを特徴とする請求項７記載の攻撃パケット検出装置。
【請求項９】
前記決定手段による攻撃パケットであるとの決定の正否をシステム管理者に委ねるために、攻撃パケットであると決定された受信パケットを出力手段を介してシステム管理者に通知する手段を更に具備することを特徴とする請求項１記載の攻撃パケット検出装置。
【請求項１０】
ネットワークから受信されたパケットを処理するパケット処理モジュールを備えたパケット処理装置において、受信パケットの中から攻撃パケットを検出する攻撃パケット検出方法であって、
受信パケットをパケット保存手段に保存するステップと、
受信パケットに対する前記パケット処理モジュールによる処理が終了した時点で当該パケットを前記パケット保存手段から削除するステップと、
前記パケット保存手段に保存されてから一定時間を経過しても当該パケット保存手段に残されている受信パケットを検出するステップと、
前記検出ステップで検出された受信パケットを前記パケット処理装置に対する未知の攻撃パケットであると決定するステップと
を具備することを特徴とする攻撃パケット検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークから受信されたパケットの中から未知の攻撃パケットを検出するのに好適な攻撃パケット検出装置及び方法に関する。
【背景技術】
【０００２】
近年、ネットワークに接続された機器上でパケットの処理を行うモジュール（パケット処理モジュール）のセキュリティホールに対して攻撃する攻撃パケット（不正パケット）を検出して当該攻撃パケットによる攻撃を防御する技術が種々開発されている。この攻撃パケットを検出する代表的な技術として、攻撃パケットに共通のパターン（攻撃パターン）を予めデータベース化したパターンファイル（つまり静的なパターンファイル）を利用した技術が知られている（例えば、特許文献１参照）。この技術を適用した機器は、ネットワークインタフェースとパケット処理モジュールとの間に、上記のパターンファイルを含む防御モジュールを備えている。防御モジュールは、ネットワークインタフェースがネットワークからパケットを受信した場合、当該受信したパケットの内容をパターンファイル内のパターン情報と比較する。もし、両者が一致しなかった場合は、防御モジュールは受信パケットをパケット処理モジュールに転送する。一方、両者が一致した場合には、防御モジュールは受信パケットが攻撃パケットであるとみなし、当該受信パケットを破棄して、パケット処理モジュールには転送しない。同時に防御モジュールは、破棄したパケットに関する情報、時刻等のログの出力、機器の管理者への通知等を行う。
【特許文献１】特開２００２−６３０８４号公報（段落００６６，００６７、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記した従来技術によれば、予めパターンファイルに登録されたパターンに一致するパケットを攻撃パケットとして検出できるため、そのパケットによる攻撃を防御できる。しかし従来技術では、パターンファイルに登録されていない未知のパターンの攻撃パケットは検出できず、したがって未知の攻撃パケットによる攻撃に関しては防御できない。
【０００４】
本発明は上記事情を考慮してなされたものでその目的は、ネットワークから受信されたパケットの中から未知の攻撃パケットを検出できる攻撃パケット検出装置及び方法を提供することにある。
【課題を解決するための手段】
【０００５】
本発明の１つの観点によれば、ネットワークから受信されたパケットを処理するパケット処理モジュールを備えたパケット処理装置に設けられ、受信パケットの中から攻撃パケットを検出する攻撃パケット検出装置が提供される。この攻撃パケット検出装置は、受信パケットを保存するパケット保存手段と、受信パケットに対する上記パケット処理モジュールによる処理が終了した時点で当該パケットを上記パケット保存手段から削除する手段と、上記パケット保存手段に保存されてから一定時間を経過しても当該パケット保存手段に残されている受信パケットを検出する手段と、この検出手段により検出された受信パケットを前記パケット処理装置に対する未知の攻撃パケットであると決定する手段とを備えている。
【０００６】
このような構成においては、ネットワークから受信したパケットをパケット保存手段に一時保存し、当該受信パケットに対するパケット処理モジュールによる処理（つまり本来の処理）が終了した時点で当該パケットをパケット保存手段から削除する構成とすることにより、パケット保存手段に保存されてから一定時間を経過しても当該パケット保存手段に残されている受信パケットを、パケット処理モジュールを含むパケット処理装置を異常状態に陥れた未知の攻撃パケットであるとして検出することができる。
【０００７】
ここで、未知の攻撃パケットであると決定された受信パケットから抽出された当該パケットを特定するためのパターンを示すパターン情報を格納するパターン格納手段と、受信パケットを、このパターン格納手段に格納されている各パターン情報の示すパターンと比較するパケット比較手段と、このパケット比較手段による比較で一致が検出された場合、対応する受信パケットを攻撃パケットであるとして破棄する手段と、上記パケット比較手段による比較で一致が検出されなかった場合、対応する受信パケットをパケット処理モジュールに転送する手段とを追加し、上記破棄手段により受信パケットが破棄された場合にも、当該パケットが上記削除手段により上記パケット保存手段から削除される構成とするとよい。
【０００８】
このような構成においては、受信パケットに起因してパケット処理装置が異常状態に陥ったことが検出された結果、原因となったパケットが未知の攻撃パケットであるとして、当該パケットを特定するためのパターンを示すパターン情報を新たにパターン格納手段に自動登録することにより、以降の同様のパケットによる攻撃を防御することが可能となる。また、以降の同様のパケットによる攻撃を防御した際に、即ち以降に受信される同様のパケットが攻撃パケットであると検出されて破棄された際に、当該パケットをパケット保存手段から削除することにより、当該パケットが未知の攻撃パケットであると誤検出されるのを防止できる。
【０００９】
また、パケット保存手段に保存されてから一定時間を経過しても当該パケット保存手段に残されている受信パケットを容易に検出可能とするために、パケット保存手段に保存された受信パケットを管理するための管理情報であって、当該受信パケットの保存時刻を示す時刻情報を含む管理情報を保存するパケット管理情報保存手段を追加し、このパケット管理情報保存手段に保存されている管理情報の中から、当該管理情報に含まれている時刻情報の示す時刻から現在時刻までの経過時間が一定時間を経過している管理情報を検出することにより、対応する受信パケットを目的のパケットとして検出する構成とするとよい。ここで、検出された受信パケットの管理情報を上記パケット管理情報保存手段から削除することにより、当該管理情報により管理されるパケットを上記パケット保存手段から論理的に削除することができる。
【００１０】
また、上記検出手段により検出された受信パケットが未知の攻撃パケットであるかを決定するために、攻撃パケット検出装置内部または攻撃パケット検出装置外部のうち、当該受信パケットを処理中の部分の状態が異常であるかを監視し、異常である場合だけ当該受信パケットが未知の攻撃パケットであると決定するならば、より確実に未知の攻撃パケットを決定できる。ここで、攻撃パケット検出装置外部の状態は、例えばパケット処理モジュールと連携を取ることにより監視可能である。
【発明の効果】
【００１１】
本発明によれば、ネットワークから受信したパケットをパケット保存手段に一時保存し、当該受信パケットに対するパケット処理モジュールによる処理が終了した時点で当該パケットをパケット保存手段から削除する構成とすることにより、パケット保存手段に保存されてから一定時間を経過しても当該パケット保存手段に残されている受信パケットを未知の攻撃パケットであるとして検出することができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施の形態につき図面を参照して説明する。  
図１は本発明の一実施形態に係るパケット処理装置の構成を示すブロック図である。図１において、パケット処理装置１０は、ネットワーク２０に接続されたネットワークＩ／Ｆ（インタフェース）１１と、パケット処理モジュール１２と、本発明に直接関係する攻撃パケット防御モジュール（以下、防御モジュールと略称する）１３とを備えている。本実施形態において、パケット処理モジュール１２及び防御モジュール１３は、パケット処理装置１０が有する図示せぬＣＰＵがそれぞれパケット処理プログラム及び防御プログラムを実行することにより実現される。
【００１３】
防御モジュール１３は、パケット処理モジュール１２を防御対象として、当該パケット処理モジュール１２を攻撃パケットから防御する攻撃パケット防御装置である。防御モジュール１３は、パケット処理モジュール１２と連携を取って、受信パケットに起因して当該パケット処理モジュール１２が異常状態に陥ったことを検出する機能と、原因となったパケットを未知の攻撃パケットとして決定する機能とを有する。つまり防御モジュール１３は、一連の受信パケットの中から未知の攻撃パケットを検出する攻撃パケット検出装置としての機能を有する。防御モジュール１３はまた、未知の攻撃パケットとして決定された受信パケットから抽出されたパターンを示す情報を新たにパターンファイルに自動登録する機能と、受信パケットのうちパターンファイルに自動登録されたパターンに一致（類似）したパケットを破棄する機能とを有する。
【００１４】
防御モジュール１３は、下位レイヤーパケット転送Ｉ／Ｆ１３１と、上位レイヤーパケット転送Ｉ／Ｆ１３２と、上位レイヤーパケット処理通知Ｉ／Ｆ１３３と、記憶部１３４とを備えている。下位レイヤーパケット転送Ｉ／Ｆ１３１は、下位レイヤーのネットワークＩ／Ｆ１１（つまり、よりネットワーク２０の物理レイヤーに近いインタフェースモジュール）との間でパケットの授受を行う。上位レイヤーパケット転送Ｉ／Ｆ１３２は、上位レイヤーのパケット処理モジュール１２（つまり、よりネットワーク２０の物理レイヤーから遠い、防御対象となるパケット処理モジュール１２）との間でパケットの授受を行う。上位レイヤーパケット処理通知Ｉ／Ｆ１３３は、パケット処理モジュール１２との間でパケット処理に関する情報の授受を行う。記憶部１３４は、パケット処理装置１０が有する不揮発性の記憶装置（図示せぬ）の記憶領域（不揮発性領域）のうち、防御モジュール１３に割り当てられる記憶領域により実現される。不揮発性の記憶装置は例えばハードディスクドライブである。
【００１５】
記憶部１３４の記憶領域は、保存パケット管理テーブル１３４ａを記憶するための記憶領域（保存パケット管理テーブル記憶領域）と、パケット保存領域１３４ｂと、パターンファイル格納領域１３４ｃとに割り当てられる。なお、保存パケット管理テーブル１３４ａの記憶領域とパケット保存領域１３４ｂとが、後述するように揮発性の記憶装置内に確保される構成であっても構わない。
【００１６】
パケット保存領域１３４ｂは、受信したパケットを一時的に保存しておく領域である。保存パケット管理テーブル１３４ａは、パケット保存領域１３４ｂに保存されているパケットを管理するための管理情報を保存するのに用いられるパケット管理情報保存手段である。この管理情報は、保存パケットの状態を示す状態フラグと時刻を示す時刻情報とを含む。つまり保存パケット管理テーブル１３４ａ内の各エントリは、状態フラグが設定されるフラグフィールドと、時刻情報が設定される時刻フィールドとを含む。時刻情報は、年月日の情報も含む。状態フラグにより示される状態には、対応する保存パケット管理テーブル１３４ａ内のエントリが使われていないこと（つまり空きエントリであること）を示す「未使用」状態と、対応するパケットが防御モジュール１３内で処理中であることを示す「内部処理中」状態と、対応するパケットが防御モジュール１３外（ここではパケット処理モジュール１２）で処理中であることを示す「外部処理中」状態との３つがある。パターンファイル格納領域１３４ｃは、パケット処理モジュール１２に対する攻撃のパターンの情報を保存したパターンファイルを格納するのに用いられる。ここでは、パターンファイル格納領域１３４ｃ（内のパターンファイル）に対するパターン情報の追加及びパターンファイル格納領域１３４ｃ（内のパターンファイル）からのパターン情報の削除が可能である。
【００１７】
図２は、保存パケット管理テーブル１３４ａ及びパケット保存領域１３４ｂのデータ構造例を示す。保存パケット管理テーブル１３４ａは、管理情報を保存するエントリの群を有し、パケット保存領域１３４ｂは受信パケットを保存するエントリの群を有する。ここで、インデクスｉで参照される、保存パケット管理テーブル１３４ａ内のエントリ（第ｉエントリ）と、同じインデクスｉで参照される、パケット保存領域１３４ｂ内のエントリ（第ｉエントリ）とは対応している。即ち、保存パケット管理テーブル１３４ａ内のインデクスｉで参照されるエントリには、パケット保存領域１３４ｂ内のインデクスｉで参照されるエントリに保存されているパケットの管理情報が保存されている。
【００１８】
再び図１を参照すると、防御モジュール１３は更に、受信パケット管理部１３５と、パケット比較部１３６と、ログ出力警告処理部１３７とを備えている。受信パケット管理部１３５は、パターンファイル格納領域１３４ｃ（内のパターンファイル）を対象とするパターン情報の追加／削除と、パケット保存領域１３４ｂを対象とする受信パケットの登録／削除と、保存パケット管理テーブル１３４ａ内のエントリの各フィールドへの情報書き込みと、パケット比較部１３６への受信パケットの転送等を行う。また、受信パケット管理部１３５は、パケット保存領域１３４ｂに保存されたパケットが予め定められた判定条件を満たした場合に当該パケットを未知の攻撃パケットであると判定し、当該パケットからパターン情報を抽出して新たにパターンファイル格納領域１３４ｃに登録する。パケット比較部１３６は、受信パケット管理部１３５から受け取った受信パケットを、パターンファイル格納領域１３４ｃ中の各パターン情報と比較する。パケット比較部１３６は、比較の結果、受信パケットに一致するパターン情報があった場合、当該受信パケットが既知の攻撃パケットであると判断する。この場合、パケット比較部１３６はパケット破棄手段として機能して受信パケットを破棄し、ログ出力警告処理部１３７に通知する。またパケット比較部１３６は、比較の結果、受信パケットに一致するパターン情報がなかった場合、当該受信パケットは攻撃パケットでないと判断する。この場合、パケット比較部１３６は受信パケットを上位レイヤーパケット転送Ｉ／Ｆ１３２により上位レイヤー（パケット処理モジュール１２）に転送させる。ログ出力警告処理部１３７は、パケット比較部１３６での比較の結果、受信パケットが攻撃パケットであるとみなされた場合に、攻撃の内容、受信日時、送信元等をログとして記録し、また表示器等の出力手段を介してシステム管理者に警告する処理を行う。
【００１９】
次に本実施形態の動作について、図１のパケット処理装置１０内の防御モジュール１３の動作を中心に説明する。  
［インストール時の初期化処理］
まず本実施形態では、パケット処理装置１０に防御プログラムをインストールして防御モジュール１３を実現し、しかる後に当該防御モジュール１３を初めて起動した際にのみ、図３のフローチャートに示す初期化処理が受信パケット管理部１３５により行われる。この初期化処理を、インストール時（防御モジュール１３のインストール時）の初期化処理と称する。ここでは、受信パケット管理部１３５は、保存パケット管理テーブル１３４ａ内の全エントリについて、状態フラグをいずれも「未使用」状態に設定するセットする（ステップＳ１）。
【００２０】
［パケット受信時の処理］
次に、パケット受信時の処理について、図４のフローチャートを参照して説明する。  
今、下位レイヤーをなすネットワークＩ／Ｆ１１から、防御モジュール１３内の下位レイヤーパケット転送Ｉ／Ｆ１３１に、ネットワーク２０から受信したパケットが転送されたものとする。下位レイヤーパケット転送Ｉ／Ｆ１３１は、この下位レイヤー（ネットワークＩ／Ｆ１１）から転送されたパケットを受信して、その受信パケットを受信パケット管理部１３５に転送する（ステップＳ１１）。
【００２１】
受信パケット管理部１３５は、下位レイヤーパケット転送Ｉ／Ｆ１３１から転送された受信パケットを受け取ると、保存パケット管理テーブル１３４ａ内のエントリ群から、状態フラグが「未使用」状態を示すエントリ、つまり空きエントリを１つ探し、当該空きエントリを確保すると共に当該空きエントリのインデクスＸを得る（ステップＳ１２ａ）。次に受信パケット管理部１３５は、インデクスＸで参照される、パケット保存領域１３４ｂ内のエントリ（第Ｘエントリ）に受信パケットを格納する（ステップＳ１２ｂ）。また受信パケット管理部１３５は、インデクスＸで参照される、保存パケット管理テーブル１３４ａ内のエントリ中のフラグフィールドに設定されている状態フラグを「内部処理中」を示す状態に変更すると共に、当該エントリ中の時刻フィールドに現在の（つまり内部処理開始時点の）時刻（及び年月日）を示す時刻情報を保存する（ステップＳ１２ｃ）。また受信パケット管理部１３５は、受信パケットをパケット比較部１３６に転送する（ステップＳ１２ｄ）。
【００２２】
パケット比較部１３６は、パターンファイル格納領域１３４ｃに格納されているパターン情報を例えば先頭から順に取り出す。そしてパケット比較部１３６は、パターンファイル格納領域１３４ｃからパターン情報を取り出す都度、当該パターン情報の示すパターンと受信パケット管理部１３５から転送された受信パケットの内容とを比較する。パケット比較部１３６は、この動作を、パターンファイル格納領域１３４ｃから取り出されたパターン情報の示すパターンと受信パケットとが一致するのを検出するまで、または全てのパターン情報について比較し終えるまで繰り返す（ステップＳ１３）。
【００２３】
もし、パターンファイル格納領域１３４ｃ内のいずれかのパターン情報の示すパターンと受信パケットの内容とが一致した場合（ステップＳ１４）、パケット比較部１３６は、当該受信パケットが攻撃パケット（既知の攻撃パケット）であると判断する。この場合、パケット比較部１３６は受信パケットを破棄し、攻撃パケットを検出したことをログ出力警告処理部１３７に通知する（ステップＳ１５）。するとログ出力警告処理部１３７は、攻撃パケットであると判断された受信パケットに関する情報（攻撃の内容、受信日時、送信元等の情報）をログとして記録すると共に、パケットによる攻撃を受けた旨を管理者等に音声メッセージ出力、表示メッセージ出力等より通知するための警告処理を行う（ステップＳ１６）。この警告処理の中で、ログ出力警告処理部１３７は受信パケット管理部１３５に対し、受信パケットが攻撃パケットとみなされて破棄された旨を通知する。
【００２４】
受信パケット管理部１３５は、ログ出力警告処理部１３７から受信パケットが破棄された旨のパケット破棄通知を受け取ると、当該受信パケットが保存されているパケット保存領域１３４ｂ内のエントリを探し、そのインデクスＸを得る。受信パケット管理部１３５は、保存パケット管理テーブル１３４ａ内のインデクスＸに対応するエントリに設定されている状態フラグを、「内部使用中」を示す状態から「未使用」を示す状態に変更する（ステップＳ１７）。
【００２５】
一方、パターンファイル格納領域１３４ｃ内の全てのパターン情報について当該パターン情報の示すパターンと受信パケットの内容とを比較しても、一致が検出されなかった場合（ステップＳ１４）、パケット比較部１３６は、不一致を示す比較結果を受信パケット管理部１３５に通知する。すると受信パケット管理部１３５は、保存パケット管理テーブル１３４ａから受信パケットに対応するエントリを探し、当該エントリ中の状態フラグを「内部処理中」を示す状態から「外部処理中」を示す状態に変更すると共に、当該エントリ中の時刻情報を現在の（つまり外部処理開始時点の）時刻（及び年月日）を示すように変更する（ステップＳ１８）。一方、パケット比較部１３６は、受信パケットを上位レイヤーパケット転送Ｉ／Ｆ１３２に転送する。上位レイヤーパケット転送Ｉ／Ｆ１３２は、この受信パケットを上位レイヤーのパケット処理モジュール１２に転送する（ステップＳ１９）。
【００２６】
パケット処理モジュール１２は、防御モジュール１３内の上位レイヤーパケット転送Ｉ／Ｆ１３２から転送されたパケットを受信すると、当該パケットを処理する。もし、受信パケットの処理が正常に完了できたなら、パケット処理モジュール１２は、パケット処理の完了と、完了したパケットに関する情報を防御モジュール１３に返す。
【００２７】
［上位レイヤーでのパケット処理完了時の処理］
次に、上位レイヤーパケット転送Ｉ／Ｆ１３２から上位レイヤーのパケット処理モジュール１２に転送されたパケットの処理が、当該モジュール１２にて正常に完了した場合の動作について、図５のフローチャートを参照して説明する。まず、パケット処理モジュール１２から防御モジュール１３に対して、パケット処理の完了が通知されたものとする。このパケット処理完了通知には、完了したパケットに関する情報が付加されている。防御モジュール１３内の上位レイヤーパケット処理通知Ｉ／Ｆ１３３は、パケット処理モジュール１２からのパケット処理完了通知を受信して、その通知を受信パケット管理部１３５に伝える（ステップＳ２１）。受信パケット管理部１３５は、このパケット処理完了通知を受け取ると、パケット処理モジュール１２から処理完了が通知されたパケットをパケット保存領域１３４ｂから探し、当該パケットが保存されているエントリのインデクスＸを得る。受信パケット管理部１３５は、保存パケット管理テーブル１３４ａ内のインデクスＸに対応するエントリに設定されている状態フラグを、「外部使用中」を示す状態から「未使用」を示す状態に変更する（ステップＳ２２）。
【００２８】
［未知攻撃パケット検出処理］
次に、未知の攻撃パケットを検出する処理（未知攻撃パケット検出処理）について、図６のフローチャートを参照して説明する。この処理は例えば定期的に実行される。また、この処理は、後述する防御モジュール１３の終了処理の最初でも実行される。
【００２９】
まず、受信パケット管理部１３５は、保存パケット管理テーブル１３４ａ内のエントリを指定するインデクスｉを初期値０に設定する（ステップＳ３１）。次に受信パケット管理部１３５は、保存パケット管理テーブル１３４ａ内のインデクスｉのエントリを参照する（ステップＳ３２）。そして受信パケット管理部１３５は、インデクスｉのエントリに設定されている状態フラグを調べる（ステップＳ３３）。
【００３０】
もし、インデクスｉのエントリ中の状態フラグが「内部処理中」または「外部処理中」を示しているならば、受信パケット管理部１３５は、当該エントリの時刻フィールドに設定されている時刻情報の示す時刻（設定時刻）（つまり、現在進行中の内部処理または外部処理の開始時刻）を現在時刻と比較する（ステップ３４）。そして受信パケット管理部１３５は、時刻フィールドの示す時刻（つまり、現在進行中の内部処理または外部処理の開始時刻）から予め定められた基準時間を経過しているか否かを判定する（ステップ３５）。
【００３１】
もし、時刻フィールドの示す時刻から基準時間を経過している場合、つまりパケットの「内部処理中」または「外部処理中」の状態が基準時間を超えて続いている場合、受信パケット管理部１３５は、「内部処理中」または「外部処理中」のパケットが未知の攻撃パケットである可能性があると判断する。その理由は次の通りである。
【００３２】
まず、「内部処理中」の状態が基準時間を超えて続いていることは、基準時間を経過しても、防御モジュール１３の内部のパケット処理が完了していないことを意味している。そのため、受信パケットに起因して、防御モジュール１３が無限ループに陥った、或いは異常終了した等の問題が発生している可能性がある。また、「外部処理中」の状態が基準時間を超えて続いていることは、「外部処理中」となっているパケットに関し、上位レイヤーのパケット処理モジュール１２において同様の問題が発生している可能性がある。
【００３３】
そこで、受信パケット管理部１３５は、「内部処理中」または「外部処理中」のパケットが、防御モジュール１３、或いは防御対象のパケット処理モジュール１２に何らかの悪影響を及ぼす未知の攻撃パケットであるか否かを判定するために、「内部処理」または「外部処理」を行っているモジュール（つまり防御モジュール１３またはパケット処理モジュール１２）の状態を監視する（ステップＳ３６）。ここでは受信パケット管理部１３５は、「内部処理」または「外部処理」を実行するためのプログラムの状態を確認する。
【００３４】
プログラムの実行状態を確認する手段は従来から知られており、オペレーティングシステム（ＯＳ）がＷｉｎｄｏｗｓ（登録商標）であれば例えばタスクマネージャを用いて実現可能であり、ＵＮＩＸ（登録商標）であればｐｓコマンドを用いて実現可能である。この他に、「内部処理」または「外部処理」を実行するためのプログラムに、予め状態を外部に知らせる機能（例えば、定期的に生存信号を発信する機能）を組み込むことによっても、プログラムの実行状態を確認することが可能である。
【００３５】
受信パケット管理部１３５は、このような手段を適用して、「内部処理」または「外部処理」を行うためのプログラムが、現在実行状態にあるか否か、更にはＣＰＵやメモリの使用率がどの程度かを確認することができる。受信パケット管理部１３５は、パケット処理モジュール１２または防御モジュール１３での「内部処理」または「外部処理」を行うためのプログラム（プロセス）の実行状態を監視した結果、当該プログラムが実行中でない場合、或いはＣＰＵやメモリの使用率が異常である（ある閾値以上となっている）など挙動が異常である場合に、当該プログラムの実行状態は異常となっていると判定する（ステップＳ３７）。この場合、受信パケット管理部１３５は、「内部処理中」または「外部処理中」のパケットが、防御モジュール１３または防御対象のパケット処理モジュール１２に何らかの悪影響を及ぼす未知の攻撃パケットであると判定（決定）する。そこで受信パケット管理部１３５は、「内部処理中」または「外部処理中」のパケットから当該パケットを特定するためのパターンを抽出して、そのパターンを示すパターン情報を、パターンファイル格納領域１３４ｃに保存されているパターンファイルに追加登録する（ステップＳ３８）。ここで、パターン抽出の対象となるパケットは、ステップＳ３４での比較で用いられた時刻情報が設定されている保存パケット管理テーブル１３４ａ内のエントリに対応する、パケット保存領域１３４ｂ内のエントリに保存されている。つまりパターン抽出の対象となるパケットは、インデクスｉで指定されるパケット保存領域１３４ｂ内のエントリに保存されている。
【００３６】
なお、「内部処理」または「外部処理」を行うためのプログラムが異常状態であると判定されても、一度だけでは「内部処理中」または「外部処理中」のパケットが未知の攻撃パケットであると決定せず、次回以降の未知攻撃パケット検出処理でも同様の状態が観測された場合に、未知の攻撃パケットであると決定するようにしてもよい。
【００３７】
また、上記の例では、説明を簡略化するために、「内部処理中」または「外部処理中」のいずれの状態でも、同一の基準時間を適用している。しかし、「内部処理中」及び「外部処理中」の各々について固有の基準時間（第１及び第２の基準時間）を適用し、例えば「内部処理中」または「外部処理中」の状態が、それぞれ第１または第２の基準時間を超えているかを判定することが好ましい。ここでは、「外部処理」に要する標準的な時間は「内部処理」に要する標準的な時間より長い。このため、第２の基準時間は第１の基準時間より長い値に設定される。
【００３８】
未知の攻撃パケットであると決定されたパケットからの（当該パケットを特定するための）パターンの抽出には、次のような方法が適用可能である。例えば、パケットの送信元アドレスをパターンとする方法である。この方法を適用して、送信元アドレスをパターンとしてパターンファイル格納領域１３４ｃ内のパターンファイルに登録した場合、以後同じ送信元からのパケットは全て攻撃パケットであるとして破棄できる。また、パケットのデータ自体をパターンとして登録することで、以降同様のデータのパケットが送信された場合に攻撃パケットとして、当該パケットを処理しないようにできる。
【００３９】
本実施形態ではパケットを１個ずつ管理している。これらのパケットのある一定の単位の集合は、何らかの意味を持つのが一般的である。そこで、例えばＴＣＰ（Transmission Control Protocol）に代表される通信プロトコルのセッション（コネクション）単位で、そのセッション（コネクション）を用いて送信される一連のパケットの集合を、パケットの到着順序と共に格納して管理する方法を適用することも可能である。この方法の場合、あるパケットが攻撃とみなされた場合、そのパケットが属する一連パケットの集合、つまりセッション自体が攻撃であるとみなせる。そのため、以降では、同様の順番やデータを持つパケット群を受信した際に、攻撃と判断するようにパターンを作成し、パターンファイルに登録することができる。
【００４０】
受信パケット管理部１３５は、未知の攻撃パケットであると決定した受信パケットのパターン（を示すパターン情報）をパターンファイルに登録すると（ステップＳ３８）、インデクスｉで指定される保存パケット管理テーブル１３４ａ内のエントリの状態フラグを、「内部処理中」または「外部処理中」を示す状態から「未使用」を示す状態に変更する（ステップＳ３９）。この保存パケット管理テーブル１３４ａ内のエントリの状態フラグを「未使用」を示す状態に変更する処理は、当該エントリに保存されている管理情報及び当該エントリに対応するパケット保存領域１３４ｂ内のエントリに保存されている受信パケットを論理的に削除したのと等価である。
【００４１】
次に受信パケット管理部１３５は、保存パケット管理テーブル１３４ａ内の全てのエントリについて処理したか否かを判定する（ステップＳ４０）。もし、未処理のエントリが残っているならば、受信パケット管理部１３５はインデクスｉを１だけインクリメントして（ステップＳ４１）、そのインクリメント後の保存パケット管理テーブル１３４ａ内のエントリ（つまり次のエントリ）を対象に、ステップＳ３２から始まる処理を実行する。また受信パケット管理部１３５は、インデクスｉのエントリに設定されている状態フラグが「未使用」を示している場合（ステップＳ３３）、或いはインデクスｉのエントリの時刻フィールドの示す時刻から基準時間を経過していない場合（ステップＳ３５）、或いは「内部処理」または「外部処理」を実行するためのプログラムの状態が正常な場合（ステップＳ３７）、対応する受信パケットを攻撃パケットであると決定することはできないとして、そのままステップＳ４０に進む。受信パケット管理部１３５は、以上の処理を保存パケット管理テーブル１３４ａ内の全てのエントリについて実行する（ステップＳ３８）。
【００４２】
［防御モジュール１３の終了処理］
次に、防御モジュール１３の終了処理について、図７のフローチャートを参照して説明する。この終了処理は、例えば図１のパケット処理装置のシャットダウン時に実行される。
【００４３】
まず、受信パケット管理部１３５は、図６に示した手順の未知攻撃パケット検出処理を実行する（ステップＳ５１）。この処理の実行により、保存パケット管理テーブル１３４ａの各エントリに設定されている状態フラグの意味は以下の通りとなることは明らかである。
【００４４】
「未使用」：対応するエントリは使われておらず、空きとなっている。  
「内部処理中」：対応するエントリは使われており、且つ当該エントリに登録されているパケットは防御モジュール１３内で処理中である。処理開始から基準時間を経過していないため、現時点で、処理は正しく行われている。  
「外部処理中」：対応するエントリは使われており、且つ当該エントリに登録されているパケットは防御モジュール１３外で処理中である。処理開始から基準時間を経過していないため、現時点で、処理は正しく行われている。
【００４５】
受信パケット管理部１３５は、未知攻撃パケット検出処理（ステップＳ５１）を終了すると、保存パケット管理テーブル１３４ａ内の全てのエントリを対象に、当該エントリの状態フラグをいずれも「未使用」を示す状態に設定する（ステップＳ５２）。これにより本実施形態においては、防御モジュール１３の終了処理が終了した時点で、保存パケット管理テーブル１３４ａ内の全てのエントリの状態フラグは、当該エントリが「未使用」であること（使われていないこと）を示す。もし、パケットの「内部処理中」または「外部処理中」に防御モジュール１３またはパケット処理モジュール１２が異常終了した場合（つまりパケット処理装置１０が異常終了した場合）には、上記した図７のフローチャートに従う終了処理は行われない。この場合、異常終了時点で「内部処理中」または「外部処理中」を示す状態フラグは、「未使用」を示す状態に変更されないことになる。
【００４６】
なお、本実施形態では、防御モジュール１３の終了処理において、各エントリの状態フラグの状態に無関係に、当該フラグをいずれも「未使用」を示す状態に設定している。しかし、「内部使用中」を示す状態フラグが設定されているエントリと、「外部内部使用中」を示す状態フラグが設定されているエントリだけを対象に、当該フラグを「未使用」を示す状態に変更するようにしても構わない。
【００４７】
［防御モジュール１３の起動時の処理］
次に、防御モジュール１３の起動時の処理（初期化処理）について、図８のフローチャートを参照して説明する。図３のインストール時の初期化処理が、防御モジュール１３を初めて起動した際のみ実行されるのに対し、この図８の処理は、防御モジュール１３を初めて起動した以降での、当該防御モジュール１３の起動の都度実行される。）
まず受信パケット管理部１３５は、保存パケット管理テーブル１３４ａ内のエントリを指定するインデクスｉを初期値０に設定する（ステップＳ６１）。次に受信パケット管理部１３５は、保存パケット管理テーブル１３４ａ内のインデクスｉのエントリを参照する（ステップＳ６２）。そして受信パケット管理部１３５は、インデクスｉのエントリに設定されている状態フラグを調べる（ステップＳ６３）。
【００４８】
もし、インデクスｉのエントリ中の状態フラグが「内部処理中」または「外部処理中」を示しているならば、受信パケット管理部１３５は、当該エントリで管理されるパケットの「内部処理中」または「外部処理中」に、防御モジュール１３またはパケット処理モジュール１２が異常終了して、防御モジュール１３の終了処理が実行されなかったものと判断する。そして受信パケット管理部１３５は、状態フラグが「内部処理中」を示している場合であれば、パケットの「内部処理中」に防御モジュール１３が異常終了した要因が、当該パケットが未知の攻撃パケットとあったためであると判断する。同様に受信パケット管理部１３５は、状態フラグが「外部処理中」を示している場合であれば、パケットの「外部処理中」にパケット処理モジュール１２が異常終了したことは、当該パケットが未知の攻撃パケットとあったためであると判断する。
【００４９】
そこで、受信パケット管理部１３５は、インデクスｉで指定される保存パケット管理テーブル１３４ａ内のエントリの状態フラグが「内部処理中」または「外部処理中」を示している場合、当該エントリに対応するパケット保存領域１３４ｂ内のエントリに保存されているパケットから先に述べた方法でパターンを抽出し、そのパターンを示すパターン情報を、パターンファイル格納領域１３４ｃに保存されているパターンファイルに追加登録する（ステップＳ６４）。
【００５０】
受信パケット管理部１３５は、未知の攻撃パケットであると決定した受信パケットのパターン（を示すパターン情報）をパターンファイルに登録すると（ステップＳ６４）、インデクスｉで指定される保存パケット管理テーブル１３４ａ内のエントリの状態フラグを、「内部処理中」または「外部処理中」を示す状態から「未使用」を示す状態に変更する（ステップＳ６５）。次に受信パケット管理部１３５は、保存パケット管理テーブル１３４ａ内の全てのエントリについて処理したか否かを判定する（ステップＳ６６）。もし、未処理のエントリが残っているならば、受信パケット管理部１３５はインデクスｉを１だけインクリメントして（ステップＳ６７）、そのインクリメント後の保存パケット管理テーブル１３４ａ内のエントリを対象に、ステップＳ６２から始まる処理を実行する。また受信パケット管理部１３５は、インデクスｉのエントリに設定されている状態フラグが「未使用」を示している場合には（ステップＳ６３）、対応する受信パケットは攻撃パケットでないとして、そのままステップＳ６６に進む。受信パケット管理部１３５は、以上の処理を保存パケット管理テーブル１３４ａ内の全てのエントリについて実行する（ステップＳ６６）。
【００５１】
このように本実施形態においては、防御モジュール１３（内の受信パケット管理部１３５）は当該防御モジュール１３の起動時点で、保存パケット管理テーブル１３４ａにより処理が完了していないことが示されているパケットを検出し、当該パケットを、防御対象であるパケット処理モジュール１２（上位モジュール）、或いは防御モジュール１３自身への攻撃パケットであると判断する。そして防御モジュール１３（内の受信パケット管理部１３５）は、攻撃パケットであると判断したパケットからパターンを抽出して、新規にパターンファイルに追加している。これにより、次回以降同様のパケットを受信した場合には、当該パケットによる攻撃を防御することができる。
【００５２】
なお、攻撃パケットから抽出したパターンを自動的にパターンファイルに登録する代わりに、当該パケットの内容をシステム管理者に例えばメール等を用いて通知し、当該パケットを攻撃パケットとみなすか否か（つまり、受信パケット管理部１３５による攻撃パケットであるとの決定の正否）を、管理者の判断に委ねるようにしてもよい。また、攻撃を受けていると判断する対象を、パケット処理モジュール１２及び防御モジュール１３の両方でなくて、いずれか一方とすることも可能である。
【００５３】
また、上記実施形態では、保存パケット管理テーブル１３４ａの領域及びパケット保存領域１３４ｂは、パターンファイル格納領域１３４ｃと共に、ハードディスクドライブ等の不揮発性の記憶装置の記憶領域内に確保されている。しかし、保存パケット管理テーブル１３４ａの領域及びパケット保存領域１３４ｂが、揮発性の記憶装置の記憶領域内に確保される構成とすることも可能である。
【００５４】
上記実施形態のように、不揮発性の記憶装置を用いる構成では、防御モジュール１３または防御対象のパケット処理モジュール１２が異常終了した場合、つまり当該防御モジュール１３及び防御対象のパケット処理モジュール１２が実行されているパケット処理装置１０が異常終了した場合、当該パケット処理装置１０の再起動後でも、不揮発性の記憶装置に情報が残っている。このため、上記の例のように、未知の攻撃パケットの検出を行える。これに対し、上記実施形態とは異なって、保存パケット管理テーブル１３４ａの領域及びパケット保存領域１３４ｂが揮発性の記憶装置の記憶領域内に確保される構成を適用した場合、当該保存パケット管理テーブル１３４ａ及びパケット保存領域１３４ｂへのアクセス時間を短縮できる利点がある。但し、パケット処理装置１０が異常終了した時点で、揮発性の記憶装置の情報は失われる。したがって、パケット処理装置１０の再起動後、揮発性の記憶装置には、保存パケット管理テーブル１３４ａ及びパケット保存領域１３４ｂの情報は残っていない。よって、揮発性の記憶装置を用いる構成は、パケット処理装置１０自体が異常終了するような攻撃以外の攻撃の検出に適用可能である。
【００５５】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
【図面の簡単な説明】
【００５６】
【図１】本発明の一実施形態に係るパケット処理装置の構成を示すブロック図。
【図２】図１中の保存パケット管理テーブル１３４ａ及びパケット保存領域１３４ｂのデータ構造例を示す図。
【図３】同実施形態におけるインストール時の初期化処理の手順を示すフローチャート。
【図４】同実施形態におけるパケット受信時の処理の手順を示すフローチャート。
【図５】同実施形態における上位レイヤーでのパケット処理完了時の処理の手順を示すフローチャート。
【図６】同実施形態における未知攻撃パケット検出処理の手順を示すフローチャート。
【図７】同実施形態における防御モジュール１３の終了処理の手順を示すフローチャート。
【図８】同実施形態における防御モジュール１３の起動時の処理の手順を示すフローチャート。
【符号の説明】
【００５７】
１０…パケット処理装置、１１…ネットワークＩ／Ｆ（インタフェース）、１２…パケット処理モジュール、１３…防御モジュール（攻撃パケット検出装置）、２０…ネットワーク、１３１…下位レイヤーパケット転送Ｉ／Ｆ、１３２…上位レイヤーパケット転送Ｉ／Ｆ、１３３…上位レイヤーパケット処理通知Ｉ／Ｆ、１３４…記憶部、１３４ａ…保存パケット管理テーブル（パケット管理情報保存手段）、１３４ｂ…パケット保存領域、１３４ｃ…パターンファイル格納領域、１３５…受信パケット管理部、１３６…パケット比較部（破棄手段）、１３７…ログ出力警告処理部。
【図１】
2005045649.tif 000003
【図２】
2005045649.tif 000004
【図３】
2005045649.tif 000005
【図４】
2005045649.tif 000006
【図５】
2005045649.tif 000007
【図６】
2005045649.tif 000008
【図７】
2005045649.tif 000009
【図８】
2005045649.tif 000010