(57)【要約】  情報処理装置において、予め設定されたテスト方法に関する情報に対応させた１又は複数のデータを生成する生成部と、前記生成部により生成された前記データをテスト機器に入力し、該テスト機器が所定の挙動を示したデータを特定する特定部と、前記特定部により得られた複数のデータの間で共通している情報を用いて、前記複数のデータを集約する集約部とを有する。
2015011827.tif 000002
【特許請求の範囲】
【請求項１】
予め設定されたテスト方法に関する情報に対応させた１又は複数のデータを生成する生成部と、
前記生成部により生成された前記データをテスト機器に入力し、該テスト機器が所定の挙動を示したデータを特定する特定部と、
前記特定部により得られた複数のデータの間で共通している情報を用いて、前記複数のデータを集約する集約部とを有することを特徴とする情報処理装置。
【請求項２】
ネットワークを介して受信した入力データと、前記集約部により集約されたデータとを比較する比較部と、
前記比較部による比較結果に基づいて、前記入力データの保護対象機器への出力を遮断する遮断部とを有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記生成部は、
前記テスト方法に基づいて、前記テスト機器が正常に動作する正常データに対するデータ長、データの大きさ、及び特定文字の有無のうち、少なくとも１つを変更した１又は複数のデータを生成することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記集約部は、
前記テスト機器の異常を検知したデータの連続性、又は、前記異常を検知したデータの最小値と最大値とを取得し、取得した最大値と、前記生成部により生成されたデータの最大値とを比較した結果に基づいて、前記異常を検知したデータを数値範囲で集約することを特徴とする請求項１乃至３の何れか１項に記載の情報処理装置。
【請求項５】
前記集約部は、
前記生成部により得られる前記データに予め設定した特定文字を入力した数と、前記テスト機器の異常を検知したデータの数とに基づいて、前記異常を検知したデータを前記特定文字で集約することを特徴とする請求項１乃至４の何れか１項に記載の情報処理装置。
【請求項６】
前記テスト機器と前記保護対象機器とは、同一の機器であることを特徴とする請求項２に記載の情報処理装置。
【請求項７】
ネットワークを介して受信した入力データをフィルタリングして保護対象機器へ出力する情報処理装置を有するフィルタリングシステムにおいて、
前記情報処理装置は、
予め設定されたテスト方法に関する情報に対応させた１又は複数のデータを生成する生成部と、
前記生成部により生成された前記データをテスト機器に入力し、該テスト機器が所定の挙動を示したデータを特定する特定部と、
前記特定部により得られた複数のデータの間で共通している情報を用いて、前記複数のデータを集約する集約部と、
前記入力データと、前記集約部により集約されたデータとを比較する比較部と、
前記比較部による比較結果に基づいて、前記入力データの保護対象機器への出力を遮断する遮断部とを有することを特徴とするフィルタリングシステム。
【請求項８】
情報処理装置が、
予め設定されたテスト方法に関する情報に対応させた１又は複数のデータを生成し、
生成された前記データをテスト機器に入力し、該テスト機器が所定の挙動を示したデータを特定し、
特定された複数の前記データの間で共通している情報を用いて、前記複数のデータを集約し、
集約された前記データを用いて、ネットワークを介して受信した入力データをフィルタリングして保護対象機器へ出力することを特徴とするフィルタリング方法。
【請求項９】
予め設定されたテスト方法に関する情報に対応させた１又は複数のデータを生成し、
生成された前記データをテスト機器に入力し、該テスト機器が所定の挙動を示したデータを特定し、
特定された複数の前記データの間で共通している情報を用いて、前記複数のデータを集約し、
集約された前記データを用いて、ネットワークを介して受信した入力データをフィルタリングして保護対象機器へ出力する、処理をコンピュータに実行させるためのフィルタリングプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク上で伝送されるデータに対するフィルタリングの技術に関する。
【背景技術】
【０００２】
近年、ファジングとよばれるブラックボックスセキュリティテストの手法が広く利用されつつある。ファジングのためのツールは、脆弱性の検出に有効と考えられるテストデータを何種類も大量にテスト対象製品に試行することにより、脆弱性を検出する。例えば、ファジングツールにより、バッファオーバーフローや整数オーバーフロー等の未知の脆弱性を発見することが行われている。なお、近年では、誰でもがファジングツールを利用できる状況となっており、悪意のある者によって製品の未知の脆弱性を容易に発見されてしまう恐れがある。【０００３】
ネットワークと接続される製品は、販売時点において、ネットワークからの攻撃に対して強固なセキュリティ対策が施されていることが理想である。しかしながら、この製品が販売され、消費者に渡った後に、この製品の脆弱性が新たに発見されることも多い。また、製品内には、様々な部品が含まれている。これらの部品の中には、内部を調査することが容易でないブラックボックスモジュール（ソースコードの監査等ができないモジュール）も存在する。また、販売された製品が、購入者のシステムに組み込まれて、始めて発見される脆弱性も存在する。また、販売された製品に脆弱性が発見されても、その脆弱性に対応するアップデートソフトウェア等の配布には時間がかかる場合も多い。このため、製品の未知の脆弱性への対策が急務となっている。【０００４】
例えば、応用プログラムのソースコードを自動的にスキャンし、応用プログラムレベルの脆弱性を検出する手法がある。また、動作中のアプリケーション上で発生した異常終了動作データを逐次蓄積したり、表示したりすることで異常発生原因の分析並びに復旧の対応処理を行う手法がある。また、Ｐｏｓｔ  Ｏｆｆｉｃｅ  Ｐｒｏｔｏｃｏｌ（ＰＯＰ）３サーバからメールメッセージを受信し、エラーが存在すると判定されたメールメッセージのユニークＩＤを登録することで、同じユニークＩＤを有するメールメッセージの受信を拒否する手法がある（例えば、特許文献１〜３参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−５０７１６５号公報
【特許文献２】特開平６−３５８５７号公報
【特許文献３】特開２００３−３２３３８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、上述したファジングテストにおいては、例えばある正常データに対して、各ヘッダの値や長さ等を変更した複数のテストデータを生成し、生成された膨大な数のテストデータを用いてテストを行う。したがって、テスト結果として得られる障害を及ぼすデータの数も多くなるため、記憶領域が圧迫されると共に、テスト結果のデータとネットワークから得られた入力データとの比較によるフィルタリング処理にも多くの時間を要してしまう。【０００７】
１つの側面では、本発明は、ネットワークに接続された機器の脆弱性に対する効果的な保護を行うと共に、フィルタリングに対する所要時間を短縮することを目的とする。
【課題を解決するための手段】
【０００８】
一態様における情報処理装置は、予め設定されたテスト方法に関する情報に対応させた１又は複数のデータを生成する生成部と、前記生成部により生成された前記データをテスト機器に入力し、該テスト機器が所定の挙動を示したデータを特定する特定部と、前記特定部により得られた複数のデータの間で共通している情報を用いて、前記複数のデータを集約する集約部とを有する。
【発明の効果】
【０００９】
フィルタリングに対する所要時間を短縮することができる。
【図面の簡単な説明】
【００１０】
【図１】本実施形態におけるフィルタリングシステムのシステム構成例を示す図である。
【図２】フィルタリング装置のハードウェア構成例を示す図である。
【図３】脆弱性検出部の処理の一例を示すフローチャートである。
【図４】フィルタリング部の処理の一例を示すフローチャートである。
【図５】本実施形態における正常パターンとテストパターンの一例を示す図である。
【図６】異常検知と防止対象リストの具体例を示す図（その１）である。
【図７】異常検知と防止対象リストの具体例を示す図（その２）である。
【図８】異常検知と防止対象リストの具体例を示す図（その３）である。
【図９】異常検知と防止対象リストの具体例を示す図（その４）である。
【図１０】異常検知と防止対象リストの具体例を示す図（その５）である。
【図１１】テストパターンの第１の集約例を示すフローチャートである。
【図１２】テストパターンの第２の集約例を示すフローチャートである。
【図１３】防止対象リストの具体例を示す図である。
【図１４】フィルタリングシステムの他の実施形態の一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面に基づいて実施形態を説明する。
【００１２】
＜フィルタリングシステムのシステム構成例＞
図１は、本実施形態におけるフィルタリングシステムのシステム構成例を示す図である。図１に示すフィルタリングシステム１０は、情報処理装置の一例としてのフィルタリング装置１００と、テスト機器１１０と、保護対象機器１２０とを有する。フィルタリング装置１００は、脆弱性検出部１３０と、フィルタリング部１４０とを有する。
【００１３】
フィルタリング装置１００は、保護対象機器１２０に対応するテスト機器１１０に対してファジングによるテストを実施し、保護対象機器１２０の未知の脆弱性を突いて障害を及ぼすような入力データのパターンを検出する。また、フィルタリング装置１００は、検出されたパターンを用いて、ネットワーク１５０等から保護対象機器１２０への上述した障害を及ぼすような入力データの到達を防止する。フィルタリング装置１００としては、例えばルータ等の中継機器、サーバ、Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ（ＰＣ）等であるが、これに限定されるものではない。
【００１４】
テスト機器１１０は、例えば保護対象機器１２０の挙動をシミュレートする機器であり、例えば保護対象機器１２０と同じ仕様の製品を用いることができる。例えば、保護対象機器１２０がサーバであれば、同じ仕様のサーバで同じソフトウェアを搭載したものであることが好ましいが、これに限定されるものではない。なお、本実施形態におけるフィルタリングシステム１０では、テスト機器１１０を設けずに保護対象機器１２０をそのままテスト機器１１０として用いてもよい。
【００１５】
保護対象機器１２０は、フィルタリング部１４０を介してネットワーク１５０と接続されている。フィルタリング部１４０は、ネットワーク１５０から保護対象機器１２０へ伝達されるデータをフィルタリングする。このフィルタリングによって、保護対象機器１２０の脆弱性に対して脅威を及ぼすデータを遮断することができる。
【００１６】
ネットワーク１５０は、例えば、インターネットやＬｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＬＡＮ）等であり、有線でも無線でもよい。テスト機器１１０及び保護対象機器１２０は、フィルタリング装置１００を介してネットワーク１５０に接続された外部装置（例えば、端末等）とデータの送受信を行うことができる。
【００１７】
ここで、テスト機器１１０及び保護対象機器１２０は、ネットワーク１５０に接続可能ないかなる機器であってもよい。テスト機器１１０及び保護対象機器１２０としては、例えばサーバ、ＰＣ、ゲーム機器、テレビ、家電製品、ナビゲーションシステム、タブレット端末、携帯電話等があるが、これに限定されるものではない。
【００１８】
＜脆弱性検出部１３０の機能構成例＞
次に、上述した脆弱性検出部１３０の機能構成例について説明する。図１の例において、脆弱性検出部１３０は、パターン生成部（生成部）１３１と、送信部１３２と、異常検知部１３３と、パターン特定部（特定部）１３４と、パターン集約部（集約部）１３５とを有する。
【００１９】
パターン生成部１３１は、テスト機器１１０を用いて脆弱性を検出するために、１又は複数のテストパターンのデータを生成する。また、パターン生成部１３１は、テスト機器１１０に対してデータがパケットの形で送られる場合には、テストパターンをパケットで生成してもよい。また、パターン生成部１３１は、例えば圧縮されたデータ等のように所定の処理を施したデータを生成してもよい。
【００２０】
また、パターン生成部１３１は、例えば１つのテストパターンのデータを生成して、送信部１３２を介してテスト機器１１０に送信し、テスト機器１１０からの異常検知の結果を待ってから、次のテストパターンを生成してもよい。
【００２１】
送信部１３２は、パターン生成部１３１によって生成されたテストパターンのデータをテスト機器１１０に送信する。なお、送信部１３２は、テスト機器１１０へテストパターンを１つずつ送信するのが好ましいが、これに限定されるものではない。
【００２２】
異常検知部１３３は、テスト機器１１０における所定の挙動を監視する。挙動の監視は、例えば１つのパターンのデータがテスト機器１１０に送られる度に実行されてもよい。異常検知部１３３は、例えば所定のテストパターンの入力に対して、テスト機器１１０が正常に動作しているか又は異常終了したかを確認することで、挙動を監視する。
【００２３】
また、挙動の監視例としては、例えばテスト機器１１０のコンソールポートから出力される文字列情報を監視してもよい。例えば、テスト機器１１０がサーバの場合には、コンソールポート等を有する場合がある。したがって、伝送路を介して、テスト機器１１０のコンソールポートを異常検知部１３３に接続してもよい。異常検知部１３３は、テスト機器１１０のコンソールポートの出力を解析することによって、テスト機器１１０の異常の有無を調べることができる。通常、サーバ等のコンソールポートからの出力には、サーバの異常を知らせる種々の情報が出力されるからである。
【００２４】
また、異常検知部１３３は、例えば死活確認用のパケット（例えば、Ｐｉｎｇ等）を、異常検知部１３３からテスト機器１１０に送信し、一定時間経過後に返信があるか否かをチェックすることで、異常を検知してもよい。返信が確認できない場合には、テスト機器１１０がシステムダウンを起こしていたり、ハングアップしていたりする可能性が非常に高いことが分かる。したがって、異常検知部１３３は、テスト機器１１０が異常終了した場合やハングアップしている場合には、ｐｉｎｇの返信が行われないことがあるため、ｐｉｎｇの返信がないことによってテスト機器１１０の異常の発生を確認することができる。
【００２５】
また、異常検知部１３３から、ステータス確認用のコマンドをテスト機器１１０に送信し、テスト機器１１０側から得られる種々のステータスを確認することで、異常の有無を検知してもよい。
【００２６】
また、本実施形態では、例えばテスト機器１１０上のソフトウェアの挙動を監視するために、例えばバーチャルマシン上でテスト機器を構築してもよい。そして、テスト機器１１０上で注目しているソフトウェアを稼働させ、バーチャルマシンのファームウェア等によって、このテスト機器１１０の挙動を監視し、その監視結果を異常検知部１３３に送ってもよい。
【００２７】
パターン特定部１３４は、異常を引き起こしたデータ（パターン）を特定する。パターン特定部１３４は、異常検知部１３３で異常を検知した場合に、その異常に関する情報を受け取り、その直前に送信したデータを防止対象データとして保存する。なお、防止対象データは、例えばパターン毎にリスト化された防止対象リストとして保存されるが、これに限定されるものではない。
【００２８】
ここで、パターン特定部１３４において、障害を及ぼすテストデータ（例えば、リクエスト等）の全てを防止対象リストに記憶しようとすると、記憶すべきテストデータの数が多いため記憶領域が圧迫される。また、データ量が多いため、それらのデータを用いたフィルタリング部１４０による入力データのフィルタリング処理にも多くの時間を要してしまう。そこで、パターン集約部１３５は、パターン特定部１３４で得られた防止対象リストから、異常を引き起こしたデータの集約を行う。
【００２９】
例えば、パターン集約部１３５は、テストに使用される複数のテストデータの間で共通している情報を特定し、その情報を利用してテスト結果を集約することで、防止対象リストの記憶量を減少させる。また、この集約されたリストは、データ量が少ないため、フィルタリング処理における所要時間を短縮することができる。なお、パターン集約部１３５は、予め設定された複数のテスト方法（テスト種別）に対応して複数の防止対象リストが存在する場合には、それらのリスト同士を統合したリストを生成してもよい。
【００３０】
パターン集約部１３５は、集約した防止対象リストをフィルタリング部１４０のパターン保存部等に出力する。また、パターン集約部１３５は、パターンのデータそのものではなく、例えばパターンの長さ（ビット長）、数値、特定文字等により集約したものをパターンとしてパターン保存部に出力してもよい。
【００３１】
また、パターン集約部１３５は、使用したポート番号や対象とするアプリケーションやソフトウェアを特定する情報等を、上述したパターンと関連付けて、パターン保存部１４１に提供してもよい。
【００３２】
なお、本実施形態では、上述したパターン集約部１３５における処理を脆弱性検出部１３０で行っているが、これに限定されるものではなく、例えばフィルタリング部１４０で行ってもよい。
【００３３】
＜フィルタリング部１４０の具体例＞
次に、上述したフィルタリング部１４０の機能構成例について説明する。図１の例において、フィルタリング部１４０は、記憶部の一例であるパターン保存部１４１と、比較部１４２と、遮断部１４３とを有する。
【００３４】
パターン保存部１４１は、上述したようにパターン集約部１３５から得られる集約された防止対象リスト等を保存する。パターン保存部１４１は、所定の情報のビット列を格納してもよいが、これに限定されるものではなく、例えば単なるデータ列のパターン以外に値の範囲を設定したパターンが保存されていてもよい。例えば、パラメータ値のビット列の長さ、パラメータ値の範囲等がパターンとしてパターン保存部１４１に保存されていてもよい。また、パターンには、保護対象機器１２０へのポート番号、データが利用される保護対象機器１２０のアプリケーション、ソフトウェア等の情報等が含まれてもよい。
【００３５】
また、脆弱性検出部１３０においてパターン集約部１３５における処理を行っていない場合、パターン保存部１４１は、保存された防止対象リストに対して、上述したパターン集約部１３５の処理を行ってデータの集約を行ってもよい。
【００３６】
比較部１４２は、ネットワーク１５０を介して接続される外部装置等から伝送された入力データの各々とパターン保存部１４１に保存されている防止対象リストに含まれる１又は複数の異なるパターンのデータとを比較する。なお、比較する単位は、例えばパケット単位であるが、これに限定されるものではない。ネットワーク１５０からフィルタリング部１４０の伝送路に流れるデータの形式は、パケット以外のいかなる形式であってもよい。また、比較部１４２は、伝送路に流れるデータの一部とパターン保存部１４１に保存されたパターンとを比較してもよい。
【００３７】
また、比較部１４２は、伝送路に流れるデータが圧縮等で変換されている場合には、逆変換したデータを比較対象としてもよい。比較部１４２における比較は、例えば完全一致の比較でなくてもよい。
【００３８】
例えば、比較部１４２は、例えば入力データ（例えば、パケット等）が所定のデータパターンに含まれるか否かで比較し、その比較結果により肯定的な結果又は否定的な結果を判定する。ここで、所定のデータパターンとは、例えば一定の数値範囲に入るか否か、データのビット数の長さが所定の範囲にあるか否か等の１つ以上の閾値である。比較部１４２は、完全一致以外にも、上述したような比較の幅（閾値）等を持たせることにより、類似の範囲を含んだ比較結果を取得することができる。
【００３９】
比較部１４２は、比較結果から判定された肯定的な結果又は否定的な結果を遮断部１４３に出力する。ここで、肯定的な結果とは、入力データが所定のデータパターンに含まれていることを意味し、そのデータは遮断部１４３において、遮断されるべきことを意味する。また、否定的な結果とは、その逆を意味し、遮断部１４３においてデータを通過させるべきことを意味する。
【００４０】
遮断部１４３は、ネットワーク１５０から保護対象機器１２０に入力されるデータをフィルタリングする。なお、遮断部１４３は、保護対象機器１２０からネットワーク１５０へ出力されるデータについては、フィルタリングを行わずにそのまま通過させてもよい。
【００４１】
例えば、遮断部１４３は、ネットワーク１５０から伝送路を介して入力し、比較部１４２により得られる判定結果に基づいて、所定のデータを遮断した後のデータを保護対象機器１２０へ出力する。
【００４２】
また、遮断部１４３は、例えば比較部１４２から制御情報等を取得してもよい。例えば、遮断部１４３は、伝送されるデータがパケットに分離されている場合に、受信したパケットをバッファリングしてもよい。そして、遮断部１４３は、比較部１４２から伝送路を介して送られてくる制御信号の到来を待って、バッファリングしたパケットを遮断するか、通過させるかを実行してもよい。
【００４３】
遮断部１４３は、遮断したパケットを破棄するが、これに限定されるものではない。本実施形態では、フィルタリング部１４０及び脆弱性検出部１３０は、上述したように処理の連繋を取りながら動作することができる。
【００４４】
このようにして、保護対象機器１２０に内在する新たな脆弱性を効率的に発見することができる。そして、その脆弱性をターゲットとしたネットワーク１５０からのデータの伝送を、効果的に遮断することができる。これにより、保護対象機器１２０の保護を迅速に行うことができる。
【００４５】
なお、上述した脆弱性検出部１３０及びフィルタリング部１４０は、例えば物理的に分離されてもよく、どのような場所に設置されてもよい。なお、図１に示すフィルタリングシステム１０において、フィルタリング装置１００における各機能は、テスト機器１１０に含まれていてもよく、また保護対象機器１２０に含まれていてもよい。
【００４６】
＜ハードウェア構成例＞
図２は、フィルタリング装置のハードウェア構成例を示す図である。図２の例に示すフィルタリング装置１００は、Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ（ＣＰＵ）２０１と、メモリ２０２と、入力装置２０３と、出力装置２０４と、外部記憶装置２０５と、可搬記憶媒体駆動装置２０６と、ネットワーク接続装置２０７とを有する。そして、それぞれの機器は、システムバスＢによって接続されている。なお、本実施形態の全部又は一部はプログラムによってインプリメントされてもよい。
【００４７】
ＣＰＵ２０１は、オペレーティングシステム等の制御プログラムやメモリ２０２に格納されている実行プログラムに基づいて、各種演算や各ハードウェア構成部とのデータの入出力等のフィルタリング装置１００全体の処理を制御する。なお、プログラムの実行中に必要な各種情報等は、外部記憶装置２０５から取得することができ、また実行結果等を格納することもできる。
【００４８】
例えば、ＣＰＵ２０１は、入力装置２０３から得られるプログラムの実行指示等に基づき、外部記憶装置２０５にインストールされたプログラムを実行させることにより、メモリ２０２上でプログラムに対応する処理を行う。ＣＰＵ２０１は、例えば、本実施形態におけるフィルタリングプログラムを実行させることで、脆弱性検出部１３０による脆弱検出や防止対象リストの生成、フィルタリング部１４０による防止対象リスト等を用いたフィルタリング処理等を行う。なお、ＣＰＵ２０１における処理内容は、これに限定されるものではない。ＣＰＵ２０１により実行された内容は、必要に応じて外部記憶装置２０５に記憶させることができる。
【００４９】
メモリ２０２は、ＣＰＵ２０１により外部記憶装置２０５から読み出された実行プログラム等を格納する。メモリ２０２は、例えばＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等である。
【００５０】
入力装置２０３は、ユーザ等が操作するキーボード及びマウス等のポインティングデバイスや、マイクロフォン等の音声入力デバイス等を有する。入力装置２０３は、ユーザ等からのプログラムの実行指示、各種操作情報、ソフトウェア等を起動するための情報等の入力を受け付ける。
【００５１】
出力装置２０４は、フィルタリング装置１００を操作するのに必要な各種ウィンドウやデータ等を表示するディスプレイを有し、ＣＰＵ２０１が有する制御プログラムによりプログラムの実行経過や結果等を表示する。ここで、本実施形態においてフィルタリング装置１００としてのコンピュータにインストールされる実行プログラムは、可搬記憶媒体２０８等により提供される。
【００５２】
外部記憶装置２０５は、例えばハードディスクドライブやＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等のストレージ手段等である。外部記憶装置２０５は、ＣＰＵ２０１からの制御信号に基づき、本実施形態における実行プログラムや、コンピュータに設けられた制御プログラム等を記憶し、必要に応じて入出力を行うことができる。外部記憶装置２０５は、ＣＰＵ２０１からの制御信号等に基づいて、記憶された各情報から必要な情報を読み出したり、書き込むことができる。
【００５３】
可搬記憶媒体駆動装置２０６は、プログラムを記録した可搬記憶媒体２０８をセットすることができ、ＣＰＵ２０１からの制御信号に基づき、可搬記憶媒体２０８に含まれる実行プログラムを読み取り外部記憶装置２０５にインストールする。また、可搬記憶媒体駆動装置２０６は、ＣＰＵ２０１からの制御信号により、実行結果や設定情報等の各種データを可搬記憶媒体２０８に書き込むことができる。
【００５４】
ネットワーク接続装置２０７は、ＣＰＵ２０１からの制御信号に基づき、ネットワーク１５０等と接続することにより、実行プログラムやソフトウェア、設定情報等を、ネットワーク１５０に接続されている外部装置等から取得する。また、ネットワーク接続装置２０７は、プログラムを実行することで得られた実行結果又は本実施形態における実行プログラム自体を外部装置等に提供することができる。
【００５５】
可搬記憶媒体２０８は、構造を有する１つ以上の非一時的（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ）な記憶媒体である。本実施形態の全部又は一部は、プログラムによってインプリメントされ得る。このプログラムは、可搬記憶媒体２０８に格納することができる。
【００５６】
可搬記憶媒体２０８は、例えば磁気記録媒体、光ディスク、光磁気記録媒体、不揮発性メモリ等があるが、これに限定されるものではない。磁気記録媒体には、例えばＨａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープ（ＭＴ）等がある。光ディスクには、例えばＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）等がある。また、光磁気記録媒体には、例えばＭＯ（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌ  ｄｉｓｋ）等がある。可搬記憶媒体２０８に格納されたプログラムが読み込まれ、ＣＰＵ２０１によって実行されることにより、本実施形態の全部又は一部が実施され得る。
【００５７】
本実施形態では、上述したコンピュータ本体のハードウェア構成に実行プログラム（例えば、フィルタリングプログラム等）をインストールすることで、ハードウェア資源とソフトウェアとが協働して本実施形態における表示処理等を実現することができる。また、上述したフィルタリングプログラムは、例えば装置上で常駐している状態であってもよく、起動指示により起動させてもよい。
【００５８】
＜フィルタリング装置１００の処理例＞
次に、本実施形態におけるフィルタリング装置１００の処理の一例について、フローチャートを用いて説明する。なお、以下の説明では、防止対象データのパターンを検出する脆弱性検出処理（ファジングテスト）と、脆弱性検出処理により検出されたデータパターンを用いたフィルタリング処理とに分けて説明する。
【００５９】
＜脆弱性検出部１３０の処理の一例＞
図３は、脆弱性検出部の処理の一例を示すフローチャートである。図３の例において、脆弱性検出部１３０は、予め設定された全てのパターンをテストしたかを判断する（Ｓ０１）。本実施形態において、脆弱性を検出するためのテストパターンは、１又は複数種類存在する。そのため、脆弱性検出部１３０は、各種のパターンに対するテスト実行の有無を判断する。
【００６０】
脆弱性検出部１３０は、全てのパターンをテストしていない場合（Ｓ０１において、ＮＯ）、パターン生成部１３１により、予め設定されたパターンのうち、まだテストされていない１つのパターンを生成する（Ｓ０２）。なお、１つのパターンは、例えばパケット単位のパターンでもよいが、これに限定されるものではない。また、テストパターンの例としては、例えばデータ長（レングス）の異なるデータや数値の異なるデータ、特定文字の挿入や置換等、複数種類の方法があるが、これに限定されるものではない。
【００６１】
脆弱性検出部１３０は、Ｓ０２により生成されたパターンを送信部１３２からテスト機器１１０に出力する（Ｓ０３）。なお、テスト機器１１０が保護対象機器１２０と同じ機器である場合、脆弱性検出部１３０は、生成されたパターンを保護対象機器１２０に送信してもよい。後続の説明では、テスト機器１１０に出力した例について説明する。
【００６２】
脆弱性検出部１３０は、異常検知部１３３によって、テスト機器１１０の挙動を検知する（Ｓ０４）。挙動検知の方法としては、例えばテスト機器１１０のコンソール出力の異常表示の有無、Ｐｉｎｇによる返信が受信できるか否か等をチェックすることで挙動検知を行うことができるが、これに限定されるものではない。
【００６３】
次に、脆弱性検出部１３０は、Ｓ０４の処理によりテスト機器１１０に異常が検知されたか否かを判断し（Ｓ０５）、異常が検知された場合（Ｓ０５において、ＹＥＳ）、異常を引き起こしたテストパターンのデータを防止対象リストに記憶する（Ｓ０６）。また、脆弱性検出部１３０は、異常が検知されなかった場合（Ｓ０５において、ＮＯ）、又は、Ｓ０６の処理後、Ｓ０１の処理に戻る。
【００６４】
また、脆弱性検出部１３０は、上述したＳ０１の処理において、全てのパターンをテストした場合（Ｓ０１において、ＹＥＳ）、パターン集約部１３５により防止対象リストを集約し（Ｓ０７）、集約された防止対象リストをフィルタリング部１４０に出力する（Ｓ０８）。フィルタリング部１４０は、集約された防止対象リストによりデータ量を削減することができ、入力データと比較する対象のデータが削減したため、フィルタリング処理における所要時間を短縮することができる。
【００６５】
ここで、上述したＳ０６の処理において、異常が検知されたときのテストパターンのデータを、障害を及ぼすデータパターンとして防止対象リストに記憶したが、これに限定されるものではない。例えば、異常検知部１３３が異常検知のチェック結果を記憶するようにしてもよい。この記憶されたデータを用いて、脆弱性検出部１３０は、テスト機器１１０に対するテストの進捗管理を行ってもよい。
【００６６】
また、この記憶されたデータを用いて、脆弱性検出部１３０は、例えば保護対象機器１２０の脆弱性の管理を行ったり、保護対象機器１２０に内在するアプリケーションプログラムのバージョンアップ等を行ってもよい。脆弱性検出部１３０は、上述したバージョンアップが行われ、保護対象機器１２０の脆弱性が改善できた場合に、その情報に基づいて、パターン保存部１４１に保存されているパターンから脆弱性が改善できたパターンを削除してもよい。
【００６７】
なお、上述した脆弱性検出部１３０における処理は、以下に示すフィルタリング部１４０に示す処理の前に行われていればよく、連続して行わなくてもよい。
【００６８】
＜フィルタリング部１４０の処理の一例＞
図４は、フィルタリング部の処理の一例を示すフローチャートである。図４の例において、フィルタリング部１４０は、ネットワーク１５０を介してデータ（例えば、ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ（ＨＴＴＰ）リクエスト等）を入力する（Ｓ１１）。このデータは、パケットデータでもよく、その他の形式のデータでもよい。
【００６９】
フィルタリング部１４０は、脆弱性検出部１３０により得られた防止対象リストと、入力データとを比較し（Ｓ１２）、入力データが遮断対象のデータであるか否かを判断する（Ｓ１３）。ここで、Ｓ１２の処理では、フィルタリング部１４０は、例えば集約された防止対象リストに含まれる１又は複数の異なるパターンのデータをリストの上位から順に全て参照する。また、フィルタリング部１４０は、入力データが少なくとも１つのデータに当てはまる場合（データパターンに含まれる場合）に遮断対象であると判断するが、これに限定されるものではない。
【００７０】
フィルタリング部１４０は、入力データが遮断対象である場合（Ｓ１３において、ＹＥＳ）、入力データを遮断する（Ｓ１４）。遮断された入力データは破棄されるが、これに限定されるものではない。また、フィルタリング部１４０は、入力データが遮断対象でない場合（Ｓ１５において、ＮＯ）、入力データを通過させて保護対象機器１２０に出力する（Ｓ１５）。これにより、フィルタリング部１４０は、集約されたデータ量の少ない防止対象リストを用いて入力データを遮断させるか否かの判断を行うことができるため、フィルタリングの所要時間を短縮することができる。
【００７１】
＜テストパターンの生成例＞
次に、本実施形態におけるテストパターンの生成例について説明する。一般に、保護対象機器１２０は、ポート番号や動作するアプリケーション等によって脆弱性が異なる。したがって、パターン生成部１３１は、例えば予め設定されているテスト機器１１０や保護対象機器１２０のＩＰアドレス（例えば、１９２．１６８．１．１０）、ポート番号（例えば、８０）、保護対象機器１２０で動作するテスト対象のアプリケーション（例えば、業務プログラムＡ）等に対するテストパターンを生成する。なお、これらの各テストパターンは、予め設定されたテスト機器１１０が正常な動作を行うデータ（正常データ）を元にして生成される。
【００７２】
パターン生成部１３１において生成されるテストパターンの種類は、例えば以下に示すテスト方法（テストＡ〜Ｃ等）に関する情報に対応するものであるが、テスト方法の種類やデータ内容等については、これに限定されるものではない。例えばテスト方法に関する情報に対応させて、複数のテストパターンを組み合わせてもよい。
【００７３】
＜テストＡ（値の長さ）＞
テスト種別：テストＡ
使用する正常データ：リクエストＡ
テスト内容：ｘ（０か１のビット）の連続（バッファオーバーフロー）
長さ（バイト長）：１、１２８、２５６、３２７６８、６５５３６
＜テストＢ（数値の大きさ）＞
テスト種別：テストＢ
使用する正常データ：リクエストＡ
テスト内容：ある正常リクエストについて、整数である各ヘッダ値を特定の数値に変更する。
数値：１、１２８、２５６、３２７６８、６５５３６
＜テストＣ（特定文字の有無）＞
テスト種別：テストＣ
使用する正常データ：リクエストＡ
テスト内容：ある正常リクエストについて、各ヘッダ値に任意の文字を特定の文字に置換又は各ヘッダ値に特定の文字を挿入する。
特定文字：￥ｎ、￥ｒ、￥０、￥ｔ、￥￥
置換又は挿入場所：ランダムに決定する。
【００７４】
ここで、図５は、本実施形態における正常パターンとテストパターンの一例を示す図である。図５（Ａ）は、テストパターンの元となる正常データ（正常パケット）の一例を示し、図５（Ｂ）〜図５（Ｅ）は、正常データに基づいて生成されたそれぞれ異なるテストパターン（テストパケット）１〜４を示している。
【００７５】
また、図５のパターン例では、保護対象機器１２０をＷｅｂサーバとして、そのＷｅｂサーバに入力されるＨＴＴＰリクエストのパケットデータ（テストリクエスト）を示している。
【００７６】
図５（Ａ）〜（Ｅ）において、最初の１行（ＧＥＴ／ＨＴＴＰ／１．１）は、リクエスト行を示し、２行目以降は、ＨＴＴＰプロトコルの各種ヘッダを示している。なお、実際のパケットでは、図５（Ａ）〜（Ｅ）に示すヘッダ部以降にメッセージ部が存在するが、ここではヘッダ部に対するテストパターンの生成例を示す。本実施形態では、メッセージ部にテストパターンを生成してもよい。
【００７７】
ヘッダ部の内容としては、例えばサーバ名（Ｈｏｓｔ）、リクエストを送信した端末（ブラウザ）が受信可能なデータ形式（Ａｃｃｅｐｔ）、リクエストを送信した端末が受信可能な言語（Ａｃｃｅｐｔ−Ｌａｎｇｕｅｇｅ）等がある。また、ヘッダ部の内容としては、例えばメッセージ部のデータの長さをバイト単位で示したもの（Ｃｏｎｔｅｎｔ−Ｌｅｎｇｔｈ）、転送できるプロキシサーバやゲートウェイの最大数（Ｍａｘ−Ｆｏｒｗａｒｄｓ）等がある。また、ヘッダ部の内容としては、例えばユーザエージェント（ブラウザ）の情報（Ｕｓｅｒ−Ａｇｅｎｔ）等があるが、ヘッダ部に含まれる情報としてはこれに限定されるものではない。
【００７８】
図５（Ｂ）〜（Ｅ）に示すテストパケット１〜４は、パターン生成部１３１が生成するテストパターンの一例である。各テストパターンは、例えば図５（Ａ）の正常パケットに基づいて、バッファオーバーフローに対する処理内容や、数値入力エリアに文字列を含むデータが入力されたときの処理内容等をチェックするために一部が変更されたデータパターンである。
【００７９】
例えば、図５（Ｂ）の例では、Ｈｏｓｔヘッダに「ｘ」が２５６個連続するデータを入力したデータ（テストパケット１）を示す。図５（Ｃ）の例では、Ａｃｃｅｐｔヘッダに「ｘ」が２５６個連続するデータを入力したデータ（テストパケット２）を示す。上述した２５６個連続するデータは、通常ではあり得ないレングス（ビット長）のパラメータである。なお、上述の図５（Ｂ）、（Ｃ）の例では、「ｘ」の代わりに、Ｎｕｌｌとしてもよく、文字列の長さを２５６個ではなく、例えば２５６個よりも長い文字列を用いてもよい。また、図５（Ｄ）の例では、Ｃｏｎｔｅｎｔ−Ｌｅｎｇｔｈヘッダに２５６を設定したデータ（テストパケット３）を示す。図５（Ｅ）の例では、ホストアドレス（Ｈｏｓｔ）のランダムの位置に特定文字（例えば、￥０）を挿入したデータ（テストパケット４）を示す。
【００８０】
＜異常検知と防止対象リストの具体例＞
次に、本実施形態における異常検知と防止対象リストの具体例について説明する。図６〜図１０は、異常検知と防止対象リストの具体例を示す図（その１〜その５）である。
【００８１】
＜具体例（その１）＞
図６の例では、上述したテスト種別「テストＡ」に基づくテスト集約例を示している。図６（Ａ）の例において、パターン生成部１３１は、予め設定されたヘッダ（例えば、Ｈｏｓｔ、Ａｃｃｅｐｔ等）に所定の長さ（１、１２８、２５６、３２７６８、６５５３６）のビットデータ「ｘ」を入れたデータを生成する。生成したデータは、テストリクエスト番号により管理される。パターン生成部１３１により生成されたテストパターンは、送信部１３２によりテスト機器１１０に送信される。
【００８２】
ここで、異常検知部１３３は、異常の有無を検知し、例えば図６（Ａ）の枠３００で囲まれたテストリクエスト番号に対して異常を検知したとする。パターン特定部１３４は、異常検知部１３３の検知結果から、図６（Ｂ）に示すように異常を検知したテストパターンの情報を防止対象リストとして保存する。なお、図６（Ｂ）の例では、テストリクエスト番号が図６（Ａ）に示すテストパターンと関連付けられている。
【００８３】
次に、パターン集約部１３５は、図６（Ｂ）に示す防止対象リスト内の各テストパターンから、各テストパターンの間で共通している情報を特定し、その情報を利用してテストパターンの集約を行う。例えば、パターン集約部１３５は、異常が検知されるときの各データパターンの規則性や法則性等を特定し、特定した規則性や法則性を利用してテスト結果を表す情報を集約する。これにより、パターン集約部１３５は、図６（Ｃ）に示す集約された防止対象リストを生成する。
【００８４】
図６（Ｃ）の例における防止対象リストの項目は、「リスト通し番号」、「テスト種類」、「正常リクエスト」、「ＨＴＴＰヘッダ」、集約情報の一例としての「長さ」であるが、これに限定されるものではない。「リスト通し番号」は、集約されたテストパターンを識別するための情報である。「テスト種類」は、テストの内容を識別するための情報である。「正常リクエスト」は、テストパターン（テストリクエスト）を生成する元となるリクエストデータを識別するための情報である。「ＨＴＴＰヘッダ」は、変更したＨＴＴＰヘッダ名の情報である。「長さ」は、集約されたテストパターンの情報である。
【００８５】
例えば、パターン集約部１３５は、図６（Ａ）、（Ｂ）からヘッダ毎に一定の範囲の長さで異常を検知している場合に、対象ヘッダの長さの範囲に応じて防止対象リストを集約する。例えば、図６（Ｃ）の例では、Ｈｏｓｔヘッダに対してデータの長さ「１２８以上」、Ａｃｃｅｐｔヘッダに対してデータの長さ「１２８〜２５６」として防止対象リスト（防止対象データ）を集約する。
【００８６】
フィルタリング部１４０は、パターン保存部１４１に上述した防止対象リストを保存し、比較部１４２により入力データと防止対象リストとの比較を行い、その比較結果に基づいて、遮断部１４３により入力データのフィルタリングを行う。
【００８７】
例えば、フィルタリング部１４０は、対象ヘッダの値の長さが集約された防止対象リストに示される範囲内か否かで判断を行い、その条件に当てはまる場合（範囲内に含まれる場合）に対象の入力データ（パケット）を遮断する。
【００８８】
例えば、フィルタリング部１４０は、上述した図６（Ｃ）の防止対象リストを用いた場合、入力データのＨｏｓｔヘッダのデータの長さが１２８以上である場合や、Ａｃｃｅｐｔヘッダのデータの長さが１２８〜２５６の場合に、その入力データを遮断する。例えば「テストＡ」は、各ヘッダ値の長さを徐々に伸ばしていくテストであるため、テスト結果として全ヘッダ値において長さ１２８以上で障害が発生している場合には、ヘッダの長さが１２８以上であれば遮断するようにリストを集約する。
【００８９】
このように本実施形態では、ＨＴＴＰヘッダ毎にデータの長さを基準に防止対象リストを集約することができるため、図６（Ｂ）の防止対象リストと比較してデータ量を削減することができる。したがって、図６（Ｃ）に示す防止対象リストを用いてフィルタリング部１４０でフィルタリング処理を行う場合に、比較対象データが少なくなるため、処理時間を短縮することができる。
【００９０】
＜具体例（その２）＞
図７の例では、上述したテスト種別「テストＢ」に基づくテスト集約例を示している。図７の例において、パターン生成部１３１は、数値を設定するヘッダ（例えば、Ｃｏｎｔｅｎｔ−Ｌｅｎｇｔｈ、Ｍａｘ−Ｆｏｗａｒｄｓ等）に対して、図７（Ａ）に示すように異なる所定の大きさ（１、１２８、２５６、３２７６８、６５５３６）のテストパターンを生成する。また、このテストパターンを１つずつテスト機器１１０に送信し、異常検知を行う。
【００９１】
ここで、異常検知部１３３は、異常の有無を検知し、例えば図７（Ａ）の枠３０１で囲まれたテストリクエスト番号に対して異常を検知したとする。パターン特定部１３４は、異常検知部１３３の検知結果から、異常を検知したテストパターンの情報を防止対象リストとして保存する。パターン集約部１３５は、防止対象リスト内の各テストデータの間で共通している情報を特定し、その情報を利用してテスト結果を集約し、図７（Ｂ）に示す集約された防止対象リストを生成する。
【００９２】
このように本実施形態では、ＨＴＴＰヘッダ毎に数値の大きさを基準に防止対象リストを集約することができるため、データ量を削減することができる。したがって、図７（Ｂ）に示す防止対象リストを用いてフィルタリング部１４０でフィルタリング処理を行う場合に、比較対象データが少なくなるため、処理時間を短縮することができる。上述した図７（Ｂ）の防止対象リストを用いた場合、フィルタリング部１４０は、入力データのＣｏｎｔｅｎｔ−Ｌｅｎｇｔｈヘッダの数値が１２８以上である場合や、Ｍａｘ−Ｆｏｒｗａｒｄｓヘッダの数値が１２８〜２５６の場合に、その入力データを遮断する。
【００９３】
＜具体例（その３）＞
図８の例では、上述したテスト種別「テストＣ」に基づくテスト集約例を示している。図８の例において、パターン生成部１３１は、予め設定されたヘッダ（例えば、Ｈｏｓｔ、Ａｃｃｅｐｔ等）に対して、図８（Ａ）に示すように異なる文字（例えば、￥ｎ、￥ｒ、￥０、￥ｔ、￥￥）を各ヘッダに１個ずつ挿入又は文字を置換したテストパターンを生成する。なお、特定文字は、少なくとも１文字以上であればよく、種類も上述した例に限定されるものではなく、任意に設定することができる。また、特定文字は、そのヘッダに通常入らない文字を１文字以上有することが好ましいが、これに限定されるものではない。
【００９４】
本実施形態では、１つの特定文字に対してヘッダ数分のテストパターンが生成されるが、これに限定されるものではなく、例えば予め設定されたヘッダに対してのみ文字列を挿入したり、文字を置換してもよい。
【００９５】
図８（Ａ）において、テストリクエスト１〜５は、Ｈｏｓｔヘッダに対し、各特定文字￥ｎ、￥ｒ、￥０、￥ｔ、及び￥￥を用いて置換した例を示している。また、テストリクエスト６〜１０は、Ａｃｃｅｐｔヘッダに対し、特定文字￥ｎ、￥ｒ、￥０、￥ｔ、及び￥￥を用いて置換した例を示している。なお、図８（Ａ）の例では、上述した各ヘッダのランダムに設定された位置の情報をそれぞれの文字で置換している。また、他のヘッダについても同様に置換されたり、文字の挿入等がなされる。
【００９６】
パターン生成部１３１は、このテストパターンを１つずつテスト機器１１０に送信し、異常検知を行う。ここで、図８（Ａ）の枠３０２に示す部分で異常が検知された場合、パターン特定部１３４は、そのテストパターンの情報を防止対象リストとして保存する。パターン集約部１３５は、防止対象リスト内の各テストパターンの間で共通している情報を特定し、その情報を利用してテスト結果を集約し、図８（Ｂ）に示す集約された防止対象リストを生成する。
【００９７】
例えば、パターン集約部１３５は、所定の文字で異常を検知した場合に、その文字に応じて防止対象リストを集約することができるが、これに限定されるものではない。図８（Ｂ）の例では、テスト種類「テストＣ」の正常リクエスト「リクエストＡ」に対して文字￥ｒ、￥ｔでリストが集約される。比較部１４２は、対象ヘッダの値にリストの文字が含まれるか否かで判断を行い、条件に当てはまるパケットを遮断する。
【００９８】
＜具体例（その４）＞
図９は、複数のテストパターンを組み合わせた例を示す図である。図９の例では、上述したテスト種別「テストＡ」及び「テストＣ」を組み合わせた例を示しているが、これに限定されるものではなく、３以上のテストパターンを組み合わせてもよい。
【００９９】
パターン生成部１３１は、図９（Ａ）に示すように文字及び値の長さを組み合わせたテストパターンを生成する。異常検知部１３３は、各テストパターンを用いて、上述したようにテスト機器１１０による対象アプリケーション等の実施により異常の検知等を行う。また、図９（Ａ）の枠３０３に示す部分で異常が検知された場合、パターン集約部１３５は、図９（Ｂ）に示すように、文字及び値の長さで集約した防止対象リストを生成する。
【０１００】
つまり、パターン特定部１３４は、ヘッダ毎に特定文字及び一定範囲の長さで異常を検知した場合に、防止対象リストに保存する。次に、パターン集約部１３５は、パターン特定部１３４により得られる防止対象リストを集約する。比較部１４２は、対象ヘッダの値に含まれる文字及び値の長さに基づいて入力データとの比較を行い、条件に当てはまるパケットを遮断する。
【０１０１】
＜具体例（その５）＞
図１０は、集約できない場合の例を示している。なお、図１０の例では、上述したテストＡにおけるテスト結果を示している。上述したように、パターン生成部１３１が生成したテストパターンを用いてテスト機器１１０で異常検知のテストを行った結果、図１０（Ａ）の枠３０４に示す部分で異常が検知されたとする。この場合、テストリクエスト２、１０で異常を検知したことになり、パターン集約部１３５はリストを集約することができないため、そのまま図１０（Ｂ）に示す内容で保存する。
【０１０２】
したがって、比較部１４２における判定基準としては、例えば各テストリクエスト番号に対応するヘッダに対する長さが、入力データの同一ヘッダに対する長さと一致するか否かで判断することができる。したがって、遮断部１４３は、条件に当てはまるパケットを遮断することができる。
【０１０３】
なお、上述した図６〜図１０については、正常リクエストとして「リクエストＡ」を用いたテストパターンを生成したが、本実施形態においては、これに限定されるものではない。例えば、「リクエストＢ」、「リクエストＣ」等の異なる複数の正常リクエスト（正常データ）を用いてテストパターンを生成して、上述したテスト結果に基づくデータパターンの集約を行ってもよい。
【０１０４】
＜テストパターンの集約処理例＞
ここで、上述したパターン集約部１３５におけるテストパターンの集約処理例についてフローチャートを用いて説明する。図１１は、テストパターンの第１の集約例を示すフローチャートである。図１１の例では、上述したテスト種別「テストＡ」、「テストＢ」におけるファジングテスト結果に対する集約例を示している。
【０１０５】
図１１の例において、パターン集約部１３５は、パターン特定部１３４において保存された防止対象リストに対して、ヘッダ毎にリストグループを生成する（Ｓ２１）。例えば、図６（Ａ）では、Ｈｏｓｔヘッダに対して４つのリスト（１２８、２５６、３２７６８、６５５３６）がグループ化され、Ａｃｃｅｐｔヘッダに対して２つのリスト（１２８、２５６）がグループ化される。
【０１０６】
次に、パターン集約部１３５は、リストグループに対して連続する複数のリストデータがあるか否かを判断する（Ｓ２２）。ここで、「連続する」とは、例えば予め設定されたパターンの設定値が連続することを示し、例えば上述した「１２８、２５６、３２７６８、６５５３６」は連続していると判断し、「１２８、３２７６８」は連続していないと判断する。
【０１０７】
パターン集約部１３５は、リストグループに対して連続する複数のリストデータがある場合（Ｓ２２において、ＹＥＳ）、それらの値（テストＡでは値の長さ、テストＢでは値の大きさ）の最小値と最大値とを取得する（Ｓ２３）。例えば、図６（Ａ）において、Ｈｏｓｔヘッダの場合には「最小値１２８、最大値６５５３６」となり、Ａｃｃｅｐｔヘッダの場合には「最小値１２８、最大値２５６」となる。
【０１０８】
次に、パターン集約部１３５は、取得した最大値がテストパターンで設定した値の最大値と同一か否かを判断し（Ｓ２４）、最大値である場合（Ｓ２４において、ＹＥＳ）、「最小値以上」で設定する（Ｓ２５）。例えば、図６（Ｂ）に示すようにＨｏｓｔヘッダの場合には、長さ１２８以上で集約される。
【０１０９】
また、パターン集約部１３５は、取得した最大値がテストパターンで設定した値の最大値と同一でない場合（Ｓ２４において、ＮＯ）、「最小値〜取得した最大値」で集約する（Ｓ２６）。例えば、図６（Ｂ）に示すようにＡｃｃｅｐｔヘッダの場合には、長さ１２８〜２５６で集約される。
【０１１０】
本実施形態では、例えば、連続する２つの設定値１２８、２５６で異常を検知した場合には、その２つの設定値の間の値についても異常が検知されると判断して、入力データの遮断を行う。また、本実施形態では、連続する複数の設定値の最大値が、テストパターンで設定した値の最大値と同一である場合には、例えば連続する複数の設定値の最小値以上としてリストを集約し、その条件に当てはまる入力データを遮断する。
【０１１１】
また、パターン集約部１３５は、Ｓ２２の処理において、リストグループに対して連続する複数のリストデータがない場合（Ｓ２２において、ＮＯ）、集約なしとなる（Ｓ２７）。
【０１１２】
上述したＳ２５、Ｓ２６、又はＳ２７の処理後、パターン集約部１３５は、全てのヘッダについて処理をしたか否かを判断（Ｓ２８）する。パターン集約部１３５は、全てのヘッダに対して処理をしていない場合（Ｓ２８において、ＮＯ）、Ｓ２２に戻り、他のヘッダについての処理を行う。また、パターン集約部１３５は、全てのヘッダについて処理をした場合（Ｓ２８において、ＹＥＳ）、処理を終了する。なお、テストＢの場合については、同様に第１の集約例を用いて、上述した図７（Ｂ）に示すように集約することができる。
【０１１３】
図１２は、テストパターンの第２の集約例を示すフローチャートである。図１２の例では、上述したテストＣに対するテスト結果に対する集約例を示している。図１２の例において、パターン集約部１３５は、正常リクエストに含まれるヘッダ数を取得し（Ｓ３１）、パターン特定部１３４により得られる防止対象リストから、設定した文字を含むリスト数を文字毎に取得する（Ｓ３２）。例えば、図８（Ａ）の例では、文字￥ｒと文字￥ｔに対するリスト数がカウントされる。
【０１１４】
次に、パターン集約部１３５は、ある文字に対してリスト数とヘッダ数とが同一か否かを判断し（Ｓ３３）、リスト数がヘッダ数と同一である場合（Ｓ３３において、ＹＥＳ）、その設定した文字で集約する（Ｓ３４）。また、パターン集約部１３５は、リスト数がヘッダ数と同一でない場合（Ｓ３３において、ＮＯ）、集約なしとなる（Ｓ３５）。
【０１１５】
上述したＳ３４又はＳ３５の処理後、パターン集約部１３５は、全ての文字について処理したか否かを判断し（Ｓ３６）、全ての文字について処理していない場合（Ｓ３６において、ＮＯ）、Ｓ３３の処理に戻り、他の文字について後続の処理を行う。また、パターン集約部１３５は、全ての文字について処理した場合（Ｓ３６において、ＹＥＳ）、処理を終了する。
【０１１６】
なお、図１２の例では、パターン集約部１３５は、文字毎のリスト数とヘッダ数とを比較して数が同一である場合にその文字単位での集約を行ったが、これに限定されるものではない。パターン集約部１３５は、パターン生成部１３１によりテストパターンに予め設定した特定文字を入力した数と、テスト機器１１０の異常を検知したデータパターン数とに基づいて、データパターンを特定文字で集約することができる。
【０１１７】
パターン集約部１３５における集約例は、上述した図１１、図１２に示す例に限定されるものではない。例えば、図１０に示すように、複数のテスト内容を組み合わせる場合には、上述した図１１、図１２における処理の全部又は一部を組み合わせることで、集約処理を行うことができる。
【０１１８】
＜防止対象リクエストを用いた比較例＞
パターン集約部１３５は、例えば複数のテスト種別（テストＡ〜テストＣ）により得られた防止対象リクエストを用いてネットワーク１５０から送信されたパケットを保護対象機器１２０に対して送信するか否かのフィルタリング制御を行う。
【０１１９】
ここで、図１３は、防止対象リストの具体例を示す図である。図１３の例に示すように、防止対象リストが、各テスト種別に対応して複数存在する場合には、パターン集約部１３５は、複数のリストを統合する。
【０１２０】
本実施形態では、例えば図１３に示すような「リスト種類通し番号」と「リスト種別」とを対応付けた統合防止対象リストを生成する。なお、リスト種別に示される「テストＡ集約」とは、例えば上述した図６（Ｃ）に示す防止対象リストを意味し、「テストＡ×Ｃ集約」とは、例えば上述した図９（Ｂ）に示すテストＡとテストＣとを組み合わせた防止対象リストを意味する。また、リスト種別に示される「未集約」とは、例えば上述した図１０（Ｂ）に示すような防止対象リストを意味するが、リスト種別の順序や種類については、これに限定されるものではない。
【０１２１】
比較部１４２は、図１３に示す統合防止対象リストのリスト種類通し番号から、例えば予め選択されたリスト種別又は全てのリスト種別の防止対象リストを用いて、リスト種類通し番号順に入力データ（パケット）との比較を行う。これにより、遮断部１４３は、適切なフィルタリングを行うことができ、更にリストを用いることで、対応する処理を削減することができる。
【０１２２】
＜フィルタリングシステムの他の実施形態＞
次に、上述したフィルタリングシステム１０の他の実施形態について図を用いて説明する。図１４は、フィルタリングシステムの他の実施形態の一例を示す図である。図１４（Ａ）に示すフィルタリングシステム１１は、上述したフィルタリングシステム１０と比較すると、テスト機器１１０を有しておらず、フィルタリング装置１００の脆弱性検出部１３０が保護対象機器１２０に接続されている。
【０１２３】
つまり、図１４（Ａ）に示す実施形態の場合には、保護対象機器１２０を直接チェックでき、保護対象機器１２０の挙動を推定するためのテスト機器１１０が不要となる。また、テスト機器１１０を使用する場合よりも、より正確な脆弱性のチェックが行える。脆弱性検出部１３０によって特定された防止対象のパターンは、伝送路を介してフィルタリング部１４０に出力される。
【０１２４】
なお、図１４（Ａ）に示すフィルタリングシステム１１では、脆弱性検出部１３０が保護対象機器１２０に直接テストパターンを出力して異常検知を行うため、保護対象機器１２０がシステムダウンを起こす可能性がある。したがって、例えば保護対象機器１２０のシステムメンテナンス時等に脆弱性検出部１３０を稼働させ、脆弱性のテストを行うことが好ましい。なお、再稼働が迅速に行える保護対象機器１２０である場合には、保護対象機器１２０の稼働中に、脆弱性検出部１３０を動作させてもよい。
【０１２５】
図１４（Ｂ）に示すフィルタリングシステム１２では、例えばフィルタリング部１４０が、保護対象機器１２０内に組み込まれている。例えば、フィルタリング部１４０は、保護対象機器１２０内のフロントエンド部に設けることができる。したがって、保護対象機器１２０毎にフィルタリング部１４０におけるフィルタリングの動作をカスタマイズでき、保護対象機器１２０に対して、より適合した脆弱性の対策を講じることができる。
【０１２６】
なお、図１４（Ｂ）の場合には、脆弱性検出部１３０が保護対象機器１２０に伝送路を介して接続されているが、これに限定されるものではなく、別途テスト機器１１０を設置してもよい。また、図１４（Ｂ）の例では、脆弱性検出部１３０によって特定された防止対象のパターンは、伝送路を介してフィルタリング部１４０に直接出力される。
【０１２７】
図１４（Ｃ）に示すフィルタリングシステム１３は、例えば保護対象機器１２０内に脆弱性検出部１３０とフィルタリング部１４０とが設けられている。なお、図１４（Ｃ）の例では、脆弱性検出部１３０が、保護対象機器１２０内に存在するため、保護対象機器１２０の異常動作が、脆弱性検出部１３０の動作に影響することが予想される。したがって、図１４（Ｃ）の例では、保護対象機器１２０の異常動作が保護対象機器１２０によるパターンの特定に影響する場合がある。このような事態に対処するためには、例えばサーバ等の保護対象機器１２０に対して複数のバーチャルマシンを動作させ、脆弱性検出部１３０と保護対象機器１２０とを、別のバーチャルマシンで動作させることが好ましい。これにより、保護対象機器１２０の異常動作が保護対象機器１２０によるパターンの特定に影響するのを飛躍的に減少させることができる。
【０１２８】
上述したように、本実施形態によれば、防止対象リストのデータ量を削減すると共にフィルタリングに対する所要時間を短縮することができる。また、ネットワークに接続された機器の脆弱性に対する効果的な保護を行うことができる。
【０１２９】
以上、実施例について詳述したが、特定の実施例に限定されるものではなく、特許請求の範囲に記載された範囲内において、種々の変形及び変更が可能である。また、上述した実施例の構成要素を全部又は複数を組み合わせることも可能である。
【符号の説明】
【０１３０】
１０〜１３  フィルタリングシステム
１００  フィルタリング装置（情報処理装置）
１１０  テスト機器
１２０  保護対象機器
１３０  脆弱性検出部
１３１  パターン生成部
１３２  送信部
１３３  異常検知部
１３４  パターン特定部
１３５  パターン集約部
１４０  フィルタリング部
１４１  パターン保存部
１４２  比較部
１４３  遮断部
２０１  ＣＰＵ
２０２  メモリ
２０３  入力装置
２０４  出力装置
２０５  外部記憶装置
２０６  可搬記憶媒体駆動装置
２０７  ネットワーク接続装置
２０８  可搬記憶媒体
３００〜３０４  枠
【図１】
2015011827.tif 000003
【図２】
2015011827.tif 000004
【図３】
2015011827.tif 000005
【図４】
2015011827.tif 000006
【図５】
2015011827.tif 000007
【図６】
2015011827.tif 000008
【図７】
2015011827.tif 000009
【図８】
2015011827.tif 000010
【図９】
2015011827.tif 000011
【図１０】
2015011827.tif 000012
【図１１】
2015011827.tif 000013
【図１２】
2015011827.tif 000014
【図１３】
2015011827.tif 000015
【図１４】
2015011827.tif 000016
【手続補正書】
【提出日】平成28年1月29日(2016.1.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
予め設定されたテスト方法に関する情報に対応させた１又は複数のデータを生成する生成部と、
前記生成部により生成された前記データをテスト機器に入力し、該テスト機器が所定の挙動を示したデータを特定する特定部と、
前記特定部により得られた複数のデータの間で共通している情報を用いて、前記複数のデータを集約する集約部とを有することを特徴とする情報処理装置。
【請求項２】
ネットワークを介して受信した入力データと、前記集約部により集約されたデータとを比較する比較部と、
前記比較部による比較結果に基づいて、前記入力データの保護対象機器への出力を遮断する遮断部とを有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記生成部は、
前記テスト方法に基づいて、前記テスト機器が正常に動作する正常データに対するデータ長、データの大きさ、及び特定文字の有無のうち、少なくとも１つを変更した１又は複数のデータを生成することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記集約部は、
前記テスト機器の異常を検知したデータの連続性、又は、前記異常を検知したデータの最小値と最大値とを取得し、取得した最大値と、前記生成部により生成されたデータの最大値とを比較した結果に基づいて、前記異常を検知したデータを数値範囲で集約することを特徴とする請求項１乃至３の何れか１項に記載の情報処理装置。
【請求項５】
前記集約部は、
前記生成部により得られる前記データに予め設定した特定文字を入力した数と、前記テスト機器の異常を検知したデータの数とに基づいて、前記異常を検知したデータを前記特定文字で集約することを特徴とする請求項１乃至４の何れか１項に記載の情報処理装置。
【請求項６】
ネットワークを介して受信した入力データをフィルタリングして保護対象機器へ出力する情報処理装置を有するフィルタリングシステムにおいて、
前記情報処理装置は、
予め設定されたテスト方法に関する情報に対応させた１又は複数のデータを生成する生成部と、
前記生成部により生成された前記データをテスト機器に入力し、該テスト機器が所定の挙動を示したデータを特定する特定部と、
前記特定部により得られた複数のデータの間で共通している情報を用いて、前記複数のデータを集約する集約部と、
前記入力データと、前記集約部により集約されたデータとを比較する比較部と、
前記比較部による比較結果に基づいて、前記入力データの保護対象機器への出力を遮断する遮断部とを有することを特徴とするフィルタリングシステム。
【請求項７】
情報処理装置が、
予め設定されたテスト方法に関する情報に対応させた１又は複数のデータを生成し、
生成された前記データをテスト機器に入力し、該テスト機器が所定の挙動を示したデータを特定し、
特定された複数の前記データの間で共通している情報を用いて、前記複数のデータを集約し、
集約された前記データを用いて、ネットワークを介して受信した入力データをフィルタリングして保護対象機器へ出力することを特徴とするフィルタリング方法。
【請求項８】
予め設定されたテスト方法に関する情報に対応させた１又は複数のデータを生成し、
生成された前記データをテスト機器に入力し、該テスト機器が所定の挙動を示したデータを特定し、
特定された複数の前記データの間で共通している情報を用いて、前記複数のデータを集約し、
集約された前記データを用いて、ネットワークを介して受信した入力データをフィルタリングして保護対象機器へ出力する、処理をコンピュータに実行させるためのフィルタリングプログラム。
【国際調査報告】
2015011827.tif 000017
2015011827.tif 000018