(57)【要約】【課題】検証するＣＧＩプログラムのバッファオーバフロー脆弱性の検証の作業効率の向上を図る装置と方法を提供する。【解決手段】クライアント、サーバとの入出力をそれぞれ行う入出力手段２、３と、入出力手段２、３からのデータを処理するデータ処理手段４と、データを蓄積・参照するデータベース（ＤＢ）５、データ処理手段の処理方法の制御とＤＢのデータを変更する制御部６を有し、通常モード時、クライアントからサーバ宛に送出されるデータをサーバへ送出し該データをＤＢに蓄積し、ＤＢの蓄積データを端末１０に表示し端末１０から入力された脆弱性検証用のデータをＤＢに格納する。端末１０から脆弱性検証モードが指示された場合、クライアントから送出されるデータを解析しＤＢの蓄積データと比較し一致した場合、受信データの内容をＤＢの脆弱性検証データに変更しサーバへ送出する。【選択図】図１
2004302584.tif 000002
【特許請求の範囲】
【請求項１】
通信ネットワークを介して接続するクライアント端末及びサーバと通信接続する手段と、記憶装置と、を備え、
前記サーバの所定の脆弱性の検証を行うにあたり、
第１のモードでは、前記クライアント端末から前記サーバあてに送信されるデータを受け取り、前記データを、前記サーバに送信するとともに、前記記憶装置に格納するように制御する手段と、
前記記憶装置に格納されたデータに関連付けて作成された脆弱性検証用のデータを前記記憶装置に記憶する手段と、
第２のモードでは、前記記憶装置に記憶されている脆弱性検証用のデータを参照して生成したデータを前記サーバに送信する手段と、
を備えている、ことを特徴とする検証装置。
【請求項２】
前記第２のモードに設定されているとき、前記クライアント端末から前記サーバあてのデータを受け取り、前記受け取ったデータと前記記憶装置に記憶されているデータとを比較照合し、所定の情報が一致する場合、前記受け取ったデータを、前記受け取ったデータに対応する前記脆弱性検証用のデータの内容に変更し、変更したデータを、前記サーバに送信する手段を備えている、ことを特徴とする請求項１記載の検証装置。
【請求項３】
通信ネットワークを介して接続するクライアント端末とサーバ間に配される検証装置であって、
前記クライアント端末及び前記サーバとそれぞれ通信接続する手段と、
記憶装置と、操作端末と、を備え、
第１のモードのときに、前記クライアント端末から前記サーバに送出されるデータを受信し、受信したデータを前記サーバへ送出するとともに、受信した所定のデータを前記記憶装置に蓄積するように制御する手段と、
前記記憶装置に記憶されているデータを、前記操作端末に表示し、前記操作端末から入力された脆弱性検証用のデータを受け取り、前記記憶装置に格納するように制御する手段と、
を有し、
第２のモードのときに、前記クライアント端末から送出されるデータを受信した際、前記受信データの内容と、前記記憶装置に蓄積されているデータとの比較を行い、比較の結果、所定の情報が一致する場合には、前記受信データの内容を、脆弱性検証用のデータとして前記記憶装置に記憶されている内容に変更し、変更したデータを、前記サーバへ送出するように制御する手段と、
を含む、ことを特徴とする検証装置。
【請求項４】
前記操作端末から、前記第１のモードと前記第２のモードの設定が、切替自在とされている、ことを特徴とする請求項３記載の検証装置。
【請求項５】
前記第１のモードのときには、前記クライアント端末から前記サーバに送出されるデータをトランスペアレントに前記サーバへ送出する手段を備えている、ことを特徴とする請求項３記載の検証装置。
【請求項６】
前記サーバは、ＷＥＢサーバであり、
前記クライアント端末は、ＷＥＢブラウザが実装された端末であり、
前記脆弱性検証用のデータは、前記ＷＥＢサーバに搭載されるＣＧＩ（Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ）プログラムのバッファオーバフロー脆弱性検証用のデータである、ことを特徴とする請求項３記載の検証装置。
【請求項７】
前記第１のモードのとき、前記クライアント端末から前記サーバへの要求を受け取り、前記要求に含まれる、ＣＧＩの名称及びＣＧＩへ引き渡す引数名称と値を抽出し、前記記憶装置に格納する手段を備えている、ことを特徴とする請求項６記載の検証装置。
【請求項８】
前記第２のモードのときに、前記受信データに含まれるＣＧＩの名称と引数の名称と、前記記憶装置に蓄積されたデータのＣＧＩの名称と引数の名称とが一致するか否かの比較を行い、一致した場合、受信データに含まれる引数データの内容を前記記憶装置に記憶されているバッファオーバフロー脆弱性検証用のデータに置き換えて、前記サーバに送信する制御を行う手段を備えている、ことを特徴とする請求項７記載の検証装置。
【請求項９】
通信ネットワークを介して接続するクライアント端末及びサーバと通信接続する検証装置が、前記サーバの所定の脆弱性の検証を行うにあたり、
第１のモードでは、前記クライアント端末から前記サーバあてに送信されるデータを前記検証装置が受け取り、前記検証装置は、前記データを、前記サーバに送信するとともに、前記記憶装置に格納するように制御するステップと、
前記検証装置は、前記記憶装置に格納されたデータに関連付けて操作者により作成された脆弱性検証用のデータを、前記記憶装置に記憶するステップと、
第２のモードでは、前記検証装置は、前記記憶装置に記憶されている脆弱性検証用のデータを参照してデータを生成し、前記生成したデータを前記サーバに送信するステップと、
を含む、ことを特徴とする検証方法。
【請求項１０】
前記第２のモードに設定されているとき、前記クライアント端末から前記サーバあてのデータを受け取り、前記受け取ったデータと前記記憶装置に記憶されているデータとを比較するステップと、
前記比較の結果、所定の情報が一致する場合、前記受け取ったデータを、前記受け取ったデータに対応する前記脆弱性検証用のデータの内容に変更し、変更したデータを、前記サーバに送信するステップと、
を含む、ことを特徴とする請求項９記載の検証方法。
【請求項１１】
通信ネットワークを介して接続するクライアント端末とサーバ間に、前記クライアント端末及び前記サーバと通信接続する検証装置を配置し、
第１のモードのときに、
前記検証装置が、前記クライアント端末から前記サーバに送出されるデータを受信し、受信したデータを前記サーバへ送出するとともに、受信した所定のデータを記憶装置に蓄積するように制御するステップと、
前記検証装置が、前記記憶装置に記憶されているデータを、前記検証装置に接続される操作端末に表示するとともに、前記操作端末から入力された脆弱性検証用のデータを受け取り、前記記憶装置に格納するステップと、
を有し、
第２のモードのときに、
前記検証装置が、前記クライアント端末から送出されるデータを受信した際、前記受信データの内容と、前記記憶装置に蓄積されているデータとの比較を行うステップと、
前記検証装置は、前記比較の結果、所定の情報が一致する場合、前記受信データの内容を、脆弱性検証用のデータとして、前記記憶装置に記憶されている内容に変更し、変更したデータを、前記サーバへ送出するステップと、
を含む、ことを特徴とする検証方法。
【請求項１２】
前記検証装置に接続される前記操作端末から、前記第１のモードと前記第２のモードの設定が、切り替えが自在とされている、ことを特徴とする請求項１１記載の検証方法。
【請求項１３】
前記検証装置は、第１のモードのときには、前記クライアント端末から前記サーバに送出されるデータをトランスペアレントに前記サーバへ送出する、ことを特徴とする請求項１１記載の検証方法。
【請求項１４】
前記サーバは、ＷＥＢサーバであり、
前記クライアント端末は、ＷＥＢブラウザが実装された端末であり、
前記脆弱性検証用のデータは、前記ＷＥＢサーバに搭載されるＣＧＩ（Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ）プログラムのバッファオーバフロー脆弱性検証用のデータである、ことを特徴とする請求項１１記載の検証方法。
【請求項１５】
前記第１のモードのとき、前記検証装置は、前記クライアント端末から前記サーバへの要求データを受け取り、前記要求に含まれる検索対象のＣＧＩの名称及びＣＧＩへ引き渡す引数名称とデータを、前記記憶装置に格納する、ことを特徴とする請求項１４記載の検証方法。
【請求項１６】
前記第２のモードのときに、前記受信データに含まれるＣＧＩの名称と引数の名称と、前記記憶装置に蓄積されている、ＣＧＩの名称と引数の名称とが一致するか否かの比較を行い、一致した場合、前記受信データの引数データの内容を、前記記憶装置に記憶されているバッファオーバフロー脆弱性検証用のデータに置き換えて、前記サーバに送信するステップを含む、ことを特徴とする請求項１５記載の検証方法。
【請求項１７】
通信ネットワークを介して接続するクライアント端末及びサーバと通信接続し、前記サーバの所定の脆弱性の検証を行う検証装置を構成するコンピュータに、第１のモードでは、前記クライアント端末から前記サーバあてに送信されるデータを受け取り、前記データを、前記サーバに送信するとともに、前記記憶装置に格納するように制御する処理と、
前記記憶装置に格納されたデータに関連付けて作成された脆弱性検証用のデータを前記記憶装置に記憶する処理と、
第２のモードでは、前記記憶装置に記憶されている脆弱性検証用のデータを参照して生成したデータを、前記サーバに送信する処理と、
を実行させるプログラム。
【請求項１８】
請求項１７記載のプログラムにおいて、
前記第２のモードに設定されているとき、前記クライアント端末から前記サーバあてのデータを受け取り、前記受け取ったデータと前記記憶装置に記憶されているデータとを比較する処理と、
前記比較の結果、所定の情報が一致する場合、前記受け取ったデータを、前記受け取ったデータに対応する前記脆弱性検証用のデータの内容に変更し、変更したデータを、前記サーバに送信する処理を、前記コンピュータに実行させるプログラム。
【請求項１９】
通信ネットワークを介して接続するクライアント端末とサーバ間に設けられ、前記クライアント端末及び前記サーバと通信接続する検証装置を構成するコンピュータに、
第１のモードのときに、
前記クライアント端末から前記サーバに送出されるデータを受信し、受信したデータを前記サーバへ送出するとともに、受信した所定のデータを、記憶装置に蓄積するように制御する処理と、
前記記憶装置に記憶されているデータを、前記検証装置の端末に表示し、前記端末から入力された脆弱性検証用のデータを前記記憶装置に格納する処理と、
を実行させ、
第２のモードのときに、
前記クライアント端末から送出されるデータを受信して、受信データの解析を行い、データの内容と、前記記憶装置に蓄積されたデータとの比較を行う処理と、
前記比較の結果、一致した場合には、前記受信データの内容を、脆弱性検証用のデータとして前記記憶装置に記憶されている内容に変更し、変更したデータを、前記サーバへ送出する処理と、
を前記コンピュータに実行させるプログラム。
【請求項２０】
前記サーバは、ＷＥＢサーバであり、
前記クライアント端末は、ＷＥＢブラウザが実装された端末であり、
前記脆弱性検証用のデータは、前記ＷＥＢサーバに搭載されるＣＧＩ（Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ）プログラムのバッファオーバフロー脆弱性検証用のデータである、ことを特徴とする請求項１９記載のプログラム。
【請求項２１】
請求項２０記載のプログラムにおいて、
前記第１のモードのとき、前記検証装置は、前記クライアント端末から前記サーバへの要求データを受け取り、前記要求に含まれる検索対象のＣＧＩの名称及びＣＧＩへ引き渡す引数名称とデータを、前記記憶装置に格納する処理を、前記コンピュータに実行させるプログラム。
【請求項２２】
請求項２１記載のプログラムにおいて、
前記第２のモードのときに、前記受信データに含まれるＣＧＩの名称と引数の名称と、前記記憶装置に蓄積されたデータのＣＧＩの名称と引数の名称とが一致するか否かの比較を行い、一致した場合、受信データの引数データの内容を前記記憶装置に記憶されているバッファオーバフロー脆弱性検証用のデータに置き換えて、前記サーバに送信する処理を、前記コンピュータに実行させるプログラム。
【請求項２３】
ＷＥＢクライアントとの入出力を行うクライアントデータ入出力手段と、
ＷＥＢサーバとの入出力を行うサーバデータ入出力手段と、
前記クライアントデータ入出力手段と前記サーバデータ入出力手段との間でデータ授受し、前記データを処理するデータ処理手段と、
前記データ処理手段によりアクセスされ、データを蓄積するデータベースと、
前記データ処理手段における処理を制御する制御手段と、
を有し、
検証対象のＣＧＩプログラムが、前記ＷＥＢサーバに搭載され、
前記データベースは、ＣＧＩバッファオーバフロー脆弱性検証用のデータを記憶し、
前記データ処理手段は、前記ＷＥＢクライアントから前記ＷＥＢサーバへのデータを、前記クライアントデータ入出力手段を介して受け取った際に、受け取ったデータを、前記データベースに蓄積されている、前記受け取ったデータに対応するＣＧＩバッファオーバフロー脆弱性検証用のデータの内容に変更し、変更したデータを、前記サーバデータ入出力手段を介して前記ＷＥＢサーバへ送出するように制御する、ことを特徴とするＣＧＩバッファオーバフロー脆弱性検証装置。
【請求項２４】
ＷＥＢクライアントとの入出力を行うクライアントデータ入出力手段と、
ＷＥＢサーバとの入出力を行うサーバデータ入出力手段と、
前記クライアントデータ入出力手段及び前記サーバデータ入出力手段からのデータを、トランスペアレントに、前記クライアントデータ入出力手段及び前記サーバデータ入出力手段に受け渡し、前記データをデータベースに蓄積するデータ処理手段と、
前記データ処理手段が入出力データを蓄積するデータベースと、
前記データ処理手段にトランスペアレントな処理と、入出力データの前記データベースへの蓄積の動作指示を行う制御手段と、
を有し、
検証対象のＣＧＩプログラムが前記ＷＥＢサーバに搭載され、
前記データ処理手段は、
前記制御手段からの動作指示に基づき、前記ＷＥＢクライアントから前記ＷＥＢサーバへ送出される入出力データを前記クライアントデータ入出力手段を介して受け取り、前記サーバデータ入出力手段から前記ＷＥＢサーバへ送出するとともに、前記入出力データを前記データベースに蓄積し、
前記データベースは、前記データベースに蓄積された入出力データに対応して作成されたデータを、前記ＣＧＩバッファオーバフロー脆弱性検証用のデータとして記憶し、
前記データ処理手段は、ＣＧＩバッファオーバフロー脆弱性検証モードにおいて、前記ＷＥＢクライアントから前記ＷＥＢサーバへのデータを前記クライアントデータ入出力手段を介して受け取った際に、受け取ったデータを、前記データベースに蓄積されている、前記受け取ったデータに対応するＣＧＩバッファオーバフロー脆弱性検証用のデータの内容に変更し、変更したデータを、前記サーバデータ入出力手段を介して前記ＷＥＢサーバへ送出するように制御する、ことを特徴とするＣＧＩバッファオーバフロー脆弱性検証装置。
【請求項２５】
ＷＥＢクライアントとの入出力を行うクライアントデータ入出力手段と、
ＷＥＢサーバとの入出力を行うサーバデータ入出力手段と、
前記クライアントデータ入出力手段及び前記サーバデータ入出力手段からのデータを、データベースを参照して、入出力データを変更して、前記クライアントデータ入出力手段及び前記サーバデータ入出力手段に受け渡すデータ処理手段と、
前記データ処理手段が入出力データを蓄積する前記データベースと、
前記データ処理手段に入出力データの変更の動作指示を行う制御手段と、
を有し、
検証対象のＣＧＩプログラムが前記ＷＥＢサーバに搭載され、
前記制御手段からの入出力データの変更の動作指示を受けた前記データ処理手段は、前記ＷＥＢクライアントから前記ＷＥＢサーバへのデータを前記クライアントデータ入出力手段を介して受け取った際に、前記データベースを参照して、前記受け取ったデータを変更し、変更したデータを、前記サーバデータ入出力手段を介して前記ＷＥＢサーバへ送出するように制御する、ことを特徴とするＣＧＩバッファオーバフロー脆弱性検証装置。
【請求項２６】
前記データ処理手段は、通常モードのときは、前記ＷＥＢクライアントから前記ＷＥＢサーバへ送出されるデータを前記クライアントデータ入出力手段を介して受け取り、前記サーバデータ入出力手段から前記ＷＥＢサーバへ送出するとともに、前記データを前記データベースに蓄積し、
前記データベースは、前記データベースに蓄積されたデータに対応して作成されたデータを、前記ＣＧＩバッファオーバフロー脆弱性検証用のデータとして記憶する、ことを特徴とする請求項２３又は２５記載のＣＧＩバッファオーバフロー脆弱性検証装置。
【請求項２７】
ＷＥＢクライアントとの入出力を行うクライアントデータ入出力手段と、
ＷＥＢサーバとの入出力を行うサーバデータ入出力手段と、
クライアントデータ入出力手段及びサーバデータ入出力手段からのデータをトランスペアレントに、前記クライアントデータ入出力手段及び前記サーバデータ入出力手段に受け渡しながら、入出力データをデータベースに蓄積するデータ処理手段と、
前記データ処理手段が入出力データを蓄積する前記データベースと、
前記データベースに蓄積されたデータに対してバッファオーバフロー脆弱性検証を行うための変更を加える制御手段と、
を有し、
検証対象のＣＧＩプログラムが前記ＷＥＢサーバに搭載され、
前記データ処理手段は、通常モードのときは、前記ＷＥＢクライアントから前記ＷＥＢサーバへ送出されるデータを前記クライアントデータ入出力手段を介して受け取り、前記サーバデータ入出力手段から前記ＷＥＢサーバへ送出するとともに、前記データを前記データベースに蓄積し、
前記制御手段は、前記データベースに蓄積されたデータを変更したデータを、前記ＣＧＩバッファオーバフロー脆弱性検証用のデータとして記憶し、
前記データ処理手段は、ＣＧＩバッファオーバフロー脆弱性検証用モードのとき、前記ＷＥＢクライアントから前記ＷＥＢサーバへのデータを前記クライアントデータ入出力手段を介して受け取った際に、前記受け取ったデータを、前記データベースに蓄積されている、前記受け取ったデータに対応する、ＣＧＩバッファオーバフロー脆弱性検証用のデータの内容に変更し、変更したデータを、前記ＷＥＢサーバへ送出するように制御する、ことを特徴とするＣＧＩバッファオーバフロー脆弱性検証装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワーク上のサーバに対する攻撃の検証技術に関し、特に、ＣＧＩプログラムの検証等に適用して好適とされる、装置及び方法並びにプログラムに関する。
【０００２】
【従来の技術】
ＣＧＩ（Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ）は、ＷＥＢクライアント（ブラウザ）からの要求を受け付けたＷＥＢサーバが対応するプログラムを起動し、プログラムの実行結果をＨＴＭＬ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）でＷＥＢブラウザに返す仕組であり、ＣＧＩで動作するプログラム（ＷＥＢクライアントからの指示に応じてＷＥＢサーバ側で動作するプログラム）をＣＧＩプログラムという。ＣＧＩプログラムは、スクリプ言語Ｐｅｒｌ（Ｐｒａｃｔｉｃａｌ  Ｒｅｐｏｒｔ  Ｅｘｔｒａｃｔｉｏｎ  Ｌａｎｇｕａｇｅ）等や、開発言語Ｃ等を用いて作成される。次に、バッファオーバフロー脆弱性について概説する。インターネットに常時接続されているＷＥＢサーバは、不正アクセス、サービス不能攻撃等、多くの攻撃を受ける。例えば、ＷＥＢブラウザで不正なＵＲＬによる要求（例えば特段に長い文字数や特殊コードを含むＵＲＬ）によってバッファオーバーフローが発生し、サーバ機能を停止する場合がある。ここで、バッファオーバーフローとは、サーバにアクセスしたユーザが本来の文字数（桁数）を越えた長い文字列等を入力した場合、バッファ（メモリ）内で溢れを生じ、誤動作することをいう。バッファオーバフロー脆弱性は、文字数の制限が行われていない各種サーバについて存在し得る。そして、この脆弱性を利用した攻撃により、システム破壊、権限の奪取、あるいはデータ漏洩等の発生の可能性もある。
【０００３】
上記脆弱性に対するセキュリティ対策として、ＣＧＩプログラムの入力データ処理のバッファオーバフロー脆弱性の検証は、一般に、下記の３つの方法で行われている。
【０００４】
第１の方法は、ＣＧＩプログラムのソースコードを人手にて机上チェックを行い、バッファオーバフロー脆弱性の検証を行う、というものである。
【０００５】
第２の方法は、ＣＧＩプログラムのソースコードをバッファオーバフロー脆弱性検出プログラムによって検証を行う、というものである。
【０００６】
第３の方法は、検証するＣＧＩプログラムをＷＥＢサーバに搭載し、ＣＧＩプログラムの入力データ仕様に規定されている文字数より長いか、あるいは、規定されていない文字コードをＷＥＢサーバに接続されたクライアントから人手あるいは検証用プログラムで送出して検証を行う、というものである。
【０００７】
なお、従来の脆弱性検査システムとして、ネットワークの脆弱性を検査するための検査プランを作成する脆弱性検査計画用計算機と、作成した検査プランにしたがって検査対象に対して攻撃を加え、攻撃に対して検査対象がとった挙動をもとに検査結果を作成する脆弱性検査用計算機と、を備えたシステムが知られている（例えば特許文献１参照）。この脆弱性検査システムは、脆弱性検査の検査項目を格納した脆弱性情報データベース（脆弱性のソースコードと攻撃のソースコードを含む）と、脆弱性検査を実行するための検査ツールを格納した脆弱性検査ツールデータベースと、セキュリティポリシーをもとに脆弱性情報データベースから検査項目を絞り込む絞込み手段とを備え、該絞込み手段で絞り込まれた検査項目をもとに、脆弱性検査ツールデータベースから検査ツールを検索し、検査プランを作成する構成とされる。
【０００８】
またＣＧＩによる攻撃によるバッファオーバフローの検出に対する対抗処理として攻撃元ホストのシャットダウンとターゲットがソースによって侵入された旨のアラートを発する監視部を備えた構成も知られている（例えば特許文献２参照）。
【０００９】
そして、端末と公開用ＷＥＢサーバとの間にＷＥＢサイト作成支援システムを配置し、端末からの遠隔操作によりＷＥＢデータを管理編集し、ＷＥＢデータを含む利用者ごとのデータを階層的ディレクトリ構造に基づいて格納するとともに、プレビューを提供し、ＷＥＢデータをインターネットを経て所定の公開用ＷＥＢサーバに転送する構成としたシステムも知られている（例えば特許文献３参照）。
【００１０】
また、入力引数の値等を記憶するものとして、システムのテストにおいて関数が呼ばれる度に、該関数の属するモジュールの名称、関数の名称、入力引数の値、出力引数の値、リターン値をトレース情報として記憶し、テストを実行したモジュール毎の作成日付を記憶し、システムがバージョンアップしたとき、同じテストを再実行し、トレース情報とモジュール毎の作成日付を、前回のテスト時の結果と比較することで、デグレーション箇所を予測するテスト方法も知られている（例えば特許文献４参照）
【００１１】
【特許文献１】
特開２００２−２２９９４６号公報（第３−第４頁、第１図）
【特許文献２】
特開２００２−３４２２７６号公報（第６頁、第１０図）
【特許文献３】
特開２００２−１９７０１９号公報（第５頁、第１図）
【特許文献４】
特開平１０−３２０２３４号公報（第２−３頁、第１図）
【００１２】
【発明が解決しようとする課題】
ところで、上記した従来の第１乃至第３の方法は、検証するＣＧＩプログラムをＷＥＢサーバに搭載しての検証に、時間と工数を要する、という問題点を有している。このため、ＣＧＩプログラムの生産性を向上させることが困難である。
【００１３】
その理由は、上記した従来の第１乃至第３の方法により、検証するＣＧＩプログラムをＷＥＢサーバに搭載しての検証を行うには、ＣＧＩプログラムの入力データ仕様を理解した上で、ＷＥＢサーバに接続されたクライアントから、人手により、あるいは検証用プログラムを作成して、検証を行う必要がある、ためである。
【００１４】
したがって、本発明の主たる目的は、ＣＧＩバッファオーバフロー等の脆弱性の検証の作業効率の向上に好適とされる検証装置と方法並びにプログラムを提供することにある。
【００１５】
【課題を解決するための手段】
前記目的を達成する本発明の１つのアスペクトに係る検証装置は、通信ネットワークを介して接続するクライアント端末及びサーバと通信接続する手段と、記憶装置と、を備え、前記サーバの所定の脆弱性の検証を行うにあたり、第１のモード（通常モード又は正常動作検証モード）では、前記クライアント端末から前記サーバあてに送信されるデータを受け取り、前記データを、前記サーバに送信するとともに、前記記憶装置に格納するように制御し、前記記憶装置に格納されたデータに関連付けて作成された脆弱性検証用のデータを前記記憶装置に格納する制御を行い、第２のモード（脆弱性検証用モード）では、前記記憶装置に記憶されている脆弱性検証用のデータを参照して生成したデータを前記サーバに送信する制御を行う。本発明に係る検証装置において、前記第２のモードに設定されているとき、前記クライアント端末から前記サーバあてのデータを受け取り、前記受け取ったデータと前記記憶装置に記憶されているデータとを比較照合し、所定の情報が一致する場合、前記受け取ったデータを、前記受け取ったデータに対応する前記脆弱性検証用のデータの内容に変更し、変更したデータを、前記サーバに送信する。
【００１６】
本発明は、別のアスペクトにおいて、ネットワークを介して接続するクライアント端末とサーバ間に配され、前記クライアント端末及び前記サーバと通信接続する手段を備えた検証装置が、通常モードのときは、前記クライアント端末から前記サーバに送出されるデータを受信し、受信したデータを前記サーバへ送出するとともに、受信したデータを、記憶装置に蓄積するように制御する手段と、前記記憶装置に記憶されているデータを、前記検証装置の操作端末に表示し、前記操作端末から入力された脆弱性検証用のデータを前記記憶装置に格納するように制御する手段を備えている。さらに、この検証装置は、前記操作端末から脆弱性検証モードが指示された場合、脆弱性検証モードに設定され、前記クライアント端末から送出されるデータを受信して、受信データの解析を行い、受信データの内容と前記記憶装置に蓄積されたデータとの比較を行い、比較の結果、所定の情報が一致した場合には、前記受信データの内容を、脆弱性検証用として前記記憶装置に記憶されている内容に変更し、変更したデータを、前記サーバへ送出するように制御する手段と、を備えている。
【００１７】
本発明によれば、前記検証装置の操作端末から、通常モードと脆弱性検証モードの切り替えが自在とされている。本発明によれば、前記検証装置は、通常モード時には、前記クライアント端末から、前記サーバに送出されるデータを、そのまま前記サーバへ送出する。
【００１８】
本発明によれば、後述する実施形態のとおり、前記サーバがＷＥＢサーバであり、前記クライアント端末がＷＥＢブラウザが実装された端末であり、前記脆弱性検証用のデータは、前記ＷＥＢサーバに搭載されるＣＧＩ（Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ）プログラムのバッファオーバフロー脆弱性検証用のデータとしてもよい。
【００１９】
本発明によれば、前記通常モードのとき、前記クライアント端末から前記サーバへの要求データを受け取り、前記要求データに含まれる検索対象のＣＧＩの名称及びＣＧＩへ引き渡す引数名称とデータが、前記記憶装置に格納される構成としてもよい。
【００２０】
本発明によれば、受信データに含まれるＣＧＩの名称とデータの名称と、前記記憶装置に蓄積されたデータのＣＧＩの名称とデータの名称とが一致するか否かの比較を行い、一致した場合、データの内容を前記記憶装置に記憶されているバッファオーバフロー脆弱性検証用のデータに置き換えて前記サーバに送信する制御を行うように制御する、構成としてもよい。
【００２１】
また、本発明は、別のアスペクトにおいて、ＷＥＢクライアントとの入出力を行うクライアントデータ入出力手段と、ＷＥＢサーバとの入出力を行うサーバデータ入出力手段と、クライアントデータ入出力手段及びサーバデータ入出力手段からのデータを処理するデータ処理手段と、データ処理手段が入出力データを蓄積・参照するデータベースと、データ処理手段の処理方法の制御とデータベースのデータを変更する制御手段を有する。
【００２２】
上記目的を達成する本発明の１つのアスペクトに係る方法は、通信ネットワークを介して接続するクライアント端末及びサーバと通信接続する検証装置が、前記サーバの所定の脆弱性の検証を行うにあたり、第１のモードでは、前記クライアント端末から前記サーバあてに送信されるデータを前記検証装置が受け取り、前記検証装置は、前記データを、前記サーバに送信するとともに、前記記憶装置に格納するように制御するステップと、前記検証装置は、前記記憶装置に格納されたデータに関連付けて操作者により作成された脆弱性検証用のデータを、前記記憶装置に記憶するステップと、第２のモードでは、前記検証装置は、前記記憶装置に記憶されている脆弱性検証用のデータを参照してデータを生成し、前記生成したデータを前記サーバに送信するステップと、を含む。本発明に係る方法において、前記第２のモードに設定されているとき、前記クライアント端末から前記サーバあてのデータを受け取り、前記受け取ったデータと前記記憶装置に記憶されているデータとを比較するステップと、前記比較の結果、所定の情報が一致する場合、前記受け取ったデータを、前記受け取ったデータに対応する前記脆弱性検証用のデータの内容に変更し、変更したデータを、前記サーバに送信するステップを含む。
【００２３】
上記目的を達成する本発明の１つのアスペクトに係るコンピュータ・プログラムは、通信ネットワークを介して接続するクライアント端末及びサーバと通信接続し、前記サーバの所定の脆弱性の検証を行う検証装置を構成するコンピュータに、第１のモードでは、前記クライアント端末から前記サーバあてに送信されるデータを受け取り、前記データを、前記サーバに送信するとともに、前記記憶装置に格納するように制御する処理と、前記記憶装置に格納されたデータに関連付けて作成された脆弱性検証用のデータを前記記憶装置に記憶する処理と、を実行させ、第２のモードでは、前記記憶装置に記憶されている脆弱性検証用のデータを参照して生成したデータを、前記サーバに送信する処理を実行させるプログラムよりなる。本発明に係るプログラムにおいて、前記第２のモードに設定されているとき、前記クライアント端末から前記サーバあてのデータを受け取り、前記受け取ったデータと前記記憶装置に記憶されているデータとを比較する処理と、前記比較の結果、所定の情報が一致する場合、前記受け取ったデータを、前記受け取ったデータに対応する前記脆弱性検証用のデータの内容に変更し、変更したデータを、前記サーバに送信する処理とを含むように構成してもよい。
【００２４】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して詳細に説明する。本発明に係る検証方法の一実施形態は、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）網等の通信ネットワークを介して接続するクライアント端末（７）とサーバ（８）間に、クライアント端末（７）及びサーバ（８）と通信接続する検証装置（１）を配置したものであり、以下の工程（ステップ）を含む。
【００２５】
ステップ１：通常モード（正常動作の検証モード）のときは、検証装置（１）は、クライアント端末（７）からサーバ（８）に送出されるデータを受信し、受信したデータをサーバ（８）へそのまま送出するとともに、受信した所定のデータ（例えばＣＧＩとの交信・要求の場合、ＣＧＩ名称、引数（データ）名称、値（データ））を、記憶装置（５）に蓄積するように制御する。記憶装置（５）には、データベースを構成してもよい。この場合、データベース・システムは、ＳＱＬ等任意の既存のデータベース・システムを用いることができる。
【００２６】
ステップ２：つづいて、検証装置（１）は、記憶装置（５）に記憶されているデータを、検証装置（１）に接続する端末（１０）に表示する。検証装置（１）は、端末（１０）から入力された脆弱性検証用のデータを、記憶装置（５）に格納する。このステップで用いられる端末（１０）は、検証装置（１）と接続し表示、操作・入力が行えるものであれば、リモート端末であってもよいことは勿論である。
【００２７】
ステップ３：検証装置（１）は、端末（１０）から、脆弱性検証モードの設定の指示が入力された場合、クライアント端末（７）から送出されるデータを受信して、受信データの解析を行い、受信データの内容と、記憶装置（５）に蓄積されたデータとの比較を行う。なお、検証装置（１）に接続する端末（１０）から、通常モードと脆弱性検証モードとは、切替自在に設定される。
【００２８】
ステップ４：検証装置（１）で、比較の結果、所定の情報（例えばＣＧＩ名称、データ名称等）が一致した場合には、受信データの内容を、脆弱性検証用データとして記憶装置（５）に記憶されている内容に変更し、変更したデータを、サーバ（８）へ送出する。これにより、サーバ（８）のＣＧＩバッファオーバフロー脆弱性等、所定の脆弱性の検証が行われる。
【００２９】
上記各ステップは、検証装置（１）を構成するコンピュータで実行されるプログラムにより、その処理・機能が実現される。
【００３０】
図１は、本発明の一実施形態の装置構成を示すブロック図である。図１を参照すると、本発明の一実施形態をなすＣＧＩバッファオーバフロー脆弱性検証装置１は、ＷＥＢクライアント７とデータの入出力を行うクライアントデータ入出力部２と、ＷＥＢサーバ８とデータの入出力を行うサーバデータ入出力部３と、クライアントデータ入出力部２及びサーバデータ入出力部３からのデータを変更してクライアントデータ入出力部２及びサーバデータ入出力部３に受け渡すデータ処理部４と、データ処理部４がデータを蓄積・参照するデータベース５と、データ処理部４の動作を制御する制御部６と、を備えている。ＣＧＩバッファオーバフロー脆弱性検証装置１の制御部６には、制御部６を操作するための操作端末１０が接続されている。また、ＣＧＩバッファオーバフロー脆弱性検証装置１のクライアントデータ入出力部２には、ＷＥＢクライアント７が、サーバデータ入出力部３にはＷＥＢサーバ８がそれぞれ接続されている。さらに、ＷＥＢサーバ８には、バッファオーバフロー脆弱性を検証されるＣＧＩプログラム（ＣＧＩスクリプト）９が搭載されている。
【００３１】
図２は、本実施形態の動作を説明するための流れ図である。図１及び図２を参照して、本実施の形態の動作について詳細に説明する。
【００３２】
まず、操作端末１０から通常モードが指示された場合（図２のステップＳ１）、制御部６は、データ処理部４に対して、トランスペアレント（透過的）な処理を、データ処理部４に指示する。この通常モードにおいて、ＷＥＢクライアント７から送出されるデータは、クライアントデータ入出力部２で受信され、データ処理部４を経由し、サーバデータ入出力部３から、ＷＥＢサーバ８へ送出される。この際、データ処理部４では、データの変更は行われない。また、データ処理部４は、クライアントデータ入出力部２で受信されるデータを、データベース５に蓄積する（図２のステップＳ２）。
【００３３】
より具体的には、ＣＧＩとの交信にＧＥＴメソッドを使用してデータを引き渡す場合、ＷＥＢクライアント７から、例えば、
”ＧＥＴ  ｃｇｉ？ｄａｔａ１＝ａｂｃ＆ｄａｔａ２＝１２３”
なるデータ（要求）が、ＷＥＢサーバ８へ送られるものとする。この場合、ＣＧＩバッファオーバフロー脆弱性検証装置１では、当該データを受信するが、データ処理部４では、当該データの変更を行わずに、そのまま、サーバデータ入出力部３へ送り、サーバデータ入出力部３は、データ処理部４から転送された当該データをＷＥＢサーバ８へ送出する。なお、ＧＥＴメソッドでは、送信データ（Ｓｔｒｉｎｇ）を「＆」で連結し、ＣＧＩを指定するＵＲＬの末尾に「？」を加え、その後、データが追加される。
【００３４】
また、データ処理部４は、当該データのＣＧＩ名称とデータ名及び内容を、データベース５に蓄積する。
【００３５】
この例では、
ＣＧＩ名称として、”ｃｇｉ”、
データ名称（引数名称）として、”ｄａｔａ１”、その内容（値）として、”ａｂｃ”、
データ名称（引数名称）として”ｄａｔａ２”、その内容（値）として”１２３”、が、データベース５に蓄積される。
【００３６】
次に、制御部６は、データベース５に蓄積されているデータを、操作端末１０に表示する。
【００３７】
そして、個別に、操作端末１０から、操作者によって入力されたバッファオーバフロー脆弱性検証データ内容を受け、入力されたバッファオーバフロー脆弱性検証データの内容は、制御部６を介して、データベース５に格納される（ステップＳ３）。
【００３８】
次に、操作端末１０から、ＣＧＩバッファオーバフロー脆弱性検証モードが指示された場合（図２のステップＳ４のＹＥＳ）、ＣＧＩバッファオーバフロー脆弱性検証モードに設定され、制御部６は、データ処理部４に対して、データの変更処理を指示する。
【００３９】
ＣＧＩバッファオーバフロー脆弱性検証モードにおいて、ＷＥＢクライアント７から送出されるデータは、クライアントデータ入出力部２で受信され、データ処理部４を経由し、サーバデータ入出力部３からＷＥＢサーバ８へ送出される。このとき、データ処理部４では、受信データの解析を行い、データ内部のＣＧＩ名称とデータ名及び内容を抽出し、データベース５を参照する。データ処理部４では、データベース５に蓄積されたデータとの比較を行う（図２のステップＳ５）。
【００４０】
比較の結果、受信データのＣＧＩ名称及びデータ名がデータベース５の蓄積データと一致した場合には（図２のステップＳ６のＹＥＳ）、受信データを、バッファオーバフロー脆弱性検証用として登録されている内容に変更し（図２のステップＳ７）、変更した内容をサーバデータ入出力部３へ送る。そして、サーバデータ入出力部３は、データ処理部４で変更された内容を、ＷＥＢサーバ８へデータを送出する（図２のステップＳ８）。受信データのＣＧＩ名称及びデータ名がデータベース５の蓄積データと一致しない場合には、受信データをそのままＷＥＢサーバ８へ送信する。
【００４１】
より具体的には、ＷＥＢクライアント７から、例えば、
”ＧＥＴ  ｃｇｉ？ｄａｔａ１＝ａｂｃ＆ｄａｔａ２＝１２３”
なるデータが送られた場合、ＣＧＩバッファオーバフロー脆弱性検証装置１のデータ処理部４は、ＣＧＩ名称を”ｃｇｉ”、データ名称として”ｄａｔａ１”、及びデータ名称”ｄａｔａ２”を検索キーとして、データベース５を参照する。
【００４２】
ＣＧＩ名称及びデータ名称が一致し、且つ、バッファオーバフロー脆弱性検証データ内容がデータベース５に登録されている場合には、対応するデータ内容を、データベース５に登録されているバッファオーバフロー脆弱性検証データ内容に置き換えて、サーバデータ入出力部３へ送る。サーバデータ入出力部３は、バッファオーバフロー脆弱性検証データ内容を、ＷＥＢサーバ８へ送出する。
【００４３】
データ名”ｄａｔａ１”に対するバッファオーバフロー脆弱性検証データ内容が、”ａｂｃＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦ”であった場合、ＷＥＢサーバ８にはデータ、
”ＧＥＴ  ｃｇｉ？ｄａｔａ１＝ａｂｃＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦ＆ｄａｔａ２＝１２３”
が送出される。
【００４４】
これにより、ＷＥＢサーバ８の図示されないＣＧＩプログラムのバッファオーバフロー脆弱性のチェックが行われる。
【００４５】
データの文字数を長くする例のほか、特殊コードを挿入するようにして検証用データを生成してもよいことは勿論である。以上本発明を上記実施例に即して説明したが、本発明は、ＷＥＢサーバに搭載されるＣＧＩプログラムのバッファオーバフロー脆弱性にのみ限定されるものでなく、ＩＭＡＰ４プロトコルを用いて受信メールを管理するメールサーバ等のバッファオーバフロー脆弱性のほか、各種サーバの脆弱性、セキュリティホールの自動検証に適用可能であることは、勿論である。
【００４６】
【発明の効果】
以上説明したように、本発明によれば、ＣＧＩプログラムの生産性を向上することができる、という効果を奏する。
【００４７】
その理由は、本発明においては、検証するＣＧＩプログラムをＷＥＢサーバに搭載しての検証時に、正常な動作を検証している時に、バッファオーバフロー脆弱性を検証するためのデータを採取しておき、担当者が端末からバッファオーバフロー脆弱性検証モードの指示と、バッファオーバフロー脆弱性検証データを指定するだけで、バッファオーバフロー脆弱性の検証が行われるためである。
【００４８】
このため、本発明によれば、ＣＧＩプログラムの入力データ仕様を詳細に理解することは不要とされ、また、ＷＥＢサーバに接続されたクライアント端末から人手あるいは検証用プログラムを作成して、検証を行うことが不要とされ、作業工数を削減することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態の構成を示す図である。
【図２】本発明の一実施形態の動作を説明するための流れ図である。
【符号の説明】
１  ＣＧＩバッファオーバフロー脆弱性検証装置
２  クライアントデータ入出力部
３  サーバデータ入出力部
４  データ処理部
５  データベース
６  制御部
７  ＷＥＢクライアント
８  ＷＥＢサーバ
９  ＣＧＩプログラム
１０  操作端末
【図１】
2004302584.tif 000003
【図２】
2004302584.tif 000004