(57)【要約】【課題】  検査時に毎回異なる値の入力を要するパラメータをマクロとして記述可能とする。また、検査時に同じ検査文字列を入力しなければならないパラメータ群を指定可能とする。【解決手段】  検査装置１０１は、Ｗｅｂアクセス手段１０２、マクロ実行手段１０３、セッション回復手段１０４、検査制御手段１０５及び検査手段１０６ａ等を備える。検査手段１０６ａは、ウェブアプリケーションへの入力に使用する入力パラメータをマクロで記述した検査リクエストを生成する。マクロ実行手段１０３は、検査リクエストが検査対象Ｗｅｂサーバ１０８に送信される際、マクロを実行し入力パラメータを所定の値に置換する。Ｗｅｂアクセス手段１０２は、マクロが実行された検査リクエストを検査対象Ｗｅｂサーバ１０８に送信し検査をする。検査手段１０６ａは、検査リクエストを生成する際、検査リクエストに同値パラメータ群を設定することができる。【選択図】        図１
2005250945.tif 000002
【特許請求の範囲】
【請求項１】
ウェブサーバで動作するウェブアプリケーションを検査する検査用データをウェブサーバに送信してウェブアプリケーションを検査するウェブアプリケーション検査装置において、
ウェブアプリケーションの所定の入力項目への入力に用いる入力パラメータと、入力パラメータを所定の値に置換すべき置換指令を示すマクロとを含む検査用データを生成する検査手段と、
前記検査手段の生成した検査用データがウェブサーバに送信される場合に、検査用データに含まれるマクロに基づいて入力パラメータを所定の値に置換するマクロ実行手段と、
前記マクロ実行手段により所定の値に置換された入力パラメータを含む検査用データをウェブサーバに送信するウェブアクセス手段と
を備えたことを特徴とするウェブアプリケーション検査装置。
【請求項２】
ウェブサーバで動作するウェブアプリケーションが提供するサイトの構成を示すサイト構成情報を用いてウェブアプリケーションを検査する検査用データを生成し、生成した検査用データをウェブサーバに送信して前記ウェブアプリケーションを検査するウェブアプリケーション検査装置において、
ウェブアプリケーションの所定の入力項目への入力に用いる入力パラメータと入力パラメータを所定の値に置換すべき置換指令を示すマクロとを含むサイト構成情報を用いて、検査用データを生成する検査手段を備えたことを特徴とするウェブアプリケーション検査装置。
【請求項３】
ウェブサーバで動作するプログラムを示すウェブアプリケーションを検査する検査用データをウェブサーバに送信してウェブアプリケーションを検査するウェブアプリケーション検査装置において、
ウェブサーバと通信を行うウェブアクセス手段と、
ウェブアプリケーションが提供するサイトが有する複数のページについてのページ間のリンク関係を示すリンクＩＤに基づいて前記ウェブアクセス手段を介してウェブサーバにアクセスすることにより、ウェブサーバへのアクセスの履歴を含むセッション管理情報を取得する取得手段と、
前記取得手段の取得したセッション管理情報を用いて検査用データを生成する検査手段とを備え、
前記ウェブアクセス手段は、
前記検査手段の生成した検査用データをウェブサーバに送信することを特徴とするウェブアプリケーション検査装置。
【請求項４】
前記取得手段は、
セッション管理情報を取得するために用いるデータとして、ウェブアプリケーションの所定の入力項目への入力に用いる入力パラメータと入力パラメータを所定の値に置換すべき置換指令を示すマクロとを含むセッション管理情報取得データを生成し、生成したセッション管理情報取得データを前記ウェブアクセス手段を介してウェブサーバに送信し、
前記ウェブアプリケーション検査装置は、さらに、
前記ウェブアクセス手段がセッション管理情報取得データをウェブサーバに送信する場合に、セッション管理情報取得データに含まれるマクロに基づいて入力パラメータを所定の値に置換するマクロ実行手段を備えたことを特徴とする請求項３記載のウェブアプリケーション検査装置。
【請求項５】
前記マクロは、
ウェブアプリケーションの入力項目に応じて、一つの入力パラメータを異なる値に置換すべき置換指令を示すことを特徴とする請求項１または２または４記載のウェブアプリケーション検査装置。
【請求項６】
前記取得手段は、
取得したセッション管理情報を保存する保存手段を備え、
前記検査手段は、
前記保存手段に保存されたセッション管理情報に基づいて検査用データを生成することを特徴とする請求項４記載のウェブアプリケーション検査装置。
【請求項７】
前記取得手段は、
前記ウェブアクセス手段を介してウェブサーバにアクセスした場合に、ウェブサーバからアクセスの応答としてレスポンス情報を返信され、
前記保存手段の保存するセッション管理情報は、
ウェブサーバから返信されたレスポンス情報を含むことを特徴とする請求項６記載のウェブアプリケーション検査装置。
【請求項８】
ウェブサーバで動作するウェブアプリケーションを検査する検査用データをウェブサーバに送信してウェブアプリケーションを検査するウェブアプリケーション検査装置において、
ウェブアプリケーションの所定の入力項目への入力に用いる複数の入力パラメータを同一の値に設定してグループ化した同値パラメータ群を含む検査用データを生成する検査手段を備えたことを特徴とするウェブアプリケーション検査装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、Ｗｅｂアプリケーションのセキュリティホールの有無を診断するシステムに関するものである。例えば、Ｗｅｂアプリケーションを検査するウェブアプリケーション検査装置に関する。
【背景技術】
【０００２】
Ｗｅｂアプリケーションとは、Ｗｅｂサーバ上で動作し、Ｍｉｃｒｏｓｏｆｔ社のＩｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ（登録商標）等のＷｅｂブラウザソフトに表示されるＷｅｂページ上のフォームを操作することで利用可能なサービスである。すなわち、Ｗｅｂアプリケーションとは、Ｗｅｂサーバ上で動作して所定のサービスを提供するソフトウェア、あるいはプログラムを示す。フォーム上で入力されたデータには、データ名が付与され、Ｗｅｂアプリケーションへ送信される。
【０００３】
図１３は、従来の検査装置からＷｅｂサーバへ送信される情報の内容を示す図である。入力された各データの名前は、ＨＴＭＬソースを示す図１３（ｂ）にあるように、各フォーム部品を表すタグのｎａｍｅアトリビュートによって決定される。このようにフォームから入力されるデータのことを、以後「パラメータ」（入力パラメータ）と呼ぶことにする。
【０００４】
パラメータをＷｅｂアプリケーションに送信するために、大きく二種類の方法がある。一つはリクエストＵＲＬの一部として送信する方法（図１３（ｃ））であり、もうひとつはＨＴＴＰリクエストのボディ部として送信する方法である（図１３（ｄ））。どちらの方式で送信するかはそのパラメータの入力元となるページのＨＴＭＬの内容によって指定される。
【０００５】
パラメータ以外にも、ブラウザからＷｅｂアプリケーションへ送信されるデータが幾つか存在する。代表的なものとしては、Ｃｏｏｋｉｅと呼ばれるデータであるが、他にもＨＴＴＰリクエスト中のＲｅｆｅｒｅｒヘッダやＵｓｅｒ−Ａｇｅｎｔヘッダ等を入力として使用するＷｅｂアプリケーションもある。
【０００６】
Ｗｅｂアプリケーションの脆弱性診断は、上記パラメータやＣｏｏｋｉｅ等Ｗｅｂアプリケーションに入力されるデータに擬似攻撃データを含ませたリクエストを送信し、そのリクエストに対するＷｅｂアプリケーションの応答にセキュリティホールの存在を示唆するような痕跡が無いかどうかを解析することで実施される。代表的な製品としては米国Ｓａｎｃｔｕｍ社のＡｐｐＳｃａｎ（登録商標）を挙げることができる（例えば、非特許文献１）。
【０００７】
図１４は、従来のＷｅｂアプリケーション診断システムの動作の概略を示すフローチャートである。図１４を参照しながら、従来のＷｅｂアプリケーションの脆弱性診断システムの動作について述べる。システムはまず、サイト構成情報の収集作業を行う（ステップ１８０２）。これはそのサイトの構造や、各ページに移動するための正しいパラメータやＣｏｏｋｉｅといった情報を収集する処理である。この処理は自動もしくはユーザのブラウザ操作をモニタすることで行われる。
【０００８】
次に収集されたサイト構成情報を元に、検査を実施する（ステップ１８０３）。このとき、システムはステップ１８０２で収集された正しいリクエストを改変し、擬似攻撃リクエストを生成、送信する。擬似攻撃には複数のパターンがあるため、一般に、一つの正しいリクエストに対し、複数の擬似攻撃リクエストが生成される。送信されたリクエストに対するＷｅｂアプリケーションからのレスポンスを解析することで、脆弱性の有無を判断する。最後に、システムは検査の実行結果を出力し、終了する（ステップ１８０４）。
【０００９】
以上のように、従来のＷｅｂアプリケーションの脆弱性診断システムにおいては、収集された正しいリクエストをもとに検査リクエストを生成している。従って、検査のために改変された部分以外は常に元となった正しいリクエストと同じ内容を有している。そのため、以下に述べるようなページの診断を行うことができない。
まず、ユーザ登録を行うような、一度使用されたデータを再び受け付けないページへの検査ができないという問題がある。これは、既にサイト構成情報収集時に使用したユーザ名のような情報を、検査実行時にも再使用してしまうために発生する。
【００１０】
また、ユーザ登録ページでは、利用者の打ち込みミスを検出するために、パスワードやメールアドレスなどを二回入力させることが多い。このような入力項目間にある制約は正しいリクエストの情報からは判別することはできない。そのため、それぞれの項目を個別に検査してしまい、結果としてＷｅｂアプリケーション内でエラー入力として処理されてしまい、正常な登録処理の過程に存在するかもしれない脆弱性を検査することができない。
【非特許文献１】「ＳＡＮＣＴＵＭ  ＡｐｐＳｃａｎTM  ３．５  Ｗｈｉｔｅ  Ｐａｐｅｒ」
【発明の開示】
【発明が解決しようとする課題】
【００１１】
この発明は、検査時に毎回異なる値を入力しなければならないパラメータをマクロとして記述可能とし、検査時に同じ検査文字列を入力しなければならないパラメータ群を指定可能とすることで、上記のような問題点を解消することを可能としたＷｅｂアプリケーション診断システムである。
【課題を解決するための手段】
【００１２】
本発明のウェブアプリケーション検査装置は、
ウェブサーバで動作するウェブアプリケーションを検査する検査用データをウェブサーバに送信してウェブアプリケーションを検査するウェブアプリケーション検査装置において、
ウェブアプリケーションの所定の入力項目への入力に用いる入力パラメータと、入力パラメータを所定の値に置換すべき置換指令を示すマクロとを含む検査用データを生成する検査手段と、
前記検査手段の生成した検査用データがウェブサーバに送信される場合に、検査用データに含まれるマクロに基づいて入力パラメータを所定の値に置換するマクロ実行手段と、
前記マクロ実行手段により所定の値に置換された入力パラメータを含む検査用データをウェブサーバに送信するウェブアクセス手段と
を備えたことを特徴とする。
【発明の効果】
【００１３】
本発明により、脆弱性の検査時において、毎回異なる値を入力しなければならないパラメータをマクロとして記述することが可能となり、検査処理のエラーを回避することができる。また、脆弱性の検査時において、同じ検査文字列の入力を必要とする一連のパラメータ群を同値な値を有するグループとして指定可能としたので、例えば、ユーザ登録ページなどで、「パスワード入力項目」と「確認用のパスワード再入力項目」の二つの項目に同じパスワードを入力しなければエラーになるような場合を回避して検査を行うことができる。
【発明を実施するための最良の形態】
【００１４】
図１〜図１２を用いて実施の形態を説明する。図１は、実施の形態に係る脆弱性診断システム１０００を示す図である。脆弱性診断システム１０００は、Ｗｅｂサーバの脆弱性を診断する検査装置１０１（ウェブアプリケーション検査装置）がＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）ネットワークを介して検査対象Ｗｅｂサーバ１０８と接続された構成である。
【００１５】
検査装置１０１は、各手段を制御する検査制御手段１０５、Ｗｅｂアクセス手段１０２、マクロ実行手段１０３、セッション回復手段１０４（取得手段）、及び検査手段１０６ａ，１０６ｂ，１０６ｃ等を備える。また、セッション回復手段１０４は、後述するセッション管理情報を保存する保存手段１０４１を備える。
【００１６】
検査装置１０１は、サイト構成情報１０９、検査対象ページ指定情報１１０、マクロ定義情報１１１、同値パラメータ指定情報１１２を入力情報とする。これらの情報については後述する。検査装置１０１は、検査対象Ｗｅｂサーバ１０８上で稼動するＷｅｂアプリケーション（ソフトウェア、あるいはプログラム）の脆弱性を検査する。
【００１７】
図２は、検査手段１０６ａの内部構成を示す図である。検査手段１０６ｂ、１０６ｃ等も同様の構成である。検査手段１０６ａは、検査リクエスト生成手段１０６１及び脆弱性判定手段１０６２を備える。検査リクエスト生成手段１０６１は、リクエスト情報１０６３を入力とし、検査リクエスト情報１０６４（検査用データ）を出力する。脆弱性判定手段１０６２はＷｅｂサーバからのレスポンス１０６５を入力とし、脆弱性の判定結果１０６６を出力する。
【００１８】
図１に示すように、検査装置１０１は、Ｗｅｂアクセス手段１０２、マクロ実行手段１０３、セッション回復手段１０４（取得手段）、検査制御手段１０５及び検査手段１０６ａ，１０６ｂ，１０６ｃ等を備えるが、これらの構成要素の機能はハードウェアで実施されてもよい。また、ソフトウェアで実施されても良い。あるいは、ハードウェアとソフトウェアの両者により実施されても構わない。検査制御手段１０５は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、磁気磁気記憶装置の記憶装置等を備える（図示していない）。他のセッション回復手段１０４等も同様である。また、Ｗｅｂアクセス手段１０２は、通信機能を備える。さらに、検査装置１０１は、サイト構成情報１０９等を入力する入力部（図示していない）を備える。また、検査結果を出力する出力部（図示していない）を備える。
【００１９】
次に、図３を用いてサイト構成情報１０９を説明する。図３は、図１で示したサイト構成情報１０９の一例を示した図である。サイト構成情報１０９は検査対象サイトの構成を表した情報であり、サイト内の各ページにアクセスするためのＵＲＬ１００２及びＨＴＴＰリクエストのボディ部に与えなければならないデータ（以下「ＰＯＳＴデータ１００３」という）が記述されている。ＵＲＬ１００２とＰＯＳＴデータ１００３を併せて、以下「リンク情報１００４」と呼ぶことにする。各リンク情報１００４には「リンクＩＤ１００１」と呼ばれるサイト構成情報ファイル内で一意のＩＤが割り振られている。さらに、リンクＩＤ１００１は、そのページへのリンク元となったページのＩＤにハイフン（−）の後通し番号を付加する事で生成される。例えば、リンクＩＤ「１−１」をリンク元とするページには、リンクＩＤ「１−１−１」、あるいは「１−１−２」、というリンクＩＤ１００１が与えられる。リンクＩＤ１００１、ＵＲＬ１００２、ＰＯＳＴデータ１００３は、図３に示すように、パイプ記号（｜）で区切られて、一行に記述される。
【００２０】
次に、図４を用いて検査対象ページ指定情報１１０を説明する。図４は、図１で示した検査対象ページ指定情報１１０の一例を示す図である。検査対象ページ指定情報１１０は、サイト構成情報１０９内に記載されているページの中で、検査装置１０１によって脆弱性検査を行う対象を指定するためのファイルである。検査対象ページのリンクＩＤ１００１をカンマもしくは改行で区切って並べて記述する。
【００２１】
次に、図５は図１で示したマクロ定義情報１１１の一例を示す図である。また、図６は、サイト構成情報１０９にマクロを挿入したマクロ挿入サイト構成情報１３００の例を示す図である。図中バッククオート（｀）で囲まれた部分が、マクロが挿入されたマクロ挿入部１３０１である。「マクロ」とは、インタプリタ言語で記述されたプログラムコードである。マクロの展開はマクロ実行手段１０３で上記マクロ部分を実行し、その戻り値（文字列）でマクロ部分を置換することで行われる。マクロ定義情報１１１に、あらかじめマクロ内で使用する関数を定義しておくことで、サイト構成情報内のマクロからその関数を呼び出すことができる。
【００２２】
図７は、図１で示した同値パラメータ指定情報１１２の一例を示す図である。同値パラメータ指定情報１１２は、パラメータを含まないＵＲＬ１４０１と、同値パラメータ指定１４０２で構成されている。「同値パラメータ指定」とは、同値でなければならない２個以上のパラメータ群を等号記号（＝）で区切って並べたものである。同一のＵＲＬ１４０１に対し、複数の同値パラメータ指定を行う場合には、図中にあるように、各同値パラメータ指定をパイプ記号（｜）で連結して記述する。
【００２３】
図８は、検査処理の過程を示すフローチャートである。図１、図８を参照しながら検査装置１０１の検査処理の動作について説明する。フローチャートの各ステップを、例えば、ステップ６０１、あるいはＳ６０１と呼ぶ。検査装置１０１の検査制御手段１０５は、Ｗｅｂアクセス手段１０２、マクロ実行手段１０３、セッション回復手段１０４、検査手段１０６ａ等を制御して検査おこなう。
【００２４】
検査装置１０１は、起動時にサイト構成情報１０９、検査対象ページ指定情報１１０、マクロ定義情報１１１及び同値パラメータ指定情報１１２と呼ばれるファイルを入力として受け取る。ただし、検査対象ページ指定情報１１０、マクロ定義情報１１１、同値パラメータ指定情報１１２は省略可能である。検査対象ページ指定情報１１０を省略した場合、サイト構成情報１０９内に記述された全てのページが検査対象とみなされる。
【００２５】
検査制御手段１０５は、検査対象ページのリンクＩＤ１００１をサイト構成情報１０９から順番に取り出し（Ｓ６０１）、図８に示す検査処理を実行する。
【００２６】
まず、検査制御手段１０５は、検査対象ページのリンクＩＤ１００１（変数ｉｄ）からサイト構成情報１０９内を検索して、対応するリンク情報１００４を取り出す（ステップ６０２）。次に、検査制御手段１０５は、このリンクに対して順番に検査手段１０６ａ，１０６ｂ等を用いて検査を行っていく。ステップ６０３で、検査制御手段１０５は、このリンクに対してまだ実行していない検査手段を検索し、その検査手段への参照を変数ｄに格納する。もしｄが空値であったならば（ステップ６０４）、そのリンクに対する検査は全て終了したことになるので検査処理を終了する（ステップ６１６）。
【００２７】
ｄが有効な検査手段への参照であったならば（実行していない検査手段が存在する場合には）、Ｓ６０５以降に進む。ここでは、実行していない検査手段として検査手段１０６ａが存在したことを想定する。Ｓ６０５において、検査制御手段１０５は、「同値パラメータ指定情報１１２」内を検索し、検査対象リンクに同値パラメータ群が指定されているかどうかをチェックする（ステップ６０５）。「同値パラメータ群」とは、Ｗｅｂサイトの仕様上、必ず同じ値が設定されていなければエラーとして処理されてしまうパラメータのグループを意味する。例えば、ユーザ登録ページなどで、「パスワード入力項目」と「確認用のパスワード再入力項目」の二つの項目に同じパスワードを入力しないとエラーになる場合が該当する。このようなページを検査する場合には、「パスワード」及び「確認用パスワード」に対応するパラメータ名を、「同値パラメータ群」としてあらかじめ指定おくことでエラーを回避できる。例えば、図７に示す「ｒｅｇｉｓｔｅｒ．ａｓｐ＝ｐａｓｓ＝ｐａｓｓ２」である。ステップ６０５のチェックの結果、同値パラメータ群が存在していた場合には検査制御手段１０５は、ｄ（検査手段１０６ａ）にその同値パラメータ群を登録しておく（ステップ６０６）。
【００２８】
以降、ｄ（検査手段１０６ａ）で実施する検査が全て終了するまでステップ６０７〜６１５をループする。ｄ（検査手段１０６ａ）の検査が終了すると、検査処理はステップ６０３に戻り、別の検査手段（例えば、検査手段１０６ｂ）に対して同様な処理を実施する。
【００２９】
次に、ステップ６０７〜ステップ６１５について以下に説明する。まず、ステップ６０７において、検査制御手段１０５は、検査手段ｄ（検査手段１０６ａ）で実施する検査が全て終了したかどうかを確認する。もし検査手段１０６ａにおいて行うべき検査がまだ残っていた場合にはステップ６０８に進み、セッション回復が行われる。「セッション回復」とは、サイトのトップページから検査対象ページまで、サイトの構成どおりにＷｅｂアクセスを行うことで、Ｃｏｏｋｉｅ等のセッション管理情報を取得する処理である。この処理の詳細については後述（図９）する。
【００３０】
ステップ６０８において、セッション回復手段１０４によるセッション回復を実施後、ステップ６０９で、ｌｉｎｋで示されるページにアクセスするためのリクエスト情報が生成され、ステップ６１０でそのリクエスト情報がｄ（検査手段１０６ａ）に渡される。ｄ（検査手段１０６ａ）はこのリクエスト情報をもとに、内部の検査リクエスト生成手段１０６１を用いて検査リクエスト（検査用データ）を生成する（ステップ６１１）。検査リクエスト生成手段１０６１は、各検査手段毎（検査手段１０６ａ，１０６ｂ，１０６ｃ等ごと）に異なる。これにより、多様な検査項目を実現することが可能である。次に、ｄ（検査手段１０６ａ）によって生成された検査リクエストをもとに、Ｗｅｂアクセスが行われる（ステップ６１２）。Ｗｅｂサイトからの応答（レスポンス）は、再びｄ（検査手段１０６ａ）に渡され、ｄ（検査手段１０６ａ）内部の脆弱性判定手段１０６２で解析される。解析の結果、脆弱性があると判断された場合には（ステップ６１４）、脆弱性判定手段１０６２は、脆弱性検出メッセージを出力する（ステップ６１５）。その後、再びステップ６０７に処理が戻り、ｄ（検査手段１０６ａ）による検査が全て終了するまでこのループは継続する。
【００３１】
次に図９を用いて、セッション回復処理について説明する。セッション回復処理は、検査制御手段１０５の制御によりセッション回復手段１０４が行う。図９は、ステップ６０８のセッション回復処理を示すフローチャートである。セッション回復処理は、はじめに、ステップ５０１で対象リンクＩＤをパラメータとして受け取る（変数ｉｄ）。次に、ステップ５０２で以前のセッション回復で取得されたセッション管理情報をクリアする。リンクＩＤは、前述したとおりページ間のリンク元から派生して生成されている。このため、与えられたリンクＩＤのリンク元のＩＤを簡単に調べる事が可能である。もし、リンクＩＤにハイフン（−）が含まれていなかったならば、そのページはどこからもリンクされていない、すなわちサイトのトップであることを意味する。サイトのトップを示すリンクＩＤであったならば（ステップ５０３）、セッション回復処理は行われず、すぐに終了する。
【００３２】
もし、リンクＩＤにリンク元が存在していたならば、そのリンク元のＩＤを変数ｉｄの文字列処理で抽出し、変数ｐａｒｅｎｔ＿ｉｄに代入する（ステップ５０４）。次にｐａｒｅｎｔ＿ｉｄに対して再帰的にセッション回復処理を呼び出す（ステップ５０５）。このセッション回復処理の再帰呼び出しが完了すると、ｐａｒｅｎｔ＿ｉｄに対してセッション回復が終了したことになる。
【００３３】
次に、ステップ５０６〜５０９でｐａｒｅｎｔ＿ｉｄそのものにアクセスすることで最初に与えられたｉｄに対するセッション回復が終了する。そのために、ステップ５０６でｐａｒｅｎｔ＿ｉｄに対応するリンク情報をサイト構成情報から検索する（変数ｌｉｎｋ）。次にｌｉｎｋに対応するリクエスト情報生成処理を行い（ステップ５０７）、そのリクエスト情報（セッション管理情報取得データ）をもとに、Ｗｅｂアクセス手段１０２を介してＷｅｂアクセスを行う（ステップ５０８）。Ｗｅｂサイトからのレスポンスおよびｌｉｎｋを入力としてセッション管理情報保存処理がステップ５０９で呼び出され（図１０のＳ１５０１）、Ｃｏｏｋｉｅ等のセッション管理情報が保存手段１０４１に保存される。以上でセッション回復処理は終了する。
【００３４】
次に、図１０を用いてセッション管理情報の保存処理を説明する。図１０はセッション管理情報の保存処理を示すフローチャートである。ステップ５０９で呼び出されるセッション管理情報保存は、図１０のように実施される。この処理は、Ｗｅｂサイトから返された「レスポンス情報」及びレスポンスの元となった「リンク情報」をもとに行われる。まず、前回のセッション管理情報保存処理で保存（保存手段１０４１に保存）された「Ｒｅｆｅｒｅｒ情報」及び「ｈｉｄｄｅｎパラメータ情報」をクリアする（ステップ１５０２）。次に「リンク情報」に含まれるＵＲＬを「Ｒｅｆｅｒｅｒ情報」として保存手段１０４１に保存する（ステップ１５０３）。次に、「レスポンス情報」のヘッダ情報からヘッダ名“Ｓｅｔ−Ｃｏｏｋｉｅ”で参照される情報を抽出し、それを「Ｃｏｏｋｉｅ情報」として保存手段１０４１に保存する（ステップ１５０４〜１５０５）。次に、レスポンス中に含まれるＨＴＭＬを解析しｈｉｄｄｅｎタグ（＜ｉｎｐｕｔ  ｔｙｐｅ＝ｈｉｄｄｅｎ＞タグ）を見つけ出し、そのｎａｍｅアトリビュートとｖａｌｕｅアトリビュートを保存手段１０４１に保存する（ステップ１５０６〜１５０７）。以上でセッション管理情報保存処理は終了する。
【００３５】
次に、図１１を用いてリクエスト情報生成処理を説明する。図１１は、リクエスト情報生成処理の過程を示すフローチャートである。リクエスト情報生成処理は、図８（検査処理）のステップ６０９と、図９（セッション回復処理）のステップ５０７とで実施される。ステップ６０９では検査制御手段１０５が生成する。ステップ５０７では、セッション回復手段１０４が生成する。検査処理におけるリクエスト情報生成処理（Ｓ６０９）は検査用リクエストを生成するためである。セッション回復処理のリクエスト情報生成処理（Ｓ５０７）はセッション管理情報を取得するためである。
【００３６】
リクエスト情報生成処理は、リンク情報をパラメータとして呼び出される（変数ｌｉｎｋ）。次に、最後にセッション管理情報保存処理を行った時に取得されたｒｅｆｅｒｅｒ情報、ｃｏｏｋｉｅ情報及びｈｉｄｄｅｎパラメータ群を取得する（ステップ１６０２〜１６０４）。次に、取得されたｈｉｄｄｅｎパラメータ群を用いてｌｉｎｋのパラメータを置換する（ステップ１６０５）。例えばｌｉｎｋ中に「ｓｅｓｓｉｏｎｉｄ」という名前のパラメータが存在し、その値が「１２３４ａｂｃｄ」であったとする。もし、ｈｉｄｄｅｎパラメータ群の中に「ｓｅｓｓｉｏｎｉｄ」という名前のパラメータが存在し、その値が「５６７８ｗｘｙｚ」であったならば、ｌｉｎｋの「ｓｅｓｓｉｏｎｉｄパラメータ」が「５６７８ｗｘｙｚ」に置換される。これにより、ｈｉｄｄｅｎパラメータを用いてセッション管理を行っているＷｅｂサイトでも正しくＷｅｂアクセスが行えるようになる。最後にｒｅｆｅｒｅｒ情報、ｃｏｏｋｉｅ情報及び修正されたｌｉｎｋ情報をもとにリクエスト情報が生成され、呼び出し元に返される（ステップ１６０６〜１６０７）。
【００３７】
次に、図１２を用いてＷｅｂアクセス処理を説明する。図１２は、Ｗｅｂアクセス処理を示すフローチャートである。Ｗｅｂアクセス処理は、検査処理（図８ステップ６１２）及びセッション回復処理（図９ステップ５０８）で実施される。検査処理の場合は、検査用リクエストを検査対象Ｗｅｂサーバ１０８に送信するためである。セッション回復処理では、セッション管理情報を取得するためである。Ｗｅｂアクセス処理はリクエスト情報をパラメータとして呼び出される（ステップ３０１）。次に、リクエスト情報のリンク情報を取り出し（ステップ３０２）、その中のマクロを展開する。すなわち、図１１で説明したように、リクエスト情報はｌｉｎｋ情報をもとに生成されるが、ｌｉｎｋ情報とは、例えば、図６のリンクＩＤ以降の部分である。よって、マクロを含んでいる。
【００３８】
マクロを用いることで、特定のパラメータに対し、常に異なる値を設定することが可能となる。たとえば、既にサイト構成情報収集時に使用したユーザ名のようなパラメータを、検査実行時にも再使用してしまうために生じるユーザ登出来ないという事態を回避することができる。マクロの設定において、パラメータの入力項目（例えばユーザ名入力）に応じて、特定のパラメータに対し、異なる値を設定する。ユーザ名に異なる値を設定することで、過去の入力との重複を避け、検査を実施することができる。
【００３９】
「マクロ」とは、インタプリタ言語で記述されたプログラムコードである。上述のように、マクロは、サイト構成情報中に、図１３の「マクロ挿入部１３０１」のように、バッククオート（｀）で囲むことで記述できる。マクロの展開は、マクロ実行手段１０３上で上記のマクロ部分を実行し、その戻り値（文字列）でマクロ部分を置換することで行われる。図５に示したマクロ定義情報１１１のように、あらかじめマクロ内で使用する関数を定義しておくことで、例えばマクロ挿入サイト構成情報１３００内のマクロから、その関数を呼び出すことができる。本実施形態では、マクロ実行手段１０３としてＰｅｒｌインタプリタを用いていることを想定しているが、その他のインタプリタ言語を使用することも可能である。
【００４０】
マクロ展開後、ステップ３０４でリンク情報、Ｃｏｏｋｉｅ情報、Ｒｅｆｅｒｅｒ情報、及びその他のヘッダ情報から実際に送信されるＨＴＴＰリクエストデータが生成され、ステップ３０５でＷｅｂサイト（検査対象Ｗｅｂサーバ１０８）に送信される。その結果、Ｗｅｂサイトから受信したＨＴＴＰレスポンスデータを本処理の返り値とし、処理を終了する（ステップ３０６〜３０７）。
【００４１】
以上、実施の形態では、セッション回復処理（Ｓ６０８）は検査リクエスト生成（Ｓ６１１）前に必ず行われていたが、これを一回の検査処理につき一度しか行わないようにしても構わない。その場合は、検査時間の短縮を図ることができる。
【００４２】
本実施の形態に係る検査装置１０１はマクロを利用するので、セッション回復処理（Ｓ５０８）及び検査処理（Ｓ６１２）のＷｅｂアクセスにおいて、これにより、例えば、ユーザ登録ページのように、一度使用したユーザ名を再び利用するとエラーになるようなページに対しても、検査を行うことができる。
【００４３】
また、サイト構成情報内のリンク情報にマクロを記述可能とすることにより、過去の入力との重複を許さないようなページを有するＷｅｂサイトも検査をおこなうことができる。
【００４４】
検査装置１０１によるセッション回復処理により、セッション管理を行っているようなＷｅｂサイトでも検査可能になるという効果がある。また、セッション回復処理ではリンクＩＤを用いるので、効率よくセッション回復処理を行うことができる。
【００４５】
また、検査装置１０１によるセッション回復処理では、マクロが実行されるので特定のパラメータに対し、常に異なる値を使用することが可能となる。
【００４６】
検査装置１０１では、同値パラメータ群を指定可能にすることにより、同じ値を入力しなければならないページを有するＷｅｂサイトも検査することができる。
【図面の簡単な説明】
【００４７】
【図１】診断システムを示す図である。
【図２】検査手段の構成を示す図である。
【図３】サイト構成情報の例を示す図である。
【図４】検査対象ページ指定情報の例を示す図である。
【図５】マクロ定義情報の例を示す図である。
【図６】マクロを利用したサイト構成情報の例を示す図である。
【図７】同値パラメータ指定情報の例を示す図である。
【図８】診断システムの検査処理の動作を示す図である。
【図９】セッション回復処理の動作を示す図である。
【図１０】セッション管理情報の保存処理の動作を示す図である。
【図１１】リクエスト情報の生成処理の動作を示す図である。
【図１２】Ｗｅｂアクセス処理の動作を示す図である。
【図１３】従来の、Ｗｅｂサーバへ送信される情報の内容を示す図である。
【図１４】従来のＷｅｂアプリケーション診断システムの動作の概略を示すフローチャートである。
【符号の説明】
【００４８】
１０１  検査装置、１０２  Ｗｅｂアクセス手段、１０３  マクロ実行手段、１０４  セッション回復手段、１０５  検査制御手段、１０６  検査手段、１０７  ＴＣＰ／ＩＰネットワーク、１０８  検査対象Ｗｅｂサーバ、１０９  サイト構成情報、１１０  検査対象ページ指定情報、１１１  マクロ定義情報、１１２  同値パラメータ指定情報、２０１  検査手段、２０２  検査リクエスト生成機能、２０３  脆弱性判定機能、２０４  リクエストテンプレート情報、２０５  検査リクエスト情報、２０６  レスポンス、２０７  判定結果、１０００  脆弱性診断システム、１００１  リンクＩＤ、１００２  ＵＲＬ、１００３  ＰＯＳＴデータ、１００４  リンク情報、１０４１  保存手段、１００１  リンクＩＤ、１０６１  検査リクエスト生成手段、１０６２  脆弱性判定手段、１０６３  リクエスト情報、１０６４  検査リクエスト情報、１０６５  レスポンス、１０６６  判定結果、１３００  マクロ挿入サイト構成情報、１３０１  マクロ挿入部、１４０１  ＵＲＬ、１４０２  同値パラメータ指定。
【図１】
2005250945.tif 000003
【図２】
2005250945.tif 000004
【図３】
2005250945.tif 000005
【図４】
2005250945.tif 000006
【図５】
2005250945.tif 000007
【図６】
2005250945.tif 000008
【図７】
2005250945.tif 000009
【図８】
2005250945.tif 000010
【図９】
2005250945.tif 000011
【図１０】
2005250945.tif 000012
【図１１】
2005250945.tif 000013
【図１２】
2005250945.tif 000014
【図１３】
2005250945.tif 000015
【図１４】
2005250945.tif 000016