(57)【要約】【課題】診断の不要なパラメータを選別可能な、使い勝手の良いＷｅｂアプリケーション診断装置を提供する。【解決手段】Ｗｅｂアプリケーション診断装置１００ａは、診断用ＨＴＴＰリクエストの雛形である雛形ＨＴＴＰリクエストからパラメータを抽出するパラメータ抽出部１４０と、複数のパラメータについて、各パラメータが擬似攻撃データを設定するべきパラメータである診断対象パラメータかどうかを示すパラメータ判定条件情報を記憶する診断対象パラメータ判定条件蓄積部１６０と、前記パラメータ判定条件情報に基づいて、パラメータ抽出部１４０によって抽出されたパラメータが診断対象パラメータに該当するかどうかを判定する診断対象パラメータ絞込み１３０とを備えた。【選択図】図１
2010277288.tif 000002
【特許請求の範囲】
【請求項１】
セキュリティ上の欠陥があるかどうかの診断対象となる診断対象Ｗｅｂアプリケーションプログラムを実行するサーバ装置に、前記診断対象Ｗｅｂアプリケーションプログラムを試験として攻撃する擬似攻撃データが設定されたパラメータを含む診断用ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）リクエストを送信し、前記サーバ装置から前記診断用ＨＴＴＰリクエストへの応答であるＨＴＴＰレスポンスを受信し、受信された前記ＨＴＴＰレスポンスを解析することにより前記診断対象Ｗｅｂアプリケーションプログラムの前記欠陥を診断するＷｅｂアプリケーション診断装置において、
前記診断用ＨＴＴＰリクエストの雛形である雛形ＨＴＴＰリクエストからパラメータを抽出するパラメータ抽出部と、
複数のパラメータについて、各パラメータが前記擬似攻撃データを設定するべきパラメータである診断対象パラメータかどうかを示すパラメータ判定条件情報を記憶するパラメータ判定条件情報記憶部と、
前記パラメータ判定条件情報記憶部に記憶された前記パラメータ判定条件情報に基づいて、前記パラメータ抽出部によって抽出されたパラメータが前記診断対象パラメータに該当するかどうかを判定する診断対象パラメータ判定部と
を備えたことを特徴とするＷｅｂアプリケーション診断装置。
【請求項２】
前記診断対象Ｗｅｂアプリケーションプログラムは、
所定のフレームワークが使用され、
前記パラメータ判定条件情報記憶部に記憶された前記パラメータ判定条件情報は、
複数のフレームワークを対象として、フレームワークで使用されるフレームワーク用パラメータが前記診断対象パラメータに該当するかどうかの判定条件が記載されており、
前記診断対象パラメータ判定部は、
前記パラメータ判定条件情報記憶部に記憶された前記パラメータ判定条件情報に基づいて、前記パラメータ抽出部によって抽出されたパラメータの中から前記診断対象パラメータに該当しないフレームワーク用パラメータを選別することを特徴とする請求項１記載のＷｅｂアプリケーション診断装置。
【請求項３】
前記Ｗｅｂアプリケーション診断装置は、さらに、
複数のフレームワークの各フレームワークについて、フレームワークのフォーマット定義を示すフォーマット定義情報を記憶するフォーマット定義情報記憶部と、
擬似攻撃生成部と、
パラメータ再構築部と
を備え、
前記パラメータ抽出部は、
前記雛形ＨＴＴＰリクエスト内に標準フォーマットではない独自フォーマットでパラメータが格納されている場合には、前記フォーマット定義情報記憶部に記憶された前記フォーマット定義情報を参照することにより、前記フォーマット定義情報の中から前記独自フォーマットに該当するフォーマットを特定し、特定されたフォーマットに基づきパラメータを抽出し、
前記擬似攻撃生成部は、
前記診断対象パラメータ判定部によって前記診断対象パラメータに該当すると判定されたパラメータに擬似攻撃データを設定し、
前記パラメータ再構築部は、
前記擬似攻撃生成部によって擬似攻撃データの設定されたパラメータを前記雛形ＨＴＴＰリクエストに格納することを特徴とする請求項２記載のＷｅｂアプリケーション診断装置。
【請求項４】
セキュリティ上の欠陥があるかどうかの診断対象となる診断対象Ｗｅｂアプリケーションプログラムを実行するサーバ装置に、前記診断対象Ｗｅｂアプリケーションプログラムを試験として攻撃する擬似攻撃データが設定されたパラメータを含む診断用ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）リクエストを送信し、前記サーバ装置から前記診断用ＨＴＴＰリクエストへの応答であるＨＴＴＰレスポンスを受信し、受信された前記ＨＴＴＰレスポンスを解析することにより前記診断対象Ｗｅｂアプリケーションプログラムの前記欠陥を診断するコンピュータであるＷｅｂアプリケーション診断装置を、
（１）前記診断用ＨＴＴＰリクエストの雛形である雛形ＨＴＴＰリクエストからパラメータを抽出するパラメータ抽出部と、
（２）複数のパラメータについて、各パラメータが前記擬似攻撃データを設定するべきパラメータである診断対象パラメータかどうかを示すパラメータ判定条件情報を記憶するパラメータ判定条件情報記憶部、
（３）前記パラメータ判定条件情報記憶部に記憶された前記パラメータ判定条件情報に基づいて、前記パラメータ抽出部によって抽出されたパラメータが前記診断対象パラメータに該当するかどうかを判定する診断対象パラメータ判定部、
として機能させるためのＷｅｂアプリケーション診断プログラム。
【請求項５】
前記診断対象Ｗｅｂアプリケーションプログラムは、
所定のフレームワークが使用され、
前記パラメータ判定条件情報記憶部に記憶された前記パラメータ判定条件情報は、
複数のフレームワークを対象として、フレームワークで使用されるフレームワーク用パラメータが前記診断対象パラメータに該当するかどうかの判定条件が記載されており、
前記診断対象パラメータ判定部は、
前記パラメータ判定条件情報記憶部に記憶された前記パラメータ判定条件情報に基づいて、前記パラメータ抽出部によって抽出されたパラメータの中から前記診断対象パラメータに該当しないフレームワーク用パラメータを選別することを特徴とする請求項４記載のＷｅｂアプリケーション診断プログラム。
【請求項６】
前記Ｗｅｂアプリケーション診断プログラムは、前記コンピュータを、さらに、
複数のフレームワークの各フレームワークについて、フレームワークのフォーマット定義を示すフォーマット定義情報を記憶するフォーマット定義情報記憶部、
擬似攻撃生成部、
パラメータ再構築部、
として機能させると共に、
前記パラメータ抽出部は、
前記雛形ＨＴＴＰリクエスト内に標準フォーマットではない独自フォーマットでパラメータが格納されている場合には、前記フォーマット定義情報記憶部に記憶された前記フォーマット定義情報を参照することにより、前記フォーマット定義情報の中から前記独自フォーマットに該当するフォーマットを特定し、特定されたフォーマットに基づきパラメータを抽出し、
前記擬似攻撃生成部は、
前記診断対象パラメータ判定部によって前記診断対象パラメータに該当すると判定されたパラメータに擬似攻撃データを設定し、
前記パラメータ再構築部は、
前記擬似攻撃生成部によって擬似攻撃データの設定されたパラメータを前記雛形ＨＴＴＰリクエストに格納することを特徴とする請求項５記載のＷｅｂアプリケーション診断プログラム。
【請求項７】
セキュリティ上の欠陥があるかどうかの診断対象となる診断対象Ｗｅｂアプリケーションプログラムを実行するサーバ装置に、前記診断対象Ｗｅｂアプリケーションプログラムを試験として攻撃する擬似攻撃データが設定されたパラメータを含む診断用ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）リクエストを送信し、前記サーバ装置から前記診断用ＨＴＴＰリクエストへの応答であるＨＴＴＰレスポンスを受信し、受信された前記ＨＴＴＰレスポンスを解析することにより前記診断対象Ｗｅｂアプリケーションプログラムの前記欠陥を診断するＷｅｂアプリケーション診断装置が行うＷｅｂアプリケーション診断方法において、
（１）パラメータ抽出部が、前記診断用ＨＴＴＰリクエストの雛形である雛形ＨＴＴＰリクエストからパラメータを抽出し、
（２）パラメータ判定条件情報記憶部が、複数のパラメータについて、各パラメータが前記擬似攻撃データを設定するべきパラメータである診断対象パラメータかどうかを示すパラメータ判定条件情報を記憶し、（３）診断対象パラメータ判定部が、前記パラメータ判定条件情報記憶部に記憶された前記パラメータ判定条件情報に基づいて、前記パラメータ抽出部によって抽出されたパラメータが前記診断対象パラメータに該当するかどうかを判定する
ことを特徴とするＷｅｂアプリケーション診断方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、擬似攻撃データを含んだＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）リクエストを診断対象Ｗｅｂアプリケーションプログラム（以下、Ｗｅｂアプリケーションという）へ送信し、その応答であるＨＴＴＰレスポンスを解析して診断対象Ｗｅｂアプリケーション上のセキュリティホールの有無を判定するＷｅｂアプリケーション診断装置に関する。
【背景技術】
【０００２】
Ｗｅｂ（ウエブ）アプリケーションとは、Ｗｅｂサーバもしくはアプリケーションサーバ上で動作するソフトウェアであり、ＨＴＴＰプロトコルを通じてＷｅｂブラウザから呼び出され、処理結果をＨＴＭＬとしてブラウザに返すことでユーザにサービスを提供するものである。Ｗｅｂアプリケーションの呼出しは、ＵＲＬの他に、ユーザがフォームへ入力したデータ等呼び出し時のパラメータをＨＴＴＰリクエストに格納してＷｅｂサーバに送信することで行われる。
【０００３】
近年、パラメータに不正なデータを格納してＷｅｂアプリケーションを呼び出すことで、セキュリティ上の欠陥（セキュリティホールもしくは脆弱性）を悪用する攻撃が増加してきている。このようなＷｅｂアプリケーションのセキュリティホールに対する対策技術の一つとして、Ｗｅｂアプリケーションに対して擬似攻撃を行うことで、悪用される前にセキュリティホールを見つけるＷｅｂアプリケーション診断技術が存在する。製品としては、ＩＢＭ社ＡｐｐＳｃａｎ（ＡｐｐＳｃａｎは登録商標）、ヒューレット・パッカード社ＷｅｂＩｎｓｐｅｃｔ等が知られている。Ｗｅｂアプリケーション診断技術においては、各パラメータに対し、攻撃を模擬した不正データを設定したＨＴＴＰリクエストを送信し、その応答からセキュリティホールの有無を判別する。その際、Ｗｅｂアプリケーション入口でのパラメータチェックを回避するため、様々な文字種や形式のバリエーションが用意された不正データを用いて各パラメータの検査を行うのが一般的である。検査の効率を上げるため、事前に数パターンのデータを送信し、パラメータチェックに合格する文字セット等を特定して、パラメータチェックに合格する不正データのみを送信する方法が知られている（例えば特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１３５０２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
近年、Ｗｅｂアプリケーションの開発を効率化するために、Ｗｅｂアプリケーションフレームワークを使用した開発が主流となっている。フレームワークを利用した開発では、セッション管理やページ遷移の制御といったＷｅｂアプリケーション共通の機能はフレームワークが行うため、開発者は本来行いたい処理の実装に専念できるというメリットがある。このようなフレームワークを用いたＷｅｂアプリケーションでは、ブラウザから送信されるＨＴＴＰリクエストに、本来Ｗｅｂアプリケーションが必要とするパラメータの他に、フレームワークが動作するために必要なパラメータが大量に付加される場合がある。例えば、図１１はＤＷＲ（Ｄｉｒｅｃｔ  Ｗｅｂ  Ｒｅｍｏｔｉｎｇ）と呼ばれるフレームワーク上で生成されたＷｅｂページからのＨＴＴＰリクエストで送信されるパラメータ（計９個）である。ところが、これらの中で実際に開発者の実装したプログラムに渡されるのはｃ０−ｐａｒａｍ中の“Ｊｏｅ”のみであり、残りは全てフレームワーク内で処理される。
【０００６】
従来はこれらのパラメータ全てを診断対象とし、各パラメータに擬似攻撃を加えて診断を行っていた。しかし、フレームワークは提供するベンダやセキュリティコミュニティによって十分検証されており、フレームワークが消費するパラメータに関する診断は単に診断時間を浪費するのみであった。
【０００７】
また、近年ではＡＪＡＸ（Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｊａｖａｓｃｒｉｐｔ  Ａｎｄ  ＸＭＬ）（Ｊａｖａｓｃｒｉｐｔは登録商標）と呼ばれるＪａｖａＳｃｒｉｐｔ（登録商標）からＷｅｂアプリケーションへの非同期通信による画面更新技術を利用したＷｅｂアプリケーションも普及しつつある。ＡＪＡＸではＪａｖａＳｃｒｉｐｔ（登録商標）からＷｅｂアプリケーションへと送信されるパラメータの様式が定まっておらず、従来のＷｅｂ診断技術では独自のフォーマットを使用してパラメータを送信するＷｅｂアプリケーション向けの擬似攻撃ＨＴＴＰリクエストを生成することができなかった。
【０００８】
この発明は、診断の不要なパラメータを選別すると共に、使い勝手の良いＷｅｂアプリケーション診断装置の提供を目的とする。
【課題を解決するための手段】
【０００９】
この発明のＷｅｂアプリケーション診断装置は、
セキュリティ上の欠陥があるかどうかの診断対象となる診断対象Ｗｅｂアプリケーションプログラムを実行するサーバ装置に、前記診断対象Ｗｅｂアプリケーションプログラムを試験として攻撃する擬似攻撃データが設定されたパラメータを含む診断用ＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）リクエストを送信し、前記サーバ装置から前記診断用ＨＴＴＰリクエストへの応答であるＨＴＴＰレスポンスを受信し、受信された前記ＨＴＴＰレスポンスを解析することにより前記診断対象Ｗｅｂアプリケーションプログラムの前記欠陥を診断するＷｅｂアプリケーション診断装置において、
前記診断用ＨＴＴＰリクエストの雛形である雛形ＨＴＴＰリクエストからパラメータを抽出するパラメータ抽出部と、
複数のパラメータについて、各パラメータが前記擬似攻撃データを設定するべきパラメータである診断対象パラメータかどうかを示すパラメータ判定条件情報を記憶するパラメータ判定条件情報記憶部と、
前記パラメータ判定条件情報記憶部に記憶された前記パラメータ判定条件情報に基づいて、前記パラメータ抽出部によって抽出されたパラメータが前記診断対象パラメータに該当するかどうかを判定する診断対象パラメータ判定部と
を備えたことを特徴とする。
【発明の効果】
【００１０】
この発明により、診断の不要なパラメータを選別可能なＷｅｂアプリケーション診断装置を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１におけるＷｅｂアプリケーション診断装置１００ａの構成図。
【図２】実施の形態１におけるＷｅｂアプリケーション診断装置１００ａの全体の処理フロー。
【図３】実施の形態１におけるパラメータ構成ルール蓄積部１５０のフォーマット定義情報の例。
【図４】実施の形態１における独自フォーマット時のパラメータ抽出の処理フロー。
【図５】実施の形態１における診断対象パラメータ判定条件蓄積部１６０の格納データの例。
【図６】実施の形態１における診断対象パラメータの絞込みの処理フロー。
【図７】実施の形態２におけるＷｅｂアプリケーション診断装置１００ｂの構成図。
【図８】実施の形態２におけるＷｅｂアプリケーション診断装置１００ｂの全体の処理フロー。
【図９】実施の形態３におけるＷｅｂアプリケーション診断装置１００ａ、１００ｂの外観の例。
【図１０】実施の形態３におけるＷｅｂアプリケーション診断装置１００ａ、１００ｂのハードウェア資源の一例。
【図１１】従来技術を示す図。
【発明を実施するための形態】
【００１２】
実施の形態１．
図１は、実施の形態１におけるＷｅｂアプリケーション診断装置１００ａの機能ブロック図である。Ｗｅｂアプリケーション診断装置１００ａはインターネット（あるいはＩＰ網）を介して、診断対象Ｗｅｂアプリケーション２０１の稼動しているＷｅｂサーバ２００（サーバ装置）と接続されている。
【００１３】
Ｗｅｂアプリケーション診断装置１００ａでは、セキュリティホール判定部１０１、擬似攻撃生成部１０２、診断結果表示部１０３、ＨＴＴＰリクエスト送信部１０４、ＨＴＴＰレスポンス受信部１０５、及び雛形ＨＴＴＰリクエスト生成部１０６、といった従来のＷｅｂアプリケーション診断装置に備えられた機能に加え、フレームワーク情報入力部１１０、パラメータ再構築部１２０、診断対象パラメータ絞込み部１３０、パラメータ抽出部１４０、パラメータ構成ルール蓄積部１５０、及び診断対象パラメータ判定条件蓄積部１６０が追加されている。
【００１４】
ＨＴＴＰリクエスト送信部１０４は、診断対象Ｗｅｂアプリケーション２０１が稼動しているサーバアドレスとＨＴＴＰリクエストを入力として、同アドレスで指定されるサーバにＨＴＴＰリクエストを送信する機能である。
【００１５】
ＨＴＴＰレスポンス受信部１０５は、診断対象Ｗｅｂアプリケーション２０１からのＨＴＴＰレスポンスを受信する機能である。
【００１６】
雛形ＨＴＴＰリクエスト生成部１０６は、Ｗｅｂアプリケーションにとって正常に処理可能なＨＴＴＰリクエストを生成する機能である。
【００１７】
診断対象パラメータ絞込み部１３０は、対象Ｗｅｂアプリケーションで使用されているフレームワークの情報に基づき、ＨＴＴＰリクエストで送信されるパラメータのうち、フレームワークの管理のために使用されるパラメータを特定し、診断対象から除外する機能である。
【００１８】
診断対象パラメータ判定条件蓄積部１６０は、フレームワークで使用されるパラメータを特定するための情報を蓄積する機能である。診断対象パラメータ判定条件蓄積部１６０は、複数のパラメータについて、各パラメータが擬似攻撃データを設定するべき診断対象パラメータかどうかを示すパラメータ判定条件情報を記憶している。
【００１９】
パラメータ抽出部１４０は、使用されているフレームワークの情報と、ＨＴＴＰリクエストからＷｅｂアプリケーション独自のフォーマットで格納されたパラメータを抽出する機能である。
【００２０】
パラメータ再構築部１２０は、使用されているフレームワークの情報に基づいてＨＴＴＰリクエスト内に送信するパラメータをＷｅｂアプリケーション独自のフォーマットで格納する機能である。
【００２１】
（動作）
図２を用いて動作について説明する。はじめに、Ｗｅｂアプリケーション診断装置１００ａは、診断実施者４００に対し診断対象Ｗｅｂアプリケーション２０１で用いられているフレームワーク名を入力させる（Ｓ２０１）。入力されたフレームワーク名はフレームワーク情報入力部１１０により主記憶等に記憶される。
【００２２】
次に、雛形ＨＴＴＰリクエストを生成部１０６は、診断対象Ｗｅｂアプリケーション２０１へ送信する擬似攻撃ＨＴＴＰリクエストの雛形となるＨＴＴＰリクエストを生成する（Ｓ２０２）。このＨＴＴＰリクエストは、診断対象Ｗｅｂアプリケーションで正常に処理されるものでなければならない。雛形ＨＴＴＰリクエスト生成部１０６の実現方式として、例えばユーザがブラウザを通じてＷｅｂアプリケーションを操作したときに、ブラウザが生成するＨＴＴＰリクエストを記録して再利用する方法などが知られている。本実施の形態１では既知の方式を用いて構わない。
【００２３】
（パラメータ抽出部１４０）
次に、生成されたＨＴＴＰリクエストに対して、パラメータ抽出部１４０が、ＨＴＴＰリクエスト中に含まれるパラメータ群を抽出する（Ｓ２０３）。パラメータ抽出部１４０は、ＨＴＴＰリクエスト中のＵＲＬ、Ｃｏｏｋｉｅヘッダ、及びボディ部からパラメータを抽出する。パラメータは、パラメータ名とパラメータ値で構成されており、ＨＴＴＰリクエスト中のＵＲＬ、Ｃｏｏｋｉｅヘッダ、ボディ部には０個以上のパラメータが付与される。抽出されたパラメータは、（パラメータ名、パラメータ値、抽出箇所、付加情報）で構成される。
【００２４】
ＵＲＬ及びＣｏｏｋｉｅヘッダに付与されるパラメータの書式は全てのＷｅｂアプリケーションで共通であり、パラメータ抽出部１４０はその共通フォーマットに従ってＵＲＬ、Ｃｏｏｋｉｅヘッダを解析し、パラメータを抽出する。ボディ部に格納されるパラメータの書式は、標準的な書式である場合と、独自の書式である場合がある。実際、先に挙げたＤＷＲでは、フレームワーク独自の書式を用いてパラメータを送信している。
【００２５】
パラメータ抽出部１４０はＨＴＴＰリクエストボディ部のデータが標準的な書式に合致しない場合、先に入力されたフレームワーク情報をもとに、パラメータ構成ルール蓄積部１５０を参照してパラメータの抽出を行う。
【００２６】
（パラメータ構成ルール蓄積部１５０：フォーマット定義情報）
図３はフォーマット定義情報が格納されたパラメータ構成ルール蓄積部１５０の例を示した図である。「フォーマット定義情報」とは、複数のフレームワークの各フレームワークについて、フレームワークのフォーマット定義を示す情報である。パラメータ構成ルール蓄積部１５０について説明する。
【００２７】
パラメータ構成ルール蓄積部１５０には、０個以上の「フォーマット定義情報」が格納されている。
各フォーマット定義情報は、
（１）フレームワーク名、
（２）パラメータフォーマットパターン文字列、
（３）パラメータ名書式指定パターン文字列、
（４）パラメータ値書式指定パターン文字列
で構成されている。
【００２８】
上記（２）「パラメータフォーマットパターン文字列」は、パラメータ名、及びパラメータ値の格納されるプレースホルダを含んだ正規表現文字列である。
上記（３）「パラメータ名書式指定パターン文字列」はパラメータ名の書式を表した正規表現である。
同様に、
上記（４）「パラメータ値書式指定パターン文字列」は、パラメータ値の書式を表した正規表現である。本実施の形態では、パラメータフォーマットパターン文字列に含まれるパラメータ名、パラメータ値プレースホルダは、それぞれ｛｛ＮＡＭＥ｝｝、｛｛ＶＡＬＵＥ｝｝としているが、パラメータフォーマットパターン文字列内で、プレースホルダとして以外に発生する可能性が無い文字列ならば別のものであっても構わない。
【００２９】
（パラメータ抽出部１４０による処理）
図４は、独自の書式でＨＴＴＰリクエストボディ部に格納されたパラメータに対するパラメータ抽出部１４０の処理を説明する図である。パラメータ抽出部１４０は、パラメータ構成ルール蓄積部１５０に格納されている「フォーマット定義情報」を一つ（１行のレコード）取り出し（Ｓ４０１）、フォーマット定義情報に記載されているフレームワーク名が診断対象Ｗｅｂアプリケーション２０１のフレームワーク名と一致するかを検査する（Ｓ４０２）。
一致しなかった場合、他のフォーマット定義情報を用いた抽出処理を試みる（Ｓ４１０）。一致するフォーマット定義情報が見つかった場合、ＨＴＴＰリクエストからＨＴＴＰリクエストボディ部を取り出し（Ｓ４０３）、抽出されたパラメータの記憶領域の初期化（Ｓ４０４）、抽出順序カウンタの初期化（Ｓ４０５）を実施する。
【００３０】
次に、パラメータ抽出部１４０は、フォーマット定義情報中のパラメータフォーマットパターン文字列中の｛｛ＮＡＭＥ｝｝、｛｛ＶＡＬＵＥ｝｝を、それぞれパラメータ名書式指定パターン文字列、パラメータ値書式指定パターン文字列で置換する（Ｓ４０６，Ｓ４０７）。
【００３１】
パラメータ抽出部１４０は、ＨＴＴＰリクエストのボディ部の現在の先頭部分から、Ｓ４０６，Ｓ４０７によって生成されたパラメータフォーマットパターンと、取り出されたＨＴＴＰリクエストボディ部とをマッチングさせる（Ｓ４０８）。
【００３２】
マッチした場合、パラメータ抽出部１４０は、先のステップでパラメータ名、パラメータ値のパターン文字列にマッチしている文字列をＨＴＴＰリクエストボディ部から取り出し、それをパラメータ名、パラメータ値として登録する（Ｓ４１１，Ｓ４１２）。さらに、パラメータ抽出部１４０は、抽出順序カウンタの値、マッチした全文字列、パラメータ名及びパラメータ値としてマッチした部分の、文字列先頭からのオフセットを付加情報として記憶しておく（Ｓ４１３〜Ｓ４１６）。その後抽出順序カウンタを１増加させ（Ｓ４１７）、さらにボディ部先頭からマッチした部分を取り除く（Ｓ４１８）。もしボディ部が空になったならばパラメータ抽出は終了する（Ｓ４１９）。さもなければＳ４０８に戻り、パラメータの抽出を継続する。
【００３３】
一つのフレームワークに対して複数のフォーマット定義情報が存在する場合には、一つのフォーマット定義情報でのマッチングに失敗した場合、別のフォーマット定義情報が使用される（Ｓ４１０）。
【００３４】
全てのフォーマット定義情報を用いてもＨＴＴＰリクエストボディ部からのパラメータ抽出が完了できなかった場合は、パラメータ抽出部１４０は、解析エラーとしてユーザに通知する。
【００３５】
（パラメータの選別：診断対象パラメータ絞込み部１３０）
再び図２に戻り、診断処理について説明を続ける。パラメータ抽出部１４０によるパラメータの抽出が完了すると、次に診断対象パラメータ絞込み部１３０によって各パラメータに対する診断（診断対象パラメータに該当するかどうかの判定）が実施される。診断対象パラメータ絞込み部１３０が、抽出されたパラメータ群からパラメータを一つ取り出し（以降、Ｐとおく）（Ｓ２０４）、パラメータＰが診断対象かどうかを判断する（Ｓ２０５）。
【００３６】
（診断対象パラメータ絞込み部１３０による判定詳細）
図５は、以下に説明する診断対象パラメータ判定条件蓄積部１６０に格納された「判定条件」（パラメータ判定条件情報）を示す図である。図５を参照して診断対象パラメータ絞込み部１３０による判定処理を説明する。
【００３７】
（診断対象パラメータ判定条件蓄積部１６０に蓄積された判定条件）
診断対象パラメータ絞込み部１３０は、診断対象パラメータ判定条件蓄積部１６０に格納された情報（「判定条件」）を参照することで、抽出されたパラメータＰを診断対象とするかどうかを判別する。診断対象パラメータ判定条件蓄積部１６０には、複数の判定条件が格納されている。すなわち、診断対象パラメータ判定条件蓄積部１６０には、複数のフレームワークを対象として、フレームワークで使用されるフレームワーク用パラメータが診断対象パラメータに該当するかどうかの判定条件が記載されている。
各判定条件は、
（１）フレームワーク名、
（２）パラメータ格納場所、
（３）パラメータ名パターン文字列、
（４）パラメータ値パターン文字列、
（５）パラメータ値書式指定パターン文字列、
（６）及び対象／対象外指示情報、で構成されている。
上記（２）「パラメータ格納場所」は、ＵＲＬ、Ｃｏｏｋｉｅヘッダ、またはボディ部のいずれかを指定可能である。
上記（３）「パラメータ名パターン文字列」は、パラメータ名についての条件が正規表現によって指定される。
上記（４）「パラメータ値パターン文字列」は、パラメータ値についての条件が、擬似攻撃データ格納箇所を示すプレースホルダ｛｛ＶＡＬＵＥ｝｝を含んだ正規表現として指定される（フォーマット定義情報と同様、プレースホルダを示す文字列は他の表現でも構わない）。
上記（５）「パラメータ値書式指定パターン文字列」は、前述したプレースホルダに格納される文字列の書式が正規表現として指定される。
最後に、
上記（６）「対象／対象外指示情報」は、条件に合致したパラメータを診断対象とするか否かが指定される。判定条件中の各項目は、フレームワーク名と対象／対象外指示情報を除き、省略可能である。省略された場合、その条件は判定に使用されないことを意味する。
【００３８】
（診断対象パラメータ絞込み部１３０による絞り込み処理）
図６は診断対象パラメータ絞込み部１３０による絞り込み処理を示すフローチャートである。図６を参照して、診断対象パラメータ絞込み処理を説明する。
【００３９】
診断対象パラメータ絞込み部１３０は、診断対象パラメータ判定条件蓄積部１６０に格納されている判定条件から、フレームワーク名の一致する判定条件を取り出す（Ｓ６０２）。取り出された判定条件に格納されている、パラメータ格納場所情報及びパラメータ名パターン文字列について、パラメータＰの格納場所及びパラメータ名に該当するかどうかを判定する（Ｓ６０３〜Ｓ６０５）。
一致した場合、
パラメータ値パターン文字列内のプレースホルダをパラメータ値書式指定パターン文字列で置換した正規表現を生成し（Ｓ６０６）、パラメータのパラメータ値が正規表現にマッチするかを確認する（Ｓ６０７）。マッチした場合、対象／対象外指示情報の内容を判定結果とする（Ｓ６１１）。診断対象とするよう判定した場合（Ｓ６１２）、パラメータの付加情報に、パラメータ値中でパラメータ値書式指定パターン文字列と、文字列にマッチした位置を記録しておく（Ｓ６１３，Ｓ６１４）。最後に判定結果を出力して処理を終える（Ｓ６１５）。
【００４０】
以上の処理を、該当する判定条件が見つかるか、全ての判定条件との照合が完了するまで繰り返す。もし合致する判定条件が見つからなかった場合、診断対象と判定して処理を終える（Ｓ６１０）。
【００４１】
診断対象パラメータ絞込み部１３０によって診断対象と判定された場合、パラメータＰに対して擬似攻撃データを挿入したＨＴＴＰリクエストを生成・送信し、診断を行う（Ｓ２０６）。
【００４２】
（診断処理）
次に診断処理について説明する。まず、診断装置１００では、擬似攻撃生成部１０２が、擬似攻撃データａを生成する（Ｓ２０８）。擬似攻撃生成方式は、既存の方式を用いて構わない。
【００４３】
次に、擬似攻撃生成部１０２は、擬似攻撃データａが、フレームワークで受理されるかどうかを判定する（Ｓ２０９）。判定は、先の診断対象パラメータ絞込み時に格納されたパラメータ値書式指定パターン文字列に、擬似攻撃データａがマッチするかどうかで行う。マッチしなかった場合、Ｓ２１６に進み、他の擬似攻撃データによる診断を試みる。マッチした場合には、次にパラメータＰに対して擬似攻撃データａを設定する（Ｓ２１０）。設定は、パラメータＰのパラメータ値のなかで、パラメータ値書式指定パターン文字列とマッチした位置から、パラメータ値の長さ分だけ、ａに置換することで行われる。
【００４４】
（パラメータ再構築部１２０）
擬似攻撃生成部１０２によって擬似攻撃データが設定された後、パラメータ再構築部１２０は、パラメータ群を再びＨＴＴＰリクエスト内に格納する（Ｓ２１１）。もともと既知の書式で格納されていた場合には、その書式に従って抽出されたパラメータを再度格納する。もし独自の書式で格納されていた場合（つまりパラメータ構成ルール蓄積部１５０を用いて抽出した場合）には、ボディ部から抽出された全てのパラメータを、付加情報に格納された抽出順序に従ってＨＴＴＰリクエストボディ部に格納していく。その時、もし格納しようとしているパラメータが擬似攻撃を含んでいないならば、付加情報に格納されているマッチングした全文字列をそのまま格納する。もし擬似攻撃を含んでいるならば、付加情報に格納されている、マッチングした全文字列の中で、パラメータ値に該当する部分（付加情報にあるオフセット情報と、元のパラメータ値の長さで判別する）を、先の処理で生成した擬似攻撃を含んだパラメータ値に置換えた後にＨＴＴＰリクエストに格納する。
【００４５】
以上の処理で生成されたＨＴＴＰリクエスト（診断用ＨＴＴＰリクエスト）をＨＴＴＰリクエスト送信部１０４によってＷｅｂアプリケーションに対して送信し、応答としてＨＴＴＰレスポンスを受信する（Ｓ２１２，Ｓ２１３）。その後、セキュリティホール判定部１０１でＨＴＴＰレスポンスを解析し、セキュリティホールの有無を検査し（Ｓ２１４）、セキュリティホールが検出された場合には診断実施者４００へ通知を行う（Ｓ２１５）。セキュリティホール判定に関しても従来の方式を用いることができる。
【００４６】
以上の処理を、擬似攻撃データのバリエーションがなくなるまで繰り返すことで、パラメータＰへの診断が完了する。全てのパラメータに対してＳ２０４〜Ｓ２０７を繰り返すことで、一つのＨＴＴＰリクエストに対する診断が完了する。
【００４７】
以上のように、診断対象Ｗｅｂアプリケーション２０１で使用されているＷｅｂアプリケーションフレームワークの情報を利用することで、従来パラメータ書式が不明なため診断が行えなかったＷｅｂアプリケーションも診断できるようになるとともに、送信されるパラメータのうち、フレームワークが自身の管理用に付加したパラメータについては診断対象外とすることで、診断対象パラメータの個数を削減することができ、診断時間が短縮できる、という効果がある。
【００４８】
本実施の形態１におけるパラメータ構成ルール蓄積部１５０、及び診断対象パラメータ判定条件蓄積部１６０は、同一装置内でのオンメモリ構成を想定しているが、これらがリモートのデータベースサーバに格納されていてももちろん構わない。また、各蓄積機能内の情報を、リモートの配布サーバから定期的に取得して、常に最新のフレームワークに対応するようにする構成も可能である。
【００４９】
実施の形態２．
図７は、実施の形態２のＷｅｂアプリケーション診断装置１００ｂの構成を示す。実施の形態１とは異なり、Ｗｅｂアプリケーション診断装置１００では、各フレームワークに対するパラメータ抽出部１４０ｂ、パラメータ再構築部１２０ｂ、及び診断対象パラメータ絞込み部１３０ｂを、プラグインと呼ばれる動的に追加可能なライブラリとして実現する構成である。プラグインは、フレームワークプラグイン蓄積部１３００に蓄積されており、プラグインロード部１２０２により、フレームワーク名をキーとして検索され、ロードされる。各プラグインには各フレームワークに対応したパラメータ再構築部１２０ｂ、パラメータ抽出部１４０ｂ、診断対象パラメータ絞込み部１３０ｂが実装されており、必要に応じてプラグイン呼出部１２０１から呼び出される。
【００５０】
図８は、Ｗｅｂアプリケーション診断装置１００ｂの全体の処理フローを示す。図８のフローは、Ｓ８０２でフレームワーク名に対応するプラグインをロードする点を除き、実施の形態１と同一である。違いは、「ＨＴＴＰリクエストに含まれるパラメータ抽出処理」（Ｓ８０４）、「Ｐは診断対象かの判定処理」（Ｓ８０６）、「変更されたパラメータからＨＴＴＰリクエストを再構成する処理」（Ｓ８１２）の３つが、プラグイン内の関数として実行される点にある。このように、プラグイン内の関数として各機能を実装することで、非常に複雑なパラメータフォーマットの解析や絞込み判定も実現可能である。
【００５１】
以上のように、フレームワーク固有の処理をプラグインという形式でプログラム化することで、実施の形態１と比べてより複雑なパラメータ抽出、再構築、及び診断対象パラメータの絞込み処理が行える、という効果がある。
【００５２】
実施の形態３．
図９、図１０を参照して実施の形態３を説明する。
【００５３】
実施の形態３は、Ｗｅｂアプリケーション診断装置１００ａ、１００ｂをコンピュータで実現する具体的な実施形態を示す。Ｗｅｂアプリケーション診断装置１００ａ、１００ｂとも同様のコンピュータであるので以下ではＷｅｂアプリケーション診断装置１００ａを想定して説明するが、Ｗｅｂアプリケーション診断装置１００ｂについても以下の説明は同様に当てはまる。
【００５４】
図９は、Ｗｅｂアプリケーション診断装置１００ａの外観の一例を示す図である。図９において、Ｗｅｂアプリケーション診断装置１００ａは、システムユニット８３０、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）やＬＣＤ（液晶）の表示画面を有する表示装置８１３、キーボード８１４（Ｋｅｙ・Ｂｏａｒｄ：Ｋ／Ｂ）、マウス８１５、ＦＤＤ８１７（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・  Ｄｒｉｖｅ）、コンパクトディスク装置８１８（ＣＤＤ：Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｄｒｉｖｅ）、プリンタ装置８１９などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。システムユニット８３０はネットワークを介してＷｅｂサーバ２００と接続している。
【００５５】
図１０は、コンピュータで実現されるＷｅｂアプリケーション診断装置１００ａのハードウェア資源の一例を示す図である。図１０において、Ｗｅｂアプリケーション診断装置１００ａは、プログラムを実行するＣＰＵ８１０（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を備えている。ＣＰＵ８１０は、バス８２５を介してＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）８１１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）８１２、表示装置８１３、キーボード８１４、マウス８１５、通信ボード８１６、ＦＤＤ８１７、ＣＤＤ８１８、プリンタ装置８１９、磁気ディスク装置８２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置８２０の代わりに、光ディスク装置、フラッシュメモリなどの記憶装置でもよい。
【００５６】
ＲＡＭ８１２は、揮発性メモリの一例である。ＲＯＭ８１１、ＦＤＤ８１７、ＣＤＤ８１８、磁気ディスク装置８２０等の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部、格納部、バッファの一例である。通信ボード８１６、キーボード８１４、ＦＤＤ８１７などは、入力部、入力装置の一例である。また、通信ボード８１６、表示装置８１３、プリンタ装置８１９などは、出力部、出力装置の一例である。
【００５７】
通信ボード８１６は、ネットワーク（ＬＡＮ等）に接続されている。通信ボード８１６は、ＬＡＮに限らず、インターネット、ＩＳＤＮ等のＷＡＮ（ワイドエリアネットワーク）などに接続されていても構わない。
【００５８】
磁気ディスク装置８２０には、オペレーティングシステム８２１（ＯＳ）、ウィンドウシステム８２２、プログラム群８２３、ファイル群８２４が記憶されている。プログラム群８２３のプログラムは、ＣＰＵ８１０、オペレーティングシステム８２１、ウィンドウシステム８２２により実行される。
【００５９】
上記プログラム群８２３には、以上の実施の形態の説明において「〜部」として説明した機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ８１０により読み出され実行される。
【００６０】
ファイル群８２４には、以上の実施の形態の説明において、「パラメータ構成ルール」、「診断対象パラメータ判定条件」として説明したデータや、「〜の判定結果」、「〜の算出結果」、「〜の抽出結果」、「〜の生成結果」、「〜の処理結果」として説明した情報や、データや信号値や変数値やパラメータなどが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ８１０によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【００６１】
また、以上に述べた実施の形態の説明において、データや信号値は、ＲＡＭ８１２のメモリ、ＦＤＤ８１７のフレキシブルディスク、ＣＤＤ８１８のコンパクトディスク、磁気ディスク装置８２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｋ）等の記録媒体に記録される。また、データや信号は、バス８２５や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００６２】
また、以上の実施の形態の説明において、「〜部」として説明したものは、「〜手段」、「〜回路」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明したものは、ＲＯＭ８１１に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ８１０により読み出され、ＣＰＵ８１０により実行される。すなわち、プログラムは、以上に述べた「〜部」としてコンピュータを機能させるものである。あるいは、以上に述べた「〜部」の手順や方法をコンピュータに実行させるものである。
【００６３】
以上の実施の形態１、２では、Ｗｅｂアプリケーション診断装置を説明したが、実施の形態３のように、Ｗｅｂアプリケーション診断装置の動作をコンピュータに実行させるＷｅｂアプリケーション診断プログラムとして把握することも可能である。あるいは、Ｗｅｂアプリケーション診断プログラムを記録したコンピュータ読み取り可能な記録媒体として把握することも可能である。さらに、Ｗｅｂアプリケーション診断装置の動作をＷｅｂアプリケーション診断装置が行うＷｅｂアプリケーション診断方法として把握することも可能である。
【００６４】
以上の実施の形態では、
擬似攻撃データを含んだＨＴＴＰリクエストを診断対象Ｗｅｂアプリケーションへ送信し、その応答であるＨＴＴＰレスポンスを解析して診断対象Ｗｅｂアプリケーション上のセキュリティホールの有無を判定するＷｅｂアプリケーション診断装置において、
診断対象Ｗｅｂアプリケーションへ送信するパラメータの中から、診断対象Ｗｅｂアプリケーションで使用されているフレームワークの情報に基づき、診断対象外としてよいパラメータを選別する診断対象パラメータ絞込み部を有するＷｅｂアプリケーション診断装置を説明した。
【００６５】
以上の実施の形態では、
ＡＪＡＸによって生成されるＨＴＴＰリクエストのように、診断対象Ｗｅｂアプリケーションへ送信するパラメータのデータフォーマットが標準的なものでない場合に、ユーザから入力されたフレームワーク情報に基づいて、フォーマットを解析し、パラメータを抽出し、またＨＴＴＰリクエストを再構築できるようにしたＷｅｂアプリケーション診断装置を説明した。
【００６６】
以上の実施の形態では、
診断対象パラメータ絞込み部から参照され、フレームワーク名、パラメータ格納場所、パラメータ名パターン文字列、パラメータ値パターン文字列、パラメータ値書式指定パターン文字列、及び対象／対象外指示情報で構成された判定条件が格納された診断対象パラメータ判定条件蓄積部を有するＷｅｂアプリケーション診断装置を説明した。
【００６７】
以上の実施の形態では、
フレームワーク名、パラメータフォーマットパターン文字列、パラメータ名書式指定パターン文字列、パラメータ値書式指定パターン文字列で構成されたフォーマット定義情報が格納されたパラメータ構成ルール蓄積部を有するＷｅｂアプリケーション診断装置を説明した。
【符号の説明】
【００６８】
１００ａ，１００ｂ  Ｗｅｂアプリケーション診断装置、１０１  セキュリティホール判定部、１０２  擬似攻撃生成部、１０３  診断結果表示部、１０４  ＨＴＴＰリクエスト送信部、１０５  ＨＴＴＰレスポンス受信部、１０６  雛形ＨＴＴＰリクエスト生成部、１１０  フレームワーク情報入力部、１２０，１２０ｂ  パラメータ再構築部、１３０，１３０ｂ  診断対象パラメータ絞込み部、１４０，１４０ｂ  パラメータ抽出部、１５０  パラメータ構成ルール蓄積部、１６０  診断対象パラメータ判定条件蓄積部、２００  Ｗｅｂサーバ、２０１  診断対象Ｗｅｂアプリケーション、３００  インターネット、４００  診断実施者、１２０１  プラグイン呼出部、１２０２  プラグインロード部、１３００  フレームワークプラグイン蓄積部。
【図１】
2010277288.tif 000003
【図２】
2010277288.tif 000004
【図３】
2010277288.tif 000005
【図４】
2010277288.tif 000006
【図５】
2010277288.tif 000007
【図６】
2010277288.tif 000008
【図７】
2010277288.tif 000009
【図８】
2010277288.tif 000010
【図９】
2010277288.tif 000011
【図１０】
2010277288.tif 000012
【図１１】
2010277288.tif 000013