説明

Webアプリケーション診断装置、Webアプリケーション診断プログラム及びWebアプリケーション診断方法

【課題】診断の不要なパラメータを選別可能な、使い勝手の良いWebアプリケーション診断装置を提供する。
【解決手段】Webアプリケーション診断装置100aは、診断用HTTPリクエストの雛形である雛形HTTPリクエストからパラメータを抽出するパラメータ抽出部140と、複数のパラメータについて、各パラメータが擬似攻撃データを設定するべきパラメータである診断対象パラメータかどうかを示すパラメータ判定条件情報を記憶する診断対象パラメータ判定条件蓄積部160と、前記パラメータ判定条件情報に基づいて、パラメータ抽出部140によって抽出されたパラメータが診断対象パラメータに該当するかどうかを判定する診断対象パラメータ絞込み130とを備えた。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、擬似攻撃データを含んだHTTP(HyperText Transfer Protocol)リクエストを診断対象Webアプリケーションプログラム(以下、Webアプリケーションという)へ送信し、その応答であるHTTPレスポンスを解析して診断対象Webアプリケーション上のセキュリティホールの有無を判定するWebアプリケーション診断装置に関する。
【背景技術】
【0002】
Web(ウエブ)アプリケーションとは、Webサーバもしくはアプリケーションサーバ上で動作するソフトウェアであり、HTTPプロトコルを通じてWebブラウザから呼び出され、処理結果をHTMLとしてブラウザに返すことでユーザにサービスを提供するものである。Webアプリケーションの呼出しは、URLの他に、ユーザがフォームへ入力したデータ等呼び出し時のパラメータをHTTPリクエストに格納してWebサーバに送信することで行われる。
【0003】
近年、パラメータに不正なデータを格納してWebアプリケーションを呼び出すことで、セキュリティ上の欠陥(セキュリティホールもしくは脆弱性)を悪用する攻撃が増加してきている。このようなWebアプリケーションのセキュリティホールに対する対策技術の一つとして、Webアプリケーションに対して擬似攻撃を行うことで、悪用される前にセキュリティホールを見つけるWebアプリケーション診断技術が存在する。製品としては、IBM社AppScan(AppScanは登録商標)、ヒューレット・パッカード社WebInspect等が知られている。Webアプリケーション診断技術においては、各パラメータに対し、攻撃を模擬した不正データを設定したHTTPリクエストを送信し、その応答からセキュリティホールの有無を判別する。その際、Webアプリケーション入口でのパラメータチェックを回避するため、様々な文字種や形式のバリエーションが用意された不正データを用いて各パラメータの検査を行うのが一般的である。検査の効率を上げるため、事前に数パターンのデータを送信し、パラメータチェックに合格する文字セット等を特定して、パラメータチェックに合格する不正データのみを送信する方法が知られている(例えば特許文献1)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2008−135029号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
近年、Webアプリケーションの開発を効率化するために、Webアプリケーションフレームワークを使用した開発が主流となっている。フレームワークを利用した開発では、セッション管理やページ遷移の制御といったWebアプリケーション共通の機能はフレームワークが行うため、開発者は本来行いたい処理の実装に専念できるというメリットがある。このようなフレームワークを用いたWebアプリケーションでは、ブラウザから送信されるHTTPリクエストに、本来Webアプリケーションが必要とするパラメータの他に、フレームワークが動作するために必要なパラメータが大量に付加される場合がある。例えば、図11はDWR(Direct Web Remoting)と呼ばれるフレームワーク上で生成されたWebページからのHTTPリクエストで送信されるパラメータ(計9個)である。ところが、これらの中で実際に開発者の実装したプログラムに渡されるのはc0−param中の“Joe”のみであり、残りは全てフレームワーク内で処理される。
【0006】
従来はこれらのパラメータ全てを診断対象とし、各パラメータに擬似攻撃を加えて診断を行っていた。しかし、フレームワークは提供するベンダやセキュリティコミュニティによって十分検証されており、フレームワークが消費するパラメータに関する診断は単に診断時間を浪費するのみであった。
【0007】
また、近年ではAJAX(Asynchronous Javascript And XML)(Javascriptは登録商標)と呼ばれるJavaScript(登録商標)からWebアプリケーションへの非同期通信による画面更新技術を利用したWebアプリケーションも普及しつつある。AJAXではJavaScript(登録商標)からWebアプリケーションへと送信されるパラメータの様式が定まっておらず、従来のWeb診断技術では独自のフォーマットを使用してパラメータを送信するWebアプリケーション向けの擬似攻撃HTTPリクエストを生成することができなかった。
【0008】
この発明は、診断の不要なパラメータを選別すると共に、使い勝手の良いWebアプリケーション診断装置の提供を目的とする。
【課題を解決するための手段】
【0009】
この発明のWebアプリケーション診断装置は、
セキュリティ上の欠陥があるかどうかの診断対象となる診断対象Webアプリケーションプログラムを実行するサーバ装置に、前記診断対象Webアプリケーションプログラムを試験として攻撃する擬似攻撃データが設定されたパラメータを含む診断用HTTP(HyperText Transfer Protocol)リクエストを送信し、前記サーバ装置から前記診断用HTTPリクエストへの応答であるHTTPレスポンスを受信し、受信された前記HTTPレスポンスを解析することにより前記診断対象Webアプリケーションプログラムの前記欠陥を診断するWebアプリケーション診断装置において、
前記診断用HTTPリクエストの雛形である雛形HTTPリクエストからパラメータを抽出するパラメータ抽出部と、
複数のパラメータについて、各パラメータが前記擬似攻撃データを設定するべきパラメータである診断対象パラメータかどうかを示すパラメータ判定条件情報を記憶するパラメータ判定条件情報記憶部と、
前記パラメータ判定条件情報記憶部に記憶された前記パラメータ判定条件情報に基づいて、前記パラメータ抽出部によって抽出されたパラメータが前記診断対象パラメータに該当するかどうかを判定する診断対象パラメータ判定部と
を備えたことを特徴とする。
【発明の効果】
【0010】
この発明により、診断の不要なパラメータを選別可能なWebアプリケーション診断装置を提供することができる。
【図面の簡単な説明】
【0011】
【図1】実施の形態1におけるWebアプリケーション診断装置100aの構成図。
【図2】実施の形態1におけるWebアプリケーション診断装置100aの全体の処理フロー。
【図3】実施の形態1におけるパラメータ構成ルール蓄積部150のフォーマット定義情報の例。
【図4】実施の形態1における独自フォーマット時のパラメータ抽出の処理フロー。
【図5】実施の形態1における診断対象パラメータ判定条件蓄積部160の格納データの例。
【図6】実施の形態1における診断対象パラメータの絞込みの処理フロー。
【図7】実施の形態2におけるWebアプリケーション診断装置100bの構成図。
【図8】実施の形態2におけるWebアプリケーション診断装置100bの全体の処理フロー。
【図9】実施の形態3におけるWebアプリケーション診断装置100a、100bの外観の例。
【図10】実施の形態3におけるWebアプリケーション診断装置100a、100bのハードウェア資源の一例。
【図11】従来技術を示す図。
【発明を実施するための形態】
【0012】
実施の形態1.
図1は、実施の形態1におけるWebアプリケーション診断装置100aの機能ブロック図である。Webアプリケーション診断装置100aはインターネット(あるいはIP網)を介して、診断対象Webアプリケーション201の稼動しているWebサーバ200(サーバ装置)と接続されている。
【0013】
Webアプリケーション診断装置100aでは、セキュリティホール判定部101、擬似攻撃生成部102、診断結果表示部103、HTTPリクエスト送信部104、HTTPレスポンス受信部105、及び雛形HTTPリクエスト生成部106、といった従来のWebアプリケーション診断装置に備えられた機能に加え、フレームワーク情報入力部110、パラメータ再構築部120、診断対象パラメータ絞込み部130、パラメータ抽出部140、パラメータ構成ルール蓄積部150、及び診断対象パラメータ判定条件蓄積部160が追加されている。
【0014】
HTTPリクエスト送信部104は、診断対象Webアプリケーション201が稼動しているサーバアドレスとHTTPリクエストを入力として、同アドレスで指定されるサーバにHTTPリクエストを送信する機能である。
【0015】
HTTPレスポンス受信部105は、診断対象Webアプリケーション201からのHTTPレスポンスを受信する機能である。
【0016】
雛形HTTPリクエスト生成部106は、Webアプリケーションにとって正常に処理可能なHTTPリクエストを生成する機能である。
【0017】
診断対象パラメータ絞込み部130は、対象Webアプリケーションで使用されているフレームワークの情報に基づき、HTTPリクエストで送信されるパラメータのうち、フレームワークの管理のために使用されるパラメータを特定し、診断対象から除外する機能である。
【0018】
診断対象パラメータ判定条件蓄積部160は、フレームワークで使用されるパラメータを特定するための情報を蓄積する機能である。診断対象パラメータ判定条件蓄積部160は、複数のパラメータについて、各パラメータが擬似攻撃データを設定するべき診断対象パラメータかどうかを示すパラメータ判定条件情報を記憶している。
【0019】
パラメータ抽出部140は、使用されているフレームワークの情報と、HTTPリクエストからWebアプリケーション独自のフォーマットで格納されたパラメータを抽出する機能である。
【0020】
パラメータ再構築部120は、使用されているフレームワークの情報に基づいてHTTPリクエスト内に送信するパラメータをWebアプリケーション独自のフォーマットで格納する機能である。
【0021】
(動作)
図2を用いて動作について説明する。はじめに、Webアプリケーション診断装置100aは、診断実施者400に対し診断対象Webアプリケーション201で用いられているフレームワーク名を入力させる(S201)。入力されたフレームワーク名はフレームワーク情報入力部110により主記憶等に記憶される。
【0022】
次に、雛形HTTPリクエストを生成部106は、診断対象Webアプリケーション201へ送信する擬似攻撃HTTPリクエストの雛形となるHTTPリクエストを生成する(S202)。このHTTPリクエストは、診断対象Webアプリケーションで正常に処理されるものでなければならない。雛形HTTPリクエスト生成部106の実現方式として、例えばユーザがブラウザを通じてWebアプリケーションを操作したときに、ブラウザが生成するHTTPリクエストを記録して再利用する方法などが知られている。本実施の形態1では既知の方式を用いて構わない。
【0023】
(パラメータ抽出部140)
次に、生成されたHTTPリクエストに対して、パラメータ抽出部140が、HTTPリクエスト中に含まれるパラメータ群を抽出する(S203)。パラメータ抽出部140は、HTTPリクエスト中のURL、Cookieヘッダ、及びボディ部からパラメータを抽出する。パラメータは、パラメータ名とパラメータ値で構成されており、HTTPリクエスト中のURL、Cookieヘッダ、ボディ部には0個以上のパラメータが付与される。抽出されたパラメータは、(パラメータ名、パラメータ値、抽出箇所、付加情報)で構成される。
【0024】
URL及びCookieヘッダに付与されるパラメータの書式は全てのWebアプリケーションで共通であり、パラメータ抽出部140はその共通フォーマットに従ってURL、Cookieヘッダを解析し、パラメータを抽出する。ボディ部に格納されるパラメータの書式は、標準的な書式である場合と、独自の書式である場合がある。実際、先に挙げたDWRでは、フレームワーク独自の書式を用いてパラメータを送信している。
【0025】
パラメータ抽出部140はHTTPリクエストボディ部のデータが標準的な書式に合致しない場合、先に入力されたフレームワーク情報をもとに、パラメータ構成ルール蓄積部150を参照してパラメータの抽出を行う。
【0026】
(パラメータ構成ルール蓄積部150:フォーマット定義情報)
図3はフォーマット定義情報が格納されたパラメータ構成ルール蓄積部150の例を示した図である。「フォーマット定義情報」とは、複数のフレームワークの各フレームワークについて、フレームワークのフォーマット定義を示す情報である。パラメータ構成ルール蓄積部150について説明する。
【0027】
パラメータ構成ルール蓄積部150には、0個以上の「フォーマット定義情報」が格納されている。
各フォーマット定義情報は、
(1)フレームワーク名、
(2)パラメータフォーマットパターン文字列、
(3)パラメータ名書式指定パターン文字列、
(4)パラメータ値書式指定パターン文字列
で構成されている。
【0028】
上記(2)「パラメータフォーマットパターン文字列」は、パラメータ名、及びパラメータ値の格納されるプレースホルダを含んだ正規表現文字列である。
上記(3)「パラメータ名書式指定パターン文字列」はパラメータ名の書式を表した正規表現である。
同様に、
上記(4)「パラメータ値書式指定パターン文字列」は、パラメータ値の書式を表した正規表現である。本実施の形態では、パラメータフォーマットパターン文字列に含まれるパラメータ名、パラメータ値プレースホルダは、それぞれ{{NAME}}、{{VALUE}}としているが、パラメータフォーマットパターン文字列内で、プレースホルダとして以外に発生する可能性が無い文字列ならば別のものであっても構わない。
【0029】
(パラメータ抽出部140による処理)
図4は、独自の書式でHTTPリクエストボディ部に格納されたパラメータに対するパラメータ抽出部140の処理を説明する図である。パラメータ抽出部140は、パラメータ構成ルール蓄積部150に格納されている「フォーマット定義情報」を一つ(1行のレコード)取り出し(S401)、フォーマット定義情報に記載されているフレームワーク名が診断対象Webアプリケーション201のフレームワーク名と一致するかを検査する(S402)。
一致しなかった場合、他のフォーマット定義情報を用いた抽出処理を試みる(S410)。一致するフォーマット定義情報が見つかった場合、HTTPリクエストからHTTPリクエストボディ部を取り出し(S403)、抽出されたパラメータの記憶領域の初期化(S404)、抽出順序カウンタの初期化(S405)を実施する。
【0030】
次に、パラメータ抽出部140は、フォーマット定義情報中のパラメータフォーマットパターン文字列中の{{NAME}}、{{VALUE}}を、それぞれパラメータ名書式指定パターン文字列、パラメータ値書式指定パターン文字列で置換する(S406,S407)。
【0031】
パラメータ抽出部140は、HTTPリクエストのボディ部の現在の先頭部分から、S406,S407によって生成されたパラメータフォーマットパターンと、取り出されたHTTPリクエストボディ部とをマッチングさせる(S408)。
【0032】
マッチした場合、パラメータ抽出部140は、先のステップでパラメータ名、パラメータ値のパターン文字列にマッチしている文字列をHTTPリクエストボディ部から取り出し、それをパラメータ名、パラメータ値として登録する(S411,S412)。さらに、パラメータ抽出部140は、抽出順序カウンタの値、マッチした全文字列、パラメータ名及びパラメータ値としてマッチした部分の、文字列先頭からのオフセットを付加情報として記憶しておく(S413〜S416)。その後抽出順序カウンタを1増加させ(S417)、さらにボディ部先頭からマッチした部分を取り除く(S418)。もしボディ部が空になったならばパラメータ抽出は終了する(S419)。さもなければS408に戻り、パラメータの抽出を継続する。
【0033】
一つのフレームワークに対して複数のフォーマット定義情報が存在する場合には、一つのフォーマット定義情報でのマッチングに失敗した場合、別のフォーマット定義情報が使用される(S410)。
【0034】
全てのフォーマット定義情報を用いてもHTTPリクエストボディ部からのパラメータ抽出が完了できなかった場合は、パラメータ抽出部140は、解析エラーとしてユーザに通知する。
【0035】
(パラメータの選別:診断対象パラメータ絞込み部130)
再び図2に戻り、診断処理について説明を続ける。パラメータ抽出部140によるパラメータの抽出が完了すると、次に診断対象パラメータ絞込み部130によって各パラメータに対する診断(診断対象パラメータに該当するかどうかの判定)が実施される。診断対象パラメータ絞込み部130が、抽出されたパラメータ群からパラメータを一つ取り出し(以降、Pとおく)(S204)、パラメータPが診断対象かどうかを判断する(S205)。
【0036】
(診断対象パラメータ絞込み部130による判定詳細)
図5は、以下に説明する診断対象パラメータ判定条件蓄積部160に格納された「判定条件」(パラメータ判定条件情報)を示す図である。図5を参照して診断対象パラメータ絞込み部130による判定処理を説明する。
【0037】
(診断対象パラメータ判定条件蓄積部160に蓄積された判定条件)
診断対象パラメータ絞込み部130は、診断対象パラメータ判定条件蓄積部160に格納された情報(「判定条件」)を参照することで、抽出されたパラメータPを診断対象とするかどうかを判別する。診断対象パラメータ判定条件蓄積部160には、複数の判定条件が格納されている。すなわち、診断対象パラメータ判定条件蓄積部160には、複数のフレームワークを対象として、フレームワークで使用されるフレームワーク用パラメータが診断対象パラメータに該当するかどうかの判定条件が記載されている。
各判定条件は、
(1)フレームワーク名、
(2)パラメータ格納場所、
(3)パラメータ名パターン文字列、
(4)パラメータ値パターン文字列、
(5)パラメータ値書式指定パターン文字列、
(6)及び対象/対象外指示情報、で構成されている。
上記(2)「パラメータ格納場所」は、URL、Cookieヘッダ、またはボディ部のいずれかを指定可能である。
上記(3)「パラメータ名パターン文字列」は、パラメータ名についての条件が正規表現によって指定される。
上記(4)「パラメータ値パターン文字列」は、パラメータ値についての条件が、擬似攻撃データ格納箇所を示すプレースホルダ{{VALUE}}を含んだ正規表現として指定される(フォーマット定義情報と同様、プレースホルダを示す文字列は他の表現でも構わない)。
上記(5)「パラメータ値書式指定パターン文字列」は、前述したプレースホルダに格納される文字列の書式が正規表現として指定される。
最後に、
上記(6)「対象/対象外指示情報」は、条件に合致したパラメータを診断対象とするか否かが指定される。判定条件中の各項目は、フレームワーク名と対象/対象外指示情報を除き、省略可能である。省略された場合、その条件は判定に使用されないことを意味する。
【0038】
(診断対象パラメータ絞込み部130による絞り込み処理)
図6は診断対象パラメータ絞込み部130による絞り込み処理を示すフローチャートである。図6を参照して、診断対象パラメータ絞込み処理を説明する。
【0039】
診断対象パラメータ絞込み部130は、診断対象パラメータ判定条件蓄積部160に格納されている判定条件から、フレームワーク名の一致する判定条件を取り出す(S602)。取り出された判定条件に格納されている、パラメータ格納場所情報及びパラメータ名パターン文字列について、パラメータPの格納場所及びパラメータ名に該当するかどうかを判定する(S603〜S605)。
一致した場合、
パラメータ値パターン文字列内のプレースホルダをパラメータ値書式指定パターン文字列で置換した正規表現を生成し(S606)、パラメータのパラメータ値が正規表現にマッチするかを確認する(S607)。マッチした場合、対象/対象外指示情報の内容を判定結果とする(S611)。診断対象とするよう判定した場合(S612)、パラメータの付加情報に、パラメータ値中でパラメータ値書式指定パターン文字列と、文字列にマッチした位置を記録しておく(S613,S614)。最後に判定結果を出力して処理を終える(S615)。
【0040】
以上の処理を、該当する判定条件が見つかるか、全ての判定条件との照合が完了するまで繰り返す。もし合致する判定条件が見つからなかった場合、診断対象と判定して処理を終える(S610)。
【0041】
診断対象パラメータ絞込み部130によって診断対象と判定された場合、パラメータPに対して擬似攻撃データを挿入したHTTPリクエストを生成・送信し、診断を行う(S206)。
【0042】
(診断処理)
次に診断処理について説明する。まず、診断装置100では、擬似攻撃生成部102が、擬似攻撃データaを生成する(S208)。擬似攻撃生成方式は、既存の方式を用いて構わない。
【0043】
次に、擬似攻撃生成部102は、擬似攻撃データaが、フレームワークで受理されるかどうかを判定する(S209)。判定は、先の診断対象パラメータ絞込み時に格納されたパラメータ値書式指定パターン文字列に、擬似攻撃データaがマッチするかどうかで行う。マッチしなかった場合、S216に進み、他の擬似攻撃データによる診断を試みる。マッチした場合には、次にパラメータPに対して擬似攻撃データaを設定する(S210)。設定は、パラメータPのパラメータ値のなかで、パラメータ値書式指定パターン文字列とマッチした位置から、パラメータ値の長さ分だけ、aに置換することで行われる。
【0044】
(パラメータ再構築部120)
擬似攻撃生成部102によって擬似攻撃データが設定された後、パラメータ再構築部120は、パラメータ群を再びHTTPリクエスト内に格納する(S211)。もともと既知の書式で格納されていた場合には、その書式に従って抽出されたパラメータを再度格納する。もし独自の書式で格納されていた場合(つまりパラメータ構成ルール蓄積部150を用いて抽出した場合)には、ボディ部から抽出された全てのパラメータを、付加情報に格納された抽出順序に従ってHTTPリクエストボディ部に格納していく。その時、もし格納しようとしているパラメータが擬似攻撃を含んでいないならば、付加情報に格納されているマッチングした全文字列をそのまま格納する。もし擬似攻撃を含んでいるならば、付加情報に格納されている、マッチングした全文字列の中で、パラメータ値に該当する部分(付加情報にあるオフセット情報と、元のパラメータ値の長さで判別する)を、先の処理で生成した擬似攻撃を含んだパラメータ値に置換えた後にHTTPリクエストに格納する。
【0045】
以上の処理で生成されたHTTPリクエスト(診断用HTTPリクエスト)をHTTPリクエスト送信部104によってWebアプリケーションに対して送信し、応答としてHTTPレスポンスを受信する(S212,S213)。その後、セキュリティホール判定部101でHTTPレスポンスを解析し、セキュリティホールの有無を検査し(S214)、セキュリティホールが検出された場合には診断実施者400へ通知を行う(S215)。セキュリティホール判定に関しても従来の方式を用いることができる。
【0046】
以上の処理を、擬似攻撃データのバリエーションがなくなるまで繰り返すことで、パラメータPへの診断が完了する。全てのパラメータに対してS204〜S207を繰り返すことで、一つのHTTPリクエストに対する診断が完了する。
【0047】
以上のように、診断対象Webアプリケーション201で使用されているWebアプリケーションフレームワークの情報を利用することで、従来パラメータ書式が不明なため診断が行えなかったWebアプリケーションも診断できるようになるとともに、送信されるパラメータのうち、フレームワークが自身の管理用に付加したパラメータについては診断対象外とすることで、診断対象パラメータの個数を削減することができ、診断時間が短縮できる、という効果がある。
【0048】
本実施の形態1におけるパラメータ構成ルール蓄積部150、及び診断対象パラメータ判定条件蓄積部160は、同一装置内でのオンメモリ構成を想定しているが、これらがリモートのデータベースサーバに格納されていてももちろん構わない。また、各蓄積機能内の情報を、リモートの配布サーバから定期的に取得して、常に最新のフレームワークに対応するようにする構成も可能である。
【0049】
実施の形態2.
図7は、実施の形態2のWebアプリケーション診断装置100bの構成を示す。実施の形態1とは異なり、Webアプリケーション診断装置100では、各フレームワークに対するパラメータ抽出部140b、パラメータ再構築部120b、及び診断対象パラメータ絞込み部130bを、プラグインと呼ばれる動的に追加可能なライブラリとして実現する構成である。プラグインは、フレームワークプラグイン蓄積部1300に蓄積されており、プラグインロード部1202により、フレームワーク名をキーとして検索され、ロードされる。各プラグインには各フレームワークに対応したパラメータ再構築部120b、パラメータ抽出部140b、診断対象パラメータ絞込み部130bが実装されており、必要に応じてプラグイン呼出部1201から呼び出される。
【0050】
図8は、Webアプリケーション診断装置100bの全体の処理フローを示す。図8のフローは、S802でフレームワーク名に対応するプラグインをロードする点を除き、実施の形態1と同一である。違いは、「HTTPリクエストに含まれるパラメータ抽出処理」(S804)、「Pは診断対象かの判定処理」(S806)、「変更されたパラメータからHTTPリクエストを再構成する処理」(S812)の3つが、プラグイン内の関数として実行される点にある。このように、プラグイン内の関数として各機能を実装することで、非常に複雑なパラメータフォーマットの解析や絞込み判定も実現可能である。
【0051】
以上のように、フレームワーク固有の処理をプラグインという形式でプログラム化することで、実施の形態1と比べてより複雑なパラメータ抽出、再構築、及び診断対象パラメータの絞込み処理が行える、という効果がある。
【0052】
実施の形態3.
図9、図10を参照して実施の形態3を説明する。
【0053】
実施の形態3は、Webアプリケーション診断装置100a、100bをコンピュータで実現する具体的な実施形態を示す。Webアプリケーション診断装置100a、100bとも同様のコンピュータであるので以下ではWebアプリケーション診断装置100aを想定して説明するが、Webアプリケーション診断装置100bについても以下の説明は同様に当てはまる。
【0054】
図9は、Webアプリケーション診断装置100aの外観の一例を示す図である。図9において、Webアプリケーション診断装置100aは、システムユニット830、CRT(Cathode・Ray・Tube)やLCD(液晶)の表示画面を有する表示装置813、キーボード814(Key・Board:K/B)、マウス815、FDD817(Flexible・Disk・ Drive)、コンパクトディスク装置818(CDD:Compact Disk Drive)、プリンタ装置819などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。システムユニット830はネットワークを介してWebサーバ200と接続している。
【0055】
図10は、コンピュータで実現されるWebアプリケーション診断装置100aのハードウェア資源の一例を示す図である。図10において、Webアプリケーション診断装置100aは、プログラムを実行するCPU810(Central Processing Unit)を備えている。CPU810は、バス825を介してROM(Read Only Memory)811、RAM(Random Access Memory)812、表示装置813、キーボード814、マウス815、通信ボード816、FDD817、CDD818、プリンタ装置819、磁気ディスク装置820と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置820の代わりに、光ディスク装置、フラッシュメモリなどの記憶装置でもよい。
【0056】
RAM812は、揮発性メモリの一例である。ROM811、FDD817、CDD818、磁気ディスク装置820等の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部、格納部、バッファの一例である。通信ボード816、キーボード814、FDD817などは、入力部、入力装置の一例である。また、通信ボード816、表示装置813、プリンタ装置819などは、出力部、出力装置の一例である。
【0057】
通信ボード816は、ネットワーク(LAN等)に接続されている。通信ボード816は、LANに限らず、インターネット、ISDN等のWAN(ワイドエリアネットワーク)などに接続されていても構わない。
【0058】
磁気ディスク装置820には、オペレーティングシステム821(OS)、ウィンドウシステム822、プログラム群823、ファイル群824が記憶されている。プログラム群823のプログラムは、CPU810、オペレーティングシステム821、ウィンドウシステム822により実行される。
【0059】
上記プログラム群823には、以上の実施の形態の説明において「〜部」として説明した機能を実行するプログラムが記憶されている。プログラムは、CPU810により読み出され実行される。
【0060】
ファイル群824には、以上の実施の形態の説明において、「パラメータ構成ルール」、「診断対象パラメータ判定条件」として説明したデータや、「〜の判定結果」、「〜の算出結果」、「〜の抽出結果」、「〜の生成結果」、「〜の処理結果」として説明した情報や、データや信号値や変数値やパラメータなどが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してCPU810によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのCPUの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のCPUの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
【0061】
また、以上に述べた実施の形態の説明において、データや信号値は、RAM812のメモリ、FDD817のフレキシブルディスク、CDD818のコンパクトディスク、磁気ディスク装置820の磁気ディスク、その他光ディスク、ミニディスク、DVD(Digital・Versatile・Disk)等の記録媒体に記録される。また、データや信号は、バス825や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【0062】
また、以上の実施の形態の説明において、「〜部」として説明したものは、「〜手段」、「〜回路」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明したものは、ROM811に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、DVD等の記録媒体に記憶される。プログラムはCPU810により読み出され、CPU810により実行される。すなわち、プログラムは、以上に述べた「〜部」としてコンピュータを機能させるものである。あるいは、以上に述べた「〜部」の手順や方法をコンピュータに実行させるものである。
【0063】
以上の実施の形態1、2では、Webアプリケーション診断装置を説明したが、実施の形態3のように、Webアプリケーション診断装置の動作をコンピュータに実行させるWebアプリケーション診断プログラムとして把握することも可能である。あるいは、Webアプリケーション診断プログラムを記録したコンピュータ読み取り可能な記録媒体として把握することも可能である。さらに、Webアプリケーション診断装置の動作をWebアプリケーション診断装置が行うWebアプリケーション診断方法として把握することも可能である。
【0064】
以上の実施の形態では、
擬似攻撃データを含んだHTTPリクエストを診断対象Webアプリケーションへ送信し、その応答であるHTTPレスポンスを解析して診断対象Webアプリケーション上のセキュリティホールの有無を判定するWebアプリケーション診断装置において、
診断対象Webアプリケーションへ送信するパラメータの中から、診断対象Webアプリケーションで使用されているフレームワークの情報に基づき、診断対象外としてよいパラメータを選別する診断対象パラメータ絞込み部を有するWebアプリケーション診断装置を説明した。
【0065】
以上の実施の形態では、
AJAXによって生成されるHTTPリクエストのように、診断対象Webアプリケーションへ送信するパラメータのデータフォーマットが標準的なものでない場合に、ユーザから入力されたフレームワーク情報に基づいて、フォーマットを解析し、パラメータを抽出し、またHTTPリクエストを再構築できるようにしたWebアプリケーション診断装置を説明した。
【0066】
以上の実施の形態では、
診断対象パラメータ絞込み部から参照され、フレームワーク名、パラメータ格納場所、パラメータ名パターン文字列、パラメータ値パターン文字列、パラメータ値書式指定パターン文字列、及び対象/対象外指示情報で構成された判定条件が格納された診断対象パラメータ判定条件蓄積部を有するWebアプリケーション診断装置を説明した。
【0067】
以上の実施の形態では、
フレームワーク名、パラメータフォーマットパターン文字列、パラメータ名書式指定パターン文字列、パラメータ値書式指定パターン文字列で構成されたフォーマット定義情報が格納されたパラメータ構成ルール蓄積部を有するWebアプリケーション診断装置を説明した。
【符号の説明】
【0068】
100a,100b Webアプリケーション診断装置、101 セキュリティホール判定部、102 擬似攻撃生成部、103 診断結果表示部、104 HTTPリクエスト送信部、105 HTTPレスポンス受信部、106 雛形HTTPリクエスト生成部、110 フレームワーク情報入力部、120,120b パラメータ再構築部、130,130b 診断対象パラメータ絞込み部、140,140b パラメータ抽出部、150 パラメータ構成ルール蓄積部、160 診断対象パラメータ判定条件蓄積部、200 Webサーバ、201 診断対象Webアプリケーション、300 インターネット、400 診断実施者、1201 プラグイン呼出部、1202 プラグインロード部、1300 フレームワークプラグイン蓄積部。

【特許請求の範囲】
【請求項1】
セキュリティ上の欠陥があるかどうかの診断対象となる診断対象Webアプリケーションプログラムを実行するサーバ装置に、前記診断対象Webアプリケーションプログラムを試験として攻撃する擬似攻撃データが設定されたパラメータを含む診断用HTTP(HyperText Transfer Protocol)リクエストを送信し、前記サーバ装置から前記診断用HTTPリクエストへの応答であるHTTPレスポンスを受信し、受信された前記HTTPレスポンスを解析することにより前記診断対象Webアプリケーションプログラムの前記欠陥を診断するWebアプリケーション診断装置において、
前記診断用HTTPリクエストの雛形である雛形HTTPリクエストからパラメータを抽出するパラメータ抽出部と、
複数のパラメータについて、各パラメータが前記擬似攻撃データを設定するべきパラメータである診断対象パラメータかどうかを示すパラメータ判定条件情報を記憶するパラメータ判定条件情報記憶部と、
前記パラメータ判定条件情報記憶部に記憶された前記パラメータ判定条件情報に基づいて、前記パラメータ抽出部によって抽出されたパラメータが前記診断対象パラメータに該当するかどうかを判定する診断対象パラメータ判定部と
を備えたことを特徴とするWebアプリケーション診断装置。
【請求項2】
前記診断対象Webアプリケーションプログラムは、
所定のフレームワークが使用され、
前記パラメータ判定条件情報記憶部に記憶された前記パラメータ判定条件情報は、
複数のフレームワークを対象として、フレームワークで使用されるフレームワーク用パラメータが前記診断対象パラメータに該当するかどうかの判定条件が記載されており、
前記診断対象パラメータ判定部は、
前記パラメータ判定条件情報記憶部に記憶された前記パラメータ判定条件情報に基づいて、前記パラメータ抽出部によって抽出されたパラメータの中から前記診断対象パラメータに該当しないフレームワーク用パラメータを選別することを特徴とする請求項1記載のWebアプリケーション診断装置。
【請求項3】
前記Webアプリケーション診断装置は、さらに、
複数のフレームワークの各フレームワークについて、フレームワークのフォーマット定義を示すフォーマット定義情報を記憶するフォーマット定義情報記憶部と、
擬似攻撃生成部と、
パラメータ再構築部と
を備え、
前記パラメータ抽出部は、
前記雛形HTTPリクエスト内に標準フォーマットではない独自フォーマットでパラメータが格納されている場合には、前記フォーマット定義情報記憶部に記憶された前記フォーマット定義情報を参照することにより、前記フォーマット定義情報の中から前記独自フォーマットに該当するフォーマットを特定し、特定されたフォーマットに基づきパラメータを抽出し、
前記擬似攻撃生成部は、
前記診断対象パラメータ判定部によって前記診断対象パラメータに該当すると判定されたパラメータに擬似攻撃データを設定し、
前記パラメータ再構築部は、
前記擬似攻撃生成部によって擬似攻撃データの設定されたパラメータを前記雛形HTTPリクエストに格納することを特徴とする請求項2記載のWebアプリケーション診断装置。
【請求項4】
セキュリティ上の欠陥があるかどうかの診断対象となる診断対象Webアプリケーションプログラムを実行するサーバ装置に、前記診断対象Webアプリケーションプログラムを試験として攻撃する擬似攻撃データが設定されたパラメータを含む診断用HTTP(HyperText Transfer Protocol)リクエストを送信し、前記サーバ装置から前記診断用HTTPリクエストへの応答であるHTTPレスポンスを受信し、受信された前記HTTPレスポンスを解析することにより前記診断対象Webアプリケーションプログラムの前記欠陥を診断するコンピュータであるWebアプリケーション診断装置を、
(1)前記診断用HTTPリクエストの雛形である雛形HTTPリクエストからパラメータを抽出するパラメータ抽出部と、
(2)複数のパラメータについて、各パラメータが前記擬似攻撃データを設定するべきパラメータである診断対象パラメータかどうかを示すパラメータ判定条件情報を記憶するパラメータ判定条件情報記憶部、
(3)前記パラメータ判定条件情報記憶部に記憶された前記パラメータ判定条件情報に基づいて、前記パラメータ抽出部によって抽出されたパラメータが前記診断対象パラメータに該当するかどうかを判定する診断対象パラメータ判定部、
として機能させるためのWebアプリケーション診断プログラム。
【請求項5】
前記診断対象Webアプリケーションプログラムは、
所定のフレームワークが使用され、
前記パラメータ判定条件情報記憶部に記憶された前記パラメータ判定条件情報は、
複数のフレームワークを対象として、フレームワークで使用されるフレームワーク用パラメータが前記診断対象パラメータに該当するかどうかの判定条件が記載されており、
前記診断対象パラメータ判定部は、
前記パラメータ判定条件情報記憶部に記憶された前記パラメータ判定条件情報に基づいて、前記パラメータ抽出部によって抽出されたパラメータの中から前記診断対象パラメータに該当しないフレームワーク用パラメータを選別することを特徴とする請求項4記載のWebアプリケーション診断プログラム。
【請求項6】
前記Webアプリケーション診断プログラムは、前記コンピュータを、さらに、
複数のフレームワークの各フレームワークについて、フレームワークのフォーマット定義を示すフォーマット定義情報を記憶するフォーマット定義情報記憶部、
擬似攻撃生成部、
パラメータ再構築部、
として機能させると共に、
前記パラメータ抽出部は、
前記雛形HTTPリクエスト内に標準フォーマットではない独自フォーマットでパラメータが格納されている場合には、前記フォーマット定義情報記憶部に記憶された前記フォーマット定義情報を参照することにより、前記フォーマット定義情報の中から前記独自フォーマットに該当するフォーマットを特定し、特定されたフォーマットに基づきパラメータを抽出し、
前記擬似攻撃生成部は、
前記診断対象パラメータ判定部によって前記診断対象パラメータに該当すると判定されたパラメータに擬似攻撃データを設定し、
前記パラメータ再構築部は、
前記擬似攻撃生成部によって擬似攻撃データの設定されたパラメータを前記雛形HTTPリクエストに格納することを特徴とする請求項5記載のWebアプリケーション診断プログラム。
【請求項7】
セキュリティ上の欠陥があるかどうかの診断対象となる診断対象Webアプリケーションプログラムを実行するサーバ装置に、前記診断対象Webアプリケーションプログラムを試験として攻撃する擬似攻撃データが設定されたパラメータを含む診断用HTTP(HyperText Transfer Protocol)リクエストを送信し、前記サーバ装置から前記診断用HTTPリクエストへの応答であるHTTPレスポンスを受信し、受信された前記HTTPレスポンスを解析することにより前記診断対象Webアプリケーションプログラムの前記欠陥を診断するWebアプリケーション診断装置が行うWebアプリケーション診断方法において、
(1)パラメータ抽出部が、前記診断用HTTPリクエストの雛形である雛形HTTPリクエストからパラメータを抽出し、
(2)パラメータ判定条件情報記憶部が、複数のパラメータについて、各パラメータが前記擬似攻撃データを設定するべきパラメータである診断対象パラメータかどうかを示すパラメータ判定条件情報を記憶し、(3)診断対象パラメータ判定部が、前記パラメータ判定条件情報記憶部に記憶された前記パラメータ判定条件情報に基づいて、前記パラメータ抽出部によって抽出されたパラメータが前記診断対象パラメータに該当するかどうかを判定する
ことを特徴とするWebアプリケーション診断方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2010−277288(P2010−277288A)
【公開日】平成22年12月9日(2010.12.9)
【国際特許分類】
【出願番号】特願2009−128360(P2009−128360)
【出願日】平成21年5月28日(2009.5.28)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】