【実施例】
【0016】
図1は、一実施形態に従った、フィルタリングシステム100の機能ブロック図を示している。保護対象機器110は、フィルタリング部130を介して外部のネットワーク150と接続されている。フィルタリング部130は、保護対象機器110に対して、ネットワーク150から伝達されるデータをフィルタリングする。このフィルタリングによって、保護対象機器110の脆弱性に対して脅威を及ぼすデータを遮断することができる。
【0017】
また、フィルタリング部130は、脆弱性検出部140と接続されてもよい。脆弱性検出部140は、テスト機器120に接続されてもよい。
【0018】
なお、フィルタリング部130及び脆弱性検出部140は、物理的に分離されてもよい。また、これらは、物理的にどのような場所におかれてもよい。
【0019】
保護対象機器110は、ネットワークに接続され得る、いかなる機器であってもよい。保護対象機器110の具体例としては、サーバ、パーソナルコンピュータ、ハンドヘルドコンピュータ、ゲーム機器、テレビ、家電製品、ナビゲーションシステム、携帯電話などが挙げられる。
【0020】
フィルタリング部130は、パターン保存部132、比較部134、遮断部136を含んでもよい。ネットワーク150からフィルタリング部130に対して、伝送路133を介して、パケット列が送られてくる。比較部134は、伝送されたパケットの各々を、パターン保存部132に保存されている複数のパターンと比較してもよい。なお、比較の単位は、パケットに限定されるものではない。伝送路133に流れるデータの形式は、パケット以外のいかなる形式であってもよい。また、比較部134は、伝送路に流れるデータの一部とパターン保存部132に保存されたパターンとを比較してもよい。或いは、比較部134は、伝送路に流れるデータが圧縮等で変換されている場合には、逆変換したデータを比較対象としてもよい。比較部134における比較は、完全一致の比較でなくてもよい。比較は、例えば、データが一定の数値範囲に入るか否か、データのビット数の長さが所定の範囲にあるか否かを、1つ以上の閾値を用いて比較(判定)してもよい。したがって、比較は、完全な一致以外に、上述のような比較の幅を持たせることにより、類似の範囲を含んだ判定結果であってもよい。比較結果によって、比較部134は、肯定的な結果又は否定的な結果を出力してもよい。また、比較は、データのシーケンスが所定の規則に従っているか否かを比較(判定)してもよい。
【0021】
パターン保存部132は、所定のビット列を格納してもよいが、これに限定されるものではない。例えば、単なるデータ列のパターン以外に、規則としてのパターンが保存されていてもよい。例えば、パラメータ値のビット列の長さ、パラメータ値の範囲などが、規則の形でパターンとして保存されていてもよい。或いは、パターンには、保護対象機器110へのポート番号、データが利用される保護対象機器110のアプリケーションの情報等が含まれてもよい。比較部134は、様々な形式のパターンに基づいて、伝送路133に流れるデータを比較し又は判定し、その結果として肯定的な結果又は否定的な結果を、伝送路135を介して遮断部136に出力してもよい。なお、本明細書において、比較部134の肯定的な結果とは、データとパターンとが所定の規則に従っていることを意味し、そのデータは遮断部136において、遮断されるべきことを意味する。比較器における否定的な結果とは、その逆を意味し、遮断部136においてデータを通過させるべきことを意味する。
【0022】
遮断部136は、ネットワーク150と保護対象機器110との間に位置し、ネットワークから保護対象機器110に提供されるデータをフィルタリングしてもよい。なお、保護対象機器110からネットワーク150へ出力されるデータは、そのまま通過させてもよい。遮断部は、伝送路133を入力とし、所定のデータを遮断した後のデータを、伝送路137を介して保護対象機器110に伝達する。遮断部136は、比較部134からの制御情報を、伝送路135を介して受信する。伝送されるデータがパケットに分離されている場合には、遮断部136は、受信したパケットをバッファリングしてもよい。そして、比較部から伝送路135を介して送られてくる制御信号の到来を待って、バッファリングしたパケットを遮断するか、通過させるかを実行してもよい。遮断したパケットは、破棄してもよい。或いは、遮断部136は、比較部134が比較しているデータをバッファリングしてもよい。そして、比較部から伝送路135を介して送られてくる制御信号の到来を待って、バッファリングしたデータを遮断するか、通過させるかを実行してもよい。
【0023】
脆弱性検出部140に接続されているテスト機器120は、保護対象機器110の挙動をシミュレートする機器であってもよい。テスト機器120は、保護対象機器110と同じ仕様の製品を用いてもよい。例えば、保護対象機器110がサーバであれば、同じ仕様のサーバであって、同じソフトウエアを搭載したものであることが望ましい。なお、保護対象機器110をそのままテスト機器120として用いてもよい(この点は、
図7を用いて後述する)。なお、テスト機器120は、挙動をチェックするために、例えばコンソールポートに、異常検知部146を接続してもよい。また、ソフトウエアの挙動を監視するために、バーチャルマシン上でソフトウエアを稼働させ、バーチャルマシンのファームウエアによってソフトウエアを監視し、その監視出力を異常検知部146に送ってもよい。
【0024】
脆弱性検出部140は、パターン生成部142、送信部144、異常検知部146、パターン特定部148を含んでもよい。
【0025】
パターン生成部142は、様々なパターンのデータを生成してもよい。パターンの例については後述する。データがパケットの形で送られる場合には、パケットを生成してもよい。また、圧縮されたデータなど、所定の処理を施したデータを生成してもよい。生成されるパターンについての例は、
図2を用いて後述する。
【0026】
送信部144は、パターン生成部142によって生成されたパターンのデータを、テスト機器120に送信する。
【0027】
異常検知部146は、テスト機器120の挙動を監視する。挙動の監視は、1つのパターンのデータがテスト機器120に送られる度に実行されてもよい。異常検知部146は、テスト機器120が正常に動作しているか、又は異常終了したかを確認してもよい。テスト機器120の挙動の監視としては、例えば、テスト機器のコンソールポートから出力される文字列情報を監視してもよい。例えば、サーバのコンソールポートからは、サーバの異常を知らせるために、コンソールポートにおいて異常を知らせる表示を行うことがある。異常検知部146は、この表示に係るデータを捕捉し、サーバの異常を検出してもよい。或いは、一定時間経過後に、死活確認用のパケット(Ping等)を、異常検知部からテスト機器に送信し、返信があるか否かをチェックしてもよい。例えば、テスト機器が異常終了した場合や、ハングアップしている場合には、pingの返信が行われないことがあるため、pingの返信が無いことによって、テスト機器120の異常を確認することができる。
【0028】
また、テスト機器上のソフトウエアの挙動を監視するために、バーチャルマシン上でテスト機器を構築してもよい。そして、テスト機器上で注目しているソフトウエアを稼働させ、バーチャルマシンのファームウエアによって、このテスト機器の挙動を監視し、その監視結果を異常検知部146に送ってもよい。
【0029】
パターン特定部148では、異常を引き起こしたパターンを特定する。異常検知部で異常を検知した場合には、その異常に関する情報がパターン特定部148に伝達されるため、その直前に送信したパターンを、パターン特定部148が特定することができる。
【0030】
パターン特定部148は、異常を引き起こしたパターンを特定し、パターン保存部132に送ってもよい。また、パターン特定部148は、パターンのデータそのものではなく、パターンの長さ(ビット長)などを、パターンとして特定し、パターン特定部148に送信してもよい。また、パターン特定部148は、パターンと共に、使用したポート番号や対象とするアプリケーションを特定する情報をパターンと関連付けて、パターン保存部132に提供してもよい。
【0031】
以上のように、フィルタリング部130と脆弱性検出部140とは、連繋を取りながら動作することができる。
【0032】
このようにして、保護対象機器110に内在する新たな脆弱性を効率的に発見することができる。そして、その脆弱性をターゲットとしたネットワークからのデータの伝送を、効果的に遮断することができる。このことによって、保護対象機器110の保護を迅速に行うことができる。
【0033】
図2は、一実施形態に従った正常パターンと、テスト用のパターンの例を示している。保護対象機器110がWebサーバであるとして、HTTPリクエストとしてテストデータ(パケット)を送信する例が示されている。
【0034】
正常パターン200は、HTTPプロトコルの各種ヘッダ部分である。この情報が、1つのパケットに含まれる。テストパターン1(210)ないしテストパターン4(240)は、パターン生成部142が生成するパターンの例を示している。これらのテストパターンは、主としてバッファオーバーフローをチェックするためのパターンである。4種類のヘッダが存在するため、各ヘッダに、Xが256個連続するデータが用いられている。
【0035】
テストパターン1(210)は、ホストアドレスとして、通常ではあり得ないビット長のアドレス(XXX・・・XXX)を含む。テストパターン2(220)は、受信側の利用するデータ形式を示すアクセプトパラメータとして、通常ではあり得ないビット長のパラメータ(XXX・・・XXX)を含む。テストパターン3(230)は、受信側の利用する言語を示す言語パラメータとして、通常ではあり得ないビット長のパラメータ(XXX・・・XXX)を含む。テストパターン4(240)は、受信側の利用するユーザエージェントのパラメータとして、通常ではあり得ないビット長のパラメータ(XXX・・・XXX)を含む。なお、Xの代わりに、Nullとしたり、文字列の長さを256個ではなく、それよりも長い文字列を用いたりしてもよい。
【0036】
図3は、一実施形態の比較部134の処理のフローチャート300を示している。この方法は、例えば、ネットワーク150からのデータ(パケット)の入力イベントによって開始されてもよい(ステップ310)。例えば、受信した複数のパケットの各々に対してこのフローを実行してもよい。
【0037】
ステップ320において、パターン生成部142に保存されているパターンと、ネットワーク150から受信されたデータとが比較される。比較はパケットの単位であってもよい。ステップ320は、比較結果が肯定的であれば、「はい」を出力する。肯定的であることは、受信されたデータ(パケット)を遮断すべきであることを示しており、ステップ330に進む。比較結果が肯定的でない場合(「いいえ」)であれば、受信されたデータは、通過させてよいことを意味し、ステップ340に進む。
【0038】
ステップ330において、遮断部136は、受信されたデータ(パケット)を遮断する。この遮断によって、保護対象機器110に対して異常をもたらすデータが伝達されることを効果的に防止できる。
【0039】
ステップ240において、遮断部136はrx、受信されたデータを通過させ、保護対象機器110に、データを伝達する。
【0040】
図4は、一実施形態における脆弱性検出部140の処理のフローチャートを示している。
【0041】
ステップ410において、全てのパターンがテストされたかが判断される。
図2に示したように、テストするパターンは、複数存在する。したがって、このステップ410において、全てのテストパターンのテストが終了すれば、この処理は終了する。全てのパターンのテストが終了していない場合には、ステップ420に進む。
【0042】
ステップ420において、パターン生成部142によって、1つのパターンが生成される。1つのパターンは、1つのパケットであってもよい。
【0043】
ステップ430において、生成されたパターンが送信部144によってテスト機器120に送信される。なお、テスト機器120として保護対象機器110とが同じ機器である場合には、生成されたパターンは、送信部144によって保護対象機器110に送られてもよい。
【0044】
ステップ440において、異常検知部146によって、テスト機器120の挙動が検知される。異常検知の方法としては、テスト機器のコンソール出力の異常表示の有無、Pingによる返信が受信できるか否か等を自動的にチェックしてもよい。
【0045】
ステップ450において、所定の挙動例えば異常が検知されたか否かが判断される。この判断結果が「はい」であれば、ステップ460に進む。この判断が「いいえ」であれば、ステップ470に進む。
【0046】
ステップ460において、テスト機器120に異常を引き起こしたパターンを特定する。特定されたパターンは、パターン保存部132に通知されてもよい。
【0047】
ステップ480において、チェック結果を記録してもよい。この記録によって、テスト対象機器に対するテストの進捗管理を行ってもよい。また、この記録を用いて、保護対象機器110の脆弱性の管理を行ってもよい。或いは、この記録に基づいて、例えば、保護対象機器110に内在するアプリケーションプログラムのバージョンアップを行ってもよい。バージョンアップが行われ、保護対象機器110の脆弱性が改善できた場合には、その情報を基に、パターン保存部132に保存されているパターンから、脆弱性が改善できた不要なパターンを削除するようにしてもよい(不図示)。
【0048】
図5は、パターンを生成するために用いるリスト500の例を示している。
図5に示す情報を、例えば、脆弱性検出部140に記憶してもよい。リスト500には、例えば以下の情報が保存されてもよい。
【0049】
以下が
図5に示すようなテスト情報保存手段に予め保存されているものとする。
(1)保護対象機器110のIPアドレス:192.168.1.10
(2)保護対象機器110のポート番号:80
(3)テスト方法:テスト1
(4)保護対象機器110の対象アプリケーション:業務プログラム1
(5)テスト1の正常パターン:正常パターンの保存アドレス
(6)テスト1のテストパターンの総数:4
(7)テスト1の次にテストすべきパターンの番号:1
上記(1)には、送信部144が送信するパターンを送信する宛先のテスト機器120のアドレスを示す情報を保存してもよい。上記(2)には、保護対象機器110のポート番号を特定してもよい。一般に、保護対象機器110のポート番号によって、脆弱性は異なるからである。上記(3)には、テスト方法を特定する情報が格納されてもよい。ここでは、「テスト1」が保存されており、例えば、「テスト1」は、上述のバッファオーバーフローに関するテストであることを示している。そして、例えば「テスト2」としては、ヘッダの名前を置き換えるテストであることを特定してもよい。上記(4)には、保護対象機器110において動作しているテスト対象のアプリケーションを特定する情報が保存されてもよい。この項目を利用するのは、動作するアプリケーション毎に脆弱性が異なる場合が想定されるからである。上記(5)は、テスト1の正常パターンを特定する項目である。これは、例えば、正常パターンが格納されているアドレスにより特定されてもよい。上記(6)は、テスト1のテストパターンの総数を示している。
図4に示したステップ410を実行する際に、この情報が利用されてもよい。上記(7)は、
図4に示したステップ410を実行する際に、この情報が利用されてもよい。この値をインクリメントすることにより、次のテストのバターンを生成することができる。
図5においては、値が「1」となっているため、初期値であることを示しており、テスト1はまだ実行されていないことを示している。
【0050】
図6は、異常が特定されたパターンを保存するリスト600の例を示している。「テスト番号」は、1から順にインクリメントする番号であり、エントリの位置を特定するために用いてもよい。「テスト方法」は、どのテストによって異常が検出されたかを示すものとして利用され得る。「テスト1の正常パターン」は、正常なパターンを確認したい場合に利用されてもよい。「テスト1のパターン情報」は、具体的に異常を引き起こしたパターンのアドレスが格納されてもよい。或いは、パターンに付与されたシーケンスの番号を保存し、パターンを特定してもよい。リスト600は、パターン保存部132に格納され得る。
【0051】
図7は、他の実施形態の構成を示している。脆弱性検出部140は、伝送路720によって保護対象機器110に接続されている。この場合には、脆弱性検出部140は、保護対象機器110に接続されているため、例えば、保護対象機器110がサーバの場合、システムダウンを起こす可能性がある。したがって、保護対象機器110のシステムメンテナンス時などに、脆弱性検出部140を稼働させ、脆弱性のテストを行うことが望ましい。あるいは、再稼働が迅速に行える保護対象機器110であれば、保護対象機器110の稼働中に、脆弱性検出部140を動作させてもよい。この実施例の場合には、保護対象機器110を直接チェックできるため、保護対象機器110の挙動を推定するためのテスト機器120が不要となる。また、テスト機器120を使用する場合よりも、より正確な脆弱性のチェックが行える。脆弱性検出部140によって特定されたパターンは、伝送路740を介してフィルタリング部130に伝達することができる。
【0052】
図8は、他の実施形態の構成を示している。フィルタリング部130が、保護対象機器110内に組み込まれている実施例である。フィルタリング部130を保護対象製品内のフロントエンド部に設置することができる。したがって、保護対象機器110毎にフィルタリング部130におけるフィルタリングの動作をカスタマイズでき、保護対象機器110に対して、より適合した脆弱性の対策を講じることができる。なお、
図8の場合には、脆弱性検出部140が、保護対象機器110に、伝送路820を介して接続されているが、別途テスト機器120を設置してもよい(不図示)。脆弱性検出部140によって特定されたパターンは伝送路810を介してフィルタリング部130に伝達される。
【0053】
図9は、他の実施形態の構成を示している。保護対象機器110内に脆弱性検出部140とフィルタリング部130が位置している。なお、この実施例の場合には、脆弱性検出部140が、保護対象機器110内に存在するため、保護対象機器110の異常動作が、脆弱性検出部140の動作に影響することが予想される。したがって、保護対象機器110の異常動作が保護対象機器110によるパターンの特定に影響する場合がある。このような事態に対処するためには、同一のサーバに複数のバーチャルマシンを動作させ、脆弱性検出部140と、保護対象機器110とを、別のバーチャルマシンで動作させてもよい。このようにすれば、保護対象機器110の異常動作が保護対象機器110によるパターンの特定に影響するのを飛躍的に減少させることができる。
【0054】
図10は、異常検知部の動作を例示するブロック図である。例えば、テスト機器120がサーバの場合には、コンソールポートなどが装備されている場合がある。したがって、伝送路1030を介して、テスト機器120のコンソールポートを異常検知部146に接続してもよい。異常検知部146は、テスト機器120のコンソールポートの出力を解析することによって、テスト機器120の異常の有無を調べることができる。通常、サーバなどのコンソールポートからの出力には、サーバの異常を知らせる種々の情報が出力されるからである。
【0055】
また、
図10に示すように、異常検知部146からテスト機器120にpingなどの死活確認用のパケットを送ってもよい。そして、一定時間経過後に、その返信があるか否かを確認してもよい。返信が確認できない場合には、テスト機器120がシステムダウンを起こしていたり、ハングアップしていたりする可能性が非常に高いことが分かる。したがって、死活確認用のパケットの送信により、テスト機器120の異常の発生を確認することができる。或いは、異常検知部146から、ステータス確認用のコマンドを送信し、テスト機器120の種々のステータスを確認して、異常の有無を検知してもよい。
【0056】
本発明は、これらの実施例に限定されるものではない。
【0057】
図11は、本発明の実施形態のハードウェア(コンピュータ)の構成例を示している。ハードウエアは、CPU1110、メモリ1115、入力装置1120、出力装置1125、外部記憶装置1130、可搬記憶媒体駆動装置1135、ネットワーク接続装置1145が含まれる。そして、それぞれの機器は、バス1150によって接続されている。また、可搬記憶媒体駆動装置1135は、可搬記憶媒体1140を読み書きすることができる。そして、ネットワーク接続装置1145には、ネットワーク1160が接続されている。
【0058】
なお、本実施形態の全部又は一部はプログラムによってインプリメントされ得る。このプログラムは、可搬記憶媒体1140に格納することができる。可搬記憶媒体1140とは、構造を有する1つ以上の非一時的(non-transitory)な記憶媒体を言う。例示として、可搬記憶媒体1140としては、磁気記録媒体、光ディスク、光磁気記録媒体、不揮発性メモリなどがある。磁気記録媒体には、HDD、フレキシブルディスク(FD)、磁気テープ(MT)などがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc-Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。また、光磁気記録媒体には、MO(Magneto-Optical disk)などがある。可搬型記録媒体に格納されたプログラムが読み込まれ、CPUによって実行されることにより、本発明の実施形態の全部又は一部が実施され得る。