JP4745819B2 - 脆弱性判定システム及び検査装置 - Google Patents

脆弱性判定システム及び検査装置 Download PDF

Info

Publication number
JP4745819B2
JP4745819B2 JP2005372678A JP2005372678A JP4745819B2 JP 4745819 B2 JP4745819 B2 JP 4745819B2 JP 2005372678 A JP2005372678 A JP 2005372678A JP 2005372678 A JP2005372678 A JP 2005372678A JP 4745819 B2 JP4745819 B2 JP 4745819B2
Authority
JP
Japan
Prior art keywords
request
character string
command
inspection
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2005372678A
Other languages
English (en)
Other versions
JP2007172517A (ja
Inventor
清人 河内
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2005372678A priority Critical patent/JP4745819B2/ja
Publication of JP2007172517A publication Critical patent/JP2007172517A/ja
Application granted granted Critical
Publication of JP4745819B2 publication Critical patent/JP4745819B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

この発明は、Webアプリケーションの脆弱性の有無を診断するシステムに関するものである。
Webアプリケーション(Webアプリケーションプログラム)とは、Webサーバ上で動作し、Microsoft社のInternet Explorer(登録商標)等のWebブラウザソフトに表示されるWebページ上のフォームを操作することで利用可能なサービス(あるいはサービスを提供するプログラム)である。フォーム上で入力されたデータは、HTTP(Hyper Text Transfer Protocol)プロトコルを通じてWebアプリケーションへ送信される。
フォームから入力されるデータ以外にも、ブラウザからWebアプリケーションへ送信されるデータが幾つか存在する。代表的なものとしては、Cookieと呼ばれるデータであるが、他にもHTTPリクエスト中のRefererヘッダやUser−Agentヘッダ等を入力として使用するWebアプリケーションもある。
クライアント端末からのデータを受信したWebアプリケーション(Webアプリケーションプログラムを実行するサーバ装置)は、サービスを実現するために、必要に応じてDB(Data Base)サーバ等のバックエンドサーバを呼び出す。一般に、バックエンドサーバの操作は、Webアプリケーションがクライアントからの入力データをもとにしてバックエンドサーバを操作するための文字列(以下「コマンド文字列」と呼ぶ)を作成し、その「コマンド文字列」をバックエンドサーバに送信することで行われる。
このとき、もしWebアプリケーションにおけるクライアントデータの入力チェックに問題がある場合には、Webアプリケーション(サーバ装置)が悪意のクライアントデータを受信した際に、Webアプリケーション設計者の意図しなかった「コマンド文字列」が生成され、その結果セキュリティ上問題のある誤動作が発生する場合がある。このような脆弱性の一種としてはSQL文に不正な命令が挿入されてしまうSQLインジェクション脆弱性が代表的である。
Webアプリケーションの脆弱性診断は、Webアプリケーションに入力されるデータに擬似攻撃データを含ませたリクエストを送信し、そのリクエストに対するWebアプリケーションの応答にセキュリティホールの存在を示唆するような痕跡が無いかどうかを解析することで実施される。代表的な製品としては米国Sanctum社のAppScan(登録商標)を挙げることができる(例えば非特許文献1)。
図20を参照しながら、従来のWebアプリケーションの脆弱性診断システムの動作について述べる。
(1)システムは、まず、Webアプリケーションが受理するような正しいリクエストを雛形とし、それを改変することで、擬似攻撃リクエスト(診断リクエスト)を生成する。擬似攻撃は、もし脆弱性が存在していた場合に、Webアプリケーション内で生成される「コマンド文字列」に構文エラーを発生させるようなデータが選択される。
(2)診断リクエストの送信後、診断システム(診断ツール)は、Webアプリケーション(Webサーバ)からのレスポンス(応答)を解析し、エラーの発生をクライアントに通知するHTML(Hyper Text Markup Language)が含まれているか、例えば「エラー」等のキーワードの検索を行うことで、脆弱性の有無を判断する。
以上のように、従来のWebアプリケーション診断装置(あるいは脆弱性診断システム)では、診断対象であるWebサーバからのHTTPレスポンスの内容のみで脆弱性の判定を行っており、「コマンド文字列」の構文エラーが発生した場合に、Webアプリケーション(Webサーバ)から返されるHTMLにエラーを示す情報が含まれている必要があった。
しかし、実際にどのようなHTMLが返されるかはWebアプリケーション内のエラー処理の実装に依存する。
このため、
(1)その実装によっては、脆弱性が存在してもHTTPレスポンスのHTML内にそれ(脆弱性の存在痕跡)が報告されず、結果として脆弱性の検出漏れを起こしてしまうという課題があった。
(2)また、Webアプリケーションに送信したHTTPリクエスト内の情報が、いつバックエンドサーバに渡されるかが不明であるため、複数のページ間にまたがった脆弱性の検出が不可能であった。
「SANCTUM AppScanTM 3.5 White Paper」
本発明は、HTTPレスポンスのHTML内に脆弱性の存在が現れない場合であっても、脆弱性を検出する手段を提供する。また複数のページ間にまたがった脆弱性の検出を可能とする手段を提供することを目的とする。
本発明の脆弱性判定システムは、
所定のリクエストを受信した場合に他の機能を制御する文字列であるコマンド文字列を所定の構文に基づいて生成するサーバ装置の脆弱性を判定する脆弱性判定システムにおいて、
前記サーバ装置の脆弱性を検査する検査リクエストを生成して前記サーバ装置に送信する検査リクエスト生成部を備えた検査装置と、
前記サーバ装置がコマンド文字列を生成するかどうか監視してコマンド文字列を検出するコマンド文字列検出部と、
前記コマンド文字列検出部がコマンド文字列を検出した場合に、検出されたコマンド文字列に構文誤りがあるかどうかを解析して構文誤りの有無を示す構文誤り検出情報をメモリに記憶する構文解析部と、
前記構文解析部が前記メモリに記憶した構文誤り検出情報を要求する要求情報に応答して、前記メモリに記憶された構文誤り検出情報を送信する応答部と
を備えた監視装置と
を備え、
前記検査装置の検査リクエスト生成部は、
前記監視装置の前記構文解析部が前記メモリに記憶した構文誤り検出情報を前記監視装置に要求することにより、前記監視装置の前記応答部から構文誤り検出情報を受信し、受信した構文誤り検出情報に基づいて、前記サーバ装置が脆弱かどうかを判定することを特徴とする。
本発明により、リクエストに応答する応答レスポンスに脆弱性の存在が現れない場合であっても、脆弱性を検出することが可能になる。
実施の形態1.
図1〜図6を用いて実施の形態1を説明する。実施の形態1は、脆弱性の診断対象である診断対象Webサーバ200から、バックエンドサーバ400に送信される「コマンド文字列」を監視する通信モニタ装置301を備えた脆弱性診断システム1000に関する。
脆弱性診断システム1000は、Webアプリケーションプログラム(以下、Webアプリケーションという場合がある)の脆弱性を診断する。このWebアプリケーションプログラムは、コンピュータである診断対象Webサーバ200により実行される。よって、「Webアプリケーションの脆弱性診断」は、「診断対象Webサーバ200の脆弱性診断」と同じ内容である。
また、以下の実施の形態において使用する「コマンド文字列」とは、診断対象Webサーバ200が所定のリクエストを受信した場合に生成する文字列であって、「他の機能を制御する文字列」である。以下の実施の形態では、診断対象Webサーバ200は、バックエンドサーバ400を制御する「コマンド文字列」を生成しているが、これは「他の機能を制御する」場合の一例である。また、「コマンド文字列」を発生させる「所定のリクエスト」とは、後述する「コマンド発生リクエスト」である。
図1は、実施の形態1の脆弱性診断システム1000(脆弱性判定システム)の構成を示す図である。脆弱性診断システム1000は、診断装置101(検査装置)と通信モニタ装置301(監視装置)とを備える。診断装置101は、診断対象Webサーバ200(サーバ装置)にリクエストを送信し、またそのレスポンス(応答)を受信する。
通信モニタ装置301は、診断対象Webサーバ200がDBサーバ等であるバックエンドサーバ400に送信する「コマンド文字列」を監視して検出し、監視結果を診断装置101に送信する。
図2は、診断装置101の構成を示すブロック図である。診断装置101は、検査リクエスト生成部111と、正常リクエスト生成部15と、状態保存部16と、サイト構造情報保存部17とを備える。検査リクエスト生成部111は、検査実施部11と、リクエスト送信部12と、レスポンス受信部13と、監視結果要求部14とを備える。診断装置101は、ネットワークを介して診断対象Webサーバ200及び通信モニタ装置301に接続されている。
図3は、通信モニタ装置301の構成を示すブロック図である。通信モニタ装置301は、通信監視部31(コマンド文字列検出部)と、構文解析部32と、監視結果応答部33(応答部)とを備える。通信モニタ装置301は、ネットワークを介して診断装置101と接続されていると同時に、診断対象Webサーバ200とバックエンドサーバ400との通信を傍受できる状態にある。
図4〜図6を用いて、脆弱性診断システム1000の動作を説明する。
(1)まず、図4に示すようにS101において、検査実施者は、診断対象となるWebサイトの「サイト構造情報」を収集し、診断装置101の備えるサイト構造情報保存部17に「サイト構造情報」を保存する。
ここで「サイト構造情報」とは、図5に示すように、診断対象となるサイトを構成するページを頂点とし、接続されているページ間に有向辺を張ることで構成される有向グラフとして表現される。辺には属性として、URL(Uniform Resource Locator)やフォームに与える情報等のページ遷移に必要な情報(以下、「遷移情報」と呼ぶ)が付与されている。この「サイト構造情報」を収集する手段は問わない。例えば、ユーザによって操作されるブラウザが送信するHTTPリクエストをプロキシサーバ等の内部で記録する方法等が考えられる。
次に、S102において、診断対象Webサーバ200の稼動しているネットワーク上で通信モニタ装置301を起動する。なお、通信モニタ装置の起動後に「サイト構造情報」を収集しても構わない。通信モニタ装置301は、診断対象Webサーバ200とバックエンドサーバ400との通信を傍受できるネットワーク上に接続されていなければならない。
「サイト構造情報」の収集、及び通信モニタ装置301の起動を完了後、実際の脆弱性の診断を開始する。脆弱性の診断は、診断装置101内の検査実施部11により制御される。以下に、図5、図6を用いて、診断装置101の動作を説明する。
はじめに、検査実施部11は、サイト構造情報保存部17に格納されている「グラフ情報」(サイト構造情報)から診断対象として一つの辺(以下、選択辺という場合がある)を選択し(S201)、サイトのトップページを現す頂点から、その選択辺の開始点となる頂点に至るまでの経路を算出し(S202)、算出した経路に従って順にサイト内の各ページにアクセスしていく(S203)。
ここで各ページへのアクセスを説明する。各ページのアクセスは、次のように行なう。検査実施部11が経路上の各辺に付与された「遷移情報」を正常リクエスト生成部15に渡す。正常リクエスト生成部15は、検査実施部11から渡された遷移情報と状態保存部16が保存する情報から、Webサイトに受理される正しいHTTPリクエストを生成する機能を持つ。正常リクエスト生成部15は、受け取った「遷移情報」によりHTTPリクエストを生成する。リクエスト送信部12は、正常リクエスト生成部15が生成したHTTPリクエストを送信する。レスポンス受信部13は、その応答を受信する。Webサイト(診断対象Webサーバ)は、Cookie等、各クライアントを識別するための情報をHTTPレスポンスに含めてクライアント端末に返す場合がある。これらの情報は、レスポンス受信部13が、HTTPレスポンス内から抽出し、状態保存部16中に格納する。
一連のページアクセス終了後、検査実施部11は、検査対象となる「対象辺」に付与されている遷移情報をパラメータとして正常リクエスト生成部15を呼び出し、検査リクエストの雛形となる正常なリクエストを生成する(S204)。検査実施部11は、その一部分を「擬似攻撃データ」に変更することで検査リクエストを生成する(S205)。
この「擬似攻撃データ」は、診断対象Webサーバ200上のWebアプリケーション内で生成されるバックエンドサーバ400への制御コマンド(コマンド文字列)が文法誤りを起こすような特殊な文字、例えばシングルクオート(‘)や改行コード(実際にはHTTPの規約に従い%0A等の文字列に置換される)で構成される。
このようにして検査実施部11は、生成した検査リクエストを、リクエスト送信部12を用いて診断対象Webサーバ200に送信する(S206)。
送信された検査リクエストは、診断対象Webサーバ200内に構築されたWebアプリケーションに渡される(S207)。
Webアプリケーション(診断対象Webサーバ200)は、検査リクエスト内に含まれている情報から、「必要に応じて」バックエンドサーバ400を操作する「コマンド文字列」(例えばSQL文)を生成し、それをバックエンドサーバ400に送信する(S208)。ここで、「必要に応じて」とは、Webアプリケーション(診断対象Webサーバ)は、検査リクエストを受信した場合でもコマンド文字列を生成しない場合があることを意味する。実施の形態2で後述するが、Webアプリケーションに「コマンド文字列」を発生させるリクエストを「コマンド文字列発生リクエスト」と呼ぶこととする。コマンド文字列が生成される際、もしWebアプリケーションにSQLインジェクション等の脆弱性が存在していた場合には、擬似攻撃データ内の特殊な文字により、生成される「コマンド文字列」は構文誤りを含むようになる。
先に説明したとおり、通信モニタ装置301は、診断対象Webサーバ200によってコマンド文字列が生成されたかどうかを検出するため、診断対象Webサーバ200とバックエンドサーバ400との間の通信を常時監視している(S209)。通信モニタ装置301の構文解析部32は、通信監視部31が傍受した通信データに含まれるバックエンドサーバ400制御用の「コマンド文字列」を検出して解析し、構文誤りの有無を検査する。構文解析部32は、構文誤りの有無を示す「構文誤り検出情報」を記憶装置(メモリ)に記録する。
診断装置101は、レスポンス受信部13により診断対象Webサーバ200からHTTPレスポンスを受信する(S210)。その後、診断装置101は、監視結果要求部14を通じて、通信モニタ装置301に、「構文誤り検出情報」を要求する要求情報を送信する(S211)。
通信モニタ装置301は、診断装置101からの要求情報に応答して、記憶装置(メモリ)に記録した「構文誤り検出情報」を監視結果応答部33を通じて診断装置101に送信する(S212)。
診断装置101の検査実施部11は、受信した「構文誤り検出情報」により構文誤りが発生していたと判定した場合、診断対象Webサーバ200に脆弱性が存在すると判定し、構文誤りが発生していなかった場合には、脆弱性無しと判定する(S213)。検査実施部11は、この脆弱性の判定結果を表示装置(図示していない)、プリンタ(図示していない)、あるいは磁気ディスク装置などの記憶装置に出力する。これにより検査実施者は、診断対象Webサーバ200に脆弱性が存在するかどうかを知ることができる。
なお、通信モニタ装置301は、「構文誤り検出情報」を診断装置101に送信した後、記憶装置に記憶した「構文誤り検出情報」の記録を消去する。
以上の動作を、サイト構造情報保存部17内に格納されたグラフ情報(サイト構造情報)の全ての辺に対し行うことで、診断対象Webサーバ200の検査を実施する。
本実施の形態1では、通信モニタ装置301の通信監視部31が診断対象Webサーバ200とバックエンドサーバ400間ネットワークに流れる通信を傍受することにより「コマンド文字列」を検出する方式を説明した。しかし、診断対象Webサーバ200から送信される「コマンド文字列」を傍受(検出)することができるのであれば、他の実現方法を用いても、もちろん構わない。「コマンド文字列」を検出する他の通信監視部31の実現方法として、例えば、バックエンドサーバ400上のログを監視する方法、バックエンドサーバ400へのプロキシとして動作する方法、診断対象Webサーバ200がバックエンドサーバ400に「コマンド文字列」を送信する際に利用するライブラリ呼び出しの際のパラメータをBSM(Basic Security Module)等の機構を利用して監視する方法を挙げることができる。
また、モニタする「コマンド文字列」がバックエンドサーバ400を操作するものでなくても本実施の形態1は有効である。例えば、診断対象Webサーバ200内に格納されているプログラムをWebアプリケーションが呼び出すために生成する「コマンド文字列」(他の機能を制御するための文字列)を監視させてもよい。その場合、通信監視部31は、診断対象Webサーバ200内のプログラム呼出の「コマンド文字列」を監視するように実装、配置する必要がある。この実現手段として、実施の形態5で後述するように、通信モニタ装置301の機能を実現するプログラムを診断対象Webサーバに組み込んで実行させてもよい。
以上のように、実施の形態1の脆弱性診断システム1000は、診断対象Webサーバ200とバックエンドサーバ400との通信を監視し、「コマンド文字列」の構文誤りを検出する通信モニタ装置301を備えたので、診断対象Webサーバ200からのレスポンスに変化が現れない場合であっても正確に脆弱性を検出することができる。
実施の形態2.
図7〜図13を用いて実施の形態2を説明する。実施の形態2は、複数のページ間にまたがった脆弱性の検出を可能にする実施形態である。実施の形態2のシステム構成は、図1の脆弱性診断システム1000と同様である。また、同一あるいは相当の機能部には同一の符号を用いて説明を省略する。
図7は、実施の形態2における診断装置102の構成を示す図である。実施の形態2の診断装置102は、実施の形態1の診断装置101に、さらに、識別文字列生成部18と、コマンド生起関係保存部19(一対情報格納部の一例)とを加えた構成である。
図8は、実施の形態2における通信モニタ装置302の構成を示す。通信モニタ装置302は、実施の形態1の通信モニタ装置301に、さらに、識別文字列確認部34を加えた構成である。以下に図9〜図13を用いて、本実施の形態2の動作を説明する。
本実施の形態2の場合も、実施の形態1と同様に、あらかじめ通信モニタ装置302を起動しておく必要がある。本実施の形態2における脆弱性の診断は、次の3つのフェーズを行なう。
(1)コマンド発生リクエスト調査フェーズ、
(2)コマンド反映リクエスト調査フェーズ、
(3)診断フェーズ
の3つである。
(1.コマンド発生リクエスト調査フェーズ)
はじめに、図9を用いて「コマンド発生リクエスト調査フェーズ」を説明する。診断装置102は、コマンド発生リクエスト調査フェーズを実行する。「コマンド発生リクエスト調査フェーズ」は、「コマンド文字列」を発生させるリクエストを調査するフェーズである。図9に示すように、「コマンド発生リクエスト調査フェーズ」では、診断装置102内の検査実施部11は、サイト構造情報保存部17に記録されている「サイト構造情報」に従い、正常リクエスト生成部15、リクエスト送信部12を用いて診断対象Webサーバ200にHTTPリクエストを送信する。それに対する診断対象Webサーバ200からのレスポンスを受信するごとに、検査実施部11は、通信モニタ装置302に問い合わせを行い、「コマンド文字列」が発生したかどうかを確認する。「サイト構造情報」中の「ある辺」(ある遷移情報)に対応するHTTPリクエストの送信結果として、「コマンド文字列」が発生した場合、検査実施部11は、その辺(その遷移情報)を、診断対象Webサーバ200にコマンド文字列を発生させる「コマンド発生遷移」として、コマンド生起関係保存部19に記憶する。例えば図9において、辺40に基づくHTTPリクエスト41によって診断対象Webサーバ200が「コマンド文字列」を発生した場合、辺40は「コマンド発生遷移」であり、HTTPリクエスト41は「コマンド発生リクエスト」である。
(2.コマンドに反映するリクエストを調査するフェーズ)
次に、診断装置102は「コマンド反映リクエスト調査フェーズ」に移行する。
「コマンド反映リクエスト調査フェーズ」とは、コマンド文字列に反映される文字列を有するリクエストを発見するフェーズである。図10、図11を用いて「コマンド反映リクエスト調査フェーズ」を説明する。図10は、「コマンド反映リクエスト調査フェーズ」を説明するフローチャートである。図11は、「コマンド反映リクエスト」と「コマンド発生リクエスト」との関係を説明する図である。最初に、検査実施部11はサイト構造情報保存部17から「ある特定の辺」(以下、特定辺という場合がある)を選択する(S301)。検査実施部11は、図11において、特定辺として、辺51を選択したとする。検査実施部11は、実施の形態1と同様に、トップページから順に「特定辺」の開始点となるページ(図11ではページ2)までアクセスする(S302、S303)。次に「特定辺」に付与されている遷移情報をパラメータとして正常リクエスト生成部15を呼び出し、正常リクエストを生成する(S304)。次に生成されたリクエストの一部を「調査データ」に置き換え、調査リクエストを生成する(S305)。
ここで、調査データを説明する。「調査データ」は、識別文字列生成部18によって生成された文字列である。図11の例では「ABC」が生成されたとする。識別文字列生成部18が生成する文字列は、各調査データを識別可能とするための文字列である。このような文字列の例を図12に示す。もちろん他の形式の文字列であっても構わない。ただし、診断対象Webサーバ200内で偶然生成される事が無いよう、ある程度複雑な文字列とする必要はある。
次に検査実施部11は、図11に示すように、リクエスト送信部12を用いて「調査リクエスト」を送信する(S306)。その後、コマンド生起関係保存部19からコマンド発生遷移を一つ選択し、先ほど選択した辺の接続先の頂点からコマンド発生遷移の開始点まで順にページアクセスを行い、最後にコマンド発生遷移に基づいたページアクセスを行う(S307)。図11の例では、検査実施部11は、コマンド発生遷移として、辺52を選択したとする。
本フェーズにおける通信モニタ装置302の動作について説明する。実施の形態1と同様、通信モニタ装置302は通信監視部31を通じて診断対象Webサーバ200からバックエンドサーバ400に送信される「コマンド文字列」を傍受し、内部に含まれている識別文字列を識別文字列確認部34によって抽出し、識別文字列の有無を記憶する。
診断装置102は、コマンド発生遷移に基づいたリクエストを送信し(S308)、それに対する診断対象Webサーバ200からのHTTPレスポンスをレスポンス受信部13により受信後(S309)、監視結果要求部14を通じて通信モニタ装置302に監視結果を要求する(S310)。通信モニタ装置302は、「識別文字列」の有無を監視結果応答部33を通じて診断装置102に返す。「識別文字列」が含まれていた場合、調査リクエストの元となった遷移情報を「コマンド反映遷移」として、コマンド発生遷移と対で、コマンド生起関係保存部19中に記憶する(S311)。図11において、辺52に基づくコマンド発生リクエスト54が発生させるコマンド文字列は「XYZ」を含み、「ABC」を含まない。よって、辺52は、辺51に対するコマンド発生遷移ではない。検査実施部11は、「特定辺」(コマンド反映遷移となるべき辺)に対して、すべてのコマンド発生遷移を調査する。図11の例では、辺53に基づくコマンド発生リクエスト55が「ABC」を含むコマンド文字列を発生させる。よって、辺53は、辺51に対するコマンド発生遷移である。このように辺51から生成される調査リクエスト(「ABCを含むリクエスト」)は、コマンド発生リクエスト55が診断対象Webサーバ200に発生させるコマンド文字列に自身の含む文字列「ABC」を反映させる。この場合の調査リクエスト(「ABCを含むリクエスト」)をコマンド発生リクエスト55に対してコマンド反映リクエストと呼ぶ。後述のように、診断装置102は、辺51(コマンド反映遷移)と辺53(コマンド発生遷移)とを、一対の組として記憶する。
以上の動作をサイト構造情報中の全ての辺、及びコマンド生起関係保存部19中の全てのコマンド発生遷移に対して実施後、次の診断フェーズに移行する。
(3.診断フェーズ)
次に、図13を用いて診断フェーズを説明する。「診断フェーズ」は、ページ間をまたがって脆弱性を検出するフェーズである。図13に示すように、診断フェーズではまず、検査実施部11が、コマンド生起関係保存部19(一対情報格納部の一例)に保存された、「コマンド反映遷移」(第1リクエスト生成用情報の一例)、「コマンド発生遷移」(第2リクエスト生成用情報の一例)の一対を選択する。図13に示すように、検査実施部11が、辺51である「コマンド反映遷移」(第1リクエスト生成用情報)、辺53である「コマンド発生遷移」(第2リクエスト生成用情報)の一対を選択したものとする。検査実施部11は、トップページを表す頂点(ページ1)から辺51である「コマンド反映遷移」の開始点となる頂点までページアクセスを順に実施する(図13の例ではページアクセスは1回である)。その後、検査実施部11は、辺51である「コマンド反映遷移」(第1リクエスト生成用情報)の情報に基づいた正常リクエスト(第1リクエストの一例)を正常リクエスト生成部15を用いて生成する。次に、検査実施部11は、生成された正常リクエスト(第1リクエスト)の識別文字列部分を、実施の形態1と同様に「特殊な文字」(検査用の文字列)に置き換えることで「診断リクエスト」(検査リクエスト)を生成し、リクエスト送信部12を通じて診断リクエスト(検査リクエスト)を診断対象Webサーバ200に送信する。
その後、検査実施部11は、対となっている辺53である「コマンド発生遷移」の開始点(図13ではページ5)までページアクセスを順に実施し、最後に辺53である「コマンド発生遷移」に基づいたページアクセスを行う。検査実施部11は、このアクセスに対するレスポンスを受信後、監視結果要求部14を介して通信モニタ装置302から「構文誤り検出情報」を取得して、「コマンド文字列」の構文誤りの有無を確認する。構文誤りが発生していた場合には、検査実施部11は、Webアプリケーション内の「コマンド反映リクエスト」(辺51から生成されるリクエスト)の処理を行う箇所に脆弱性があるとみなし、検査実施者に報告する。例えば、表示装置(図示していない)に警告を出力する。以上の動作を全ての「コマンド発生遷移」と「コマンド反映遷移」との対に対して行うことで診断を実施する。
このように、実施の形態1における脆弱性診断システムは、診断装置が、「コマンド文字列」を発生させる「コマンド文字列発生遷移」と「コマンド文字列発生遷移」の発生させる「コマンド文字列」に反映される内容を送信する「コマンド文字列反映遷移」とを一対としてあらかじめ識別して格納しておき、その後、検査を実施することにより、診断リクエスト(検査リクエスト)送信直後に「コマンド文字列」が発生しない場合でも、脆弱性の有無を検出できる。
実施の形態3.
図14は、実施の形態3の診断装置103の構成を表す図である。診断装置103は、図7に示した実施の形態2の診断装置102の構成に、さらに、サイト構造情報最適化部20を付加した構成である。このサイト構造情報最適化部20は、検査実施部11により呼び出され、あらかじめサイト構造情報保存部17中に格納されたサイト構造情報から、トップページを頂点とした最小木を構成し、最適化されたサイト構造情報として再びサイト構造情報保存部17に格納する機能を持つ。サイト構造情報の更新後の動作は、実施の形態2と同じである。
このように検査実施前に、与えられたサイト構造情報を最小木に変換しておくことで、コマンド反映リクエスト調査フェーズにかかる時間的コストを軽減できるという特長がある。
なお、サイト構造情報最適化部20は、実施の形態1にも適用可能であることは言うまでも無い。
実施の形態4.
図15、図16は、実施の形態4の診断装置104、通信モニタ装置304の構成を示す図である。
診断装置104は、図7に示す実施の形態2の診断装置102に、識別文字列送信部21を加えた構成である。また、本実施の形態4の通信モニタ装置304は、図8に示す実施の形態2の通信モニタ装置302に、識別文字列受信部35と識別文字列保存部36とを加えた構成である。診断装置104の識別文字列生成部18は、毎回異なる文字列を生成することを特徴としている。生成された識別文字列は識別文字列送信部21によって通信モニタ装置304に送信される。通信モニタ装置304は、識別文字列受信部35を通じて識別文字列を受信し、識別文字列保存部36中に保存する。識別文字列確認部34は、識別文字列保存部36中に格納された識別文字列が「コマンド文字列」中にあるかどうかを監視する。
以上のように、毎回異なる識別文字列を生成し、通信モニタ装置304で監視させることで、過去に投入した識別文字列が「コマンド文字列」に再び現れてしまっても誤検出をおこす恐れがなくなる、という特長がある。
実施の形態5.
図17〜図19を用いて実施の形態5を説明する。実施の形態5は、以上の実施の形態で説明した通信モニタ装置の動作を、プログラム及びプログラムを記録した記録媒体により実施する実施形態である。通信モニタ装置の動作を実行するプログラムは、コンピュータである診断対象Webサーバ200に組み込まれて実行されることによりコマンド文字列の生成を監視しても構わない。
前記の実施の形態においては、通信モニタ装置における「〜部」として示した各構成要素の動作は互いに関連しており、動作の関連を考慮しながら、コンピュータに実施させる一連の処理(プログラム)に置き換えることができる。各構成要素の動作を一連の処理に置き換えることにより、コマンド文字列監視プログラムの実施形態として把握することができる。また、このコマンド文字列監視プログラムを、コンピュータ読み取り可能な記録媒体に記録させることで、プログラムを記録したコンピュータ読み取り可能な記録媒体の実施形態とすることができる。
図17は、図3、図8、図16等に示した通信モニタ装置の通信監視部31の動作、構文解析部32の動作、及び監視結果応答部303の動作という一連の動作をコンピュータに実行させる一連の処理に置き換えたフローチャートである。
S401は、診断対象Webサーバ200(サーバ装置)の脆弱性を検査する診断装置(検査装置)が送信したリクエストを受信した診断対象Webサーバ200がバックエンドサーバ400(他の機能の一例)を制御する文字列であるコマンド文字列を生成するかどうか監視してコマンド文字列を検出する処理である。通信監視部31(コマンド文字列検出部)の動作に対応する。
S402は、コマンド文字列が検出された場合に、検出されたコマンド文字列に構文誤りがあるかどうかを解析して構文誤りの有無を示す構文誤り検出情報を記憶する処理である。構文解析部32の動作に対応する。
S403は、記憶された構文誤り検出情報を要求する要求情報に応答して、記憶された構文誤り検出情報を送信する処理である。監視結果応答部33(応答部)の動作に対応する。
プログラムの実施の形態及びプログラムを記録したコンピュータ読み取り可能な記録媒体の実施の形態は、すべてコンピュータで動作可能なプログラムにより構成することができる。
図18は、図1の診断対象Webサーバ200の外観の一例を示す図であり、コンピュータシステムである診断対象Webサーバ200がコマンド文字列監視プログラムを実装している場合を想定する図である。図18において、コンピュータシステム800である診断対象Webサーバ200は、システムユニット830、液晶ディスプレイ813、キーボード(K/B)814、マウス815、コンパクトディスク装置(CDD)818、プリンタ819を備え、これらはケーブルで接続されている。また、コンピュータシステム800は、ネットワークを介して診断装置101、バックエンドサーバ400と接続している。
図19は、図18のコンピュータシステム800のハードウェア構成図である。図19において、コンピュータシステム800は、プログラムを実行するCPU(Central Processing Unit)810を備えている。CPU810は、バス825を介してROM811、RAM812、液晶ディスプレイ813、K/B814、マウス815、通信ボード816、FDD817、CDD818、プリンタ819、及び磁気ディスク装置820と接続されている。
磁気ディスク装置820には、オペレーティングシステム(OS)821、ウィンドウシステム822、プログラム群823、ファイル群824が記憶されている。プログラム群823は、CPU810、OS821、ウィンドウシステム822により実行される。
上記プログラム群823には、Webアプリケーションプログラム、コマンド文字列監視プログラム等が格納されている。これらのプログラムは、CPU810により読み出され実行される。
「構文誤り検出情報」はRAM812に記憶される。また、ファイル群824には、RAM812に記憶された「構文誤り検出情報」などをファイルとして格納しても構わない。
通信モニタ装置の構成を示す図3、図8、図16等において「〜部」として説明したものは、ROM811に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、ハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
プログラムの実施の形態及びプログラムを記録したコンピュータ読み取り可能な記録媒体の実施の形態における各処理は、プログラムで実行されるが、このプログラムは、前述のようにプログラム群823に記録されている。そして、プログラム群823からCPU810に読み込まれ、CPU810によって、プログラムの各処理が実行される。また、ソフトウェア、あるいはプログラムは、ROM811に記憶されたファームウェアで実行されても構わない。あるいは、ソフトウェアとファームウェアとハードウェアの組み合わせでプログラムを実行しても構わない。
実施の形態5のコマンド文字列監視プログラムは、診断対象Webサーバ200がコマンド文字列を生成するかどうか監視してコマンド文字列を検出し、検出されたコマンド文字列に構文誤りがあるかどうかを解析して構文誤りの有無を示す構文誤り検出情報を記憶するとともに、記憶された構文誤り検出情報を要求する要求情報に応答して、記憶された構文誤り検出情報を送信する一連の処理を実行するので、リクエストに対応する応答レスポンスに脆弱性の存在が現れない場合であっても、脆弱性を検出することが可能になる。
以上の実施の形態では、通信モニタ装置によりWebアプリケーションとバックエンドサーバとの間の通信を監視するシステムを説明した。このシステムでは、バックエンドサーバのログを監視しても良いし、バックエンドサーバのプロキシとして通信を監視しても良いし、Webアプリケーションがバックエンドサーバを呼び出すためのライブラリ呼出を監視しても良いし、バックエンドサーバでなく、例えばOSの機能を呼び出すための「コマンド文字列」を監視してもよい。
以上の実施の形態では、通信モニタにWebアプリケーションからバックエンドサーバに渡される「コマンド文字列」の構文誤りを検出する構文解析手段を含む通信モニタ装置を説明した。また、通信モニタ装置による構文誤り検出情報に基づいて、脆弱性の判定を行う診断装置を説明した。また、サイト構造情報保存手段によりページ間のつながりやページ間の移動に必要なリクエストを保持する診断装置を説明した。
以上の実施の形態では、最初に正常なWebアクセスを行って、Webアプリケーションとバックエンドサーバとの通信が発生するWebアクセスを特定するシステムを説明した。また、正常なWebアクセスの一部を改変して送信し、その後上記Webアクセスを行い、「コマンド文字列」の内容を解析することで、「コマンド文字列」に影響を与えるWebアクセスを特定するシステムを説明した。また最後に上記Webアクセスの対に対して脆弱性診断を実施するシステムを説明した。
以上の実施の形態では、サイト構造情報最適化手段により、与えられたサイト構造情報を最小木に変換する診断装置を説明した。
以上の実施の形態では、毎回異なる識別文字列を生成し、通信モニタ中に記憶させるシステムを説明した。
実施の形態1における脆弱性診断システム1000の構成図。 実施の形態1における診断装置101の構成図。 実施の形態1における通信モニタ装置301の構成図。 実施の形態1における脆弱性診断の前段階を示す図。 実施の形態1における脆弱性診断システム1000の動作を説明する図。 実施の形態1における脆弱性診断システム1000の動作を説明するフローチャート。 実施の形態2における診断装置102の構成図。 実施の形態2における通信モニタ装置302の構成図。 実施の形態2におけるコマンド発生リクエスト調査フェーズを説明する図。 実施の形態2におけるコマンド反映リクエスト調査フェーズを説明するフローチャート。 実施の形態2におけるコマンド反映リクエスト調査フェーズを説明する図。 実施の形態2における調査用文字列を示す図。 実施の形態2における診断フェーズを説明する図。 実施の形態3における診断装置103の構成図。 実施の形態4における診断装置104の構成図。 実施の形態4における通信モニタ装置304の構成図。 実施の形態5におけるコマンド文字列監視プログラムの処理を示すフローチャート。 実施の形態5におけるコンピュータシステム800の外観。 実施の形態5におけるコンピュータシステム800のハードウェア構成図。 従来技術を示す図。
符号の説明
11 検査実施部、12 リクエスト送信部、13 レスポンス受信部、14 監視結果要求部、15 正常リクエスト生成部、16 状態保存部、17 サイト構造情報保存部、18 識別文字列生成部、19 コマンド生起関係保存部、20 サイト構造情報最適化部、21 識別文字列送信部、31 通信監視部、32 構文解析部、33 監視結果応答部、34 識別文字列確認部、35 識別文字列受信部、36 識別文字列保存部、40 辺、41 HTTPリクエスト、51,52,53 辺、54,55 コマンド発生リクエスト、101,102,103,104 診断装置、111 検査リクエスト生成部、200 診断対象Webサーバ、301,302,304 通信モニタ装置、400 バックエンドサーバ、800 コンピュータシステム、810 CPU、811 ROM、812 RAM、813 液晶ディスプレイ、814 キーボード、815 マウス、816 通信ボード、817 FDD、818 CDD、819 プリンタ、820 磁気ディスク装置、821 OS、822 ウィンドウシステム、823 プログラム群、824 ファイル群、830 システムユニット、1000 脆弱性診断システム。

Claims (3)

  1. 所定のリクエストを受信した場合に他の機能を制御する文字列であるコマンド文字列を所定の構文に基づいて生成するサーバ装置の脆弱性を判定する脆弱性判定システムにおいて、
    所定の文字列を含めることが可能なリクエストであって前記サーバ装置へ送信される第1リクエストを生成する元となる第1リクエスト生成用情報と、第1リクエストが所定の文字列を含む場合に第1リクエストの後に前記サーバ装置へ送信されることにより第1リクエストが含む所定の文字列と同一の文字列を含むコマンド文字列を前記サーバ装置に生成させる第2リクエストを生成する元となる第2リクエスト生成用情報とを一対として格納する一対情報格納部と、
    前記一対情報格納部が格納する一対のうちの第1リクエスト生成用情報から第1リクエストを生成し、第2リクエスト生成用情報から第2リクエストを生成する正常リクエスト生成部と、
    前記正常リクエスト生成部が生成した第1リクエストに前記所定の文字列と異なるとともに前記サーバ装置の脆弱性を検査する検査用の文字列を含めて検査リクエストを生成し、生成した検査リクエストと前記正常リクエスト生成部が生成した第2リクエストとを、検査リクエスト、第2リクエストの順で前記サーバ装置に送信する検査リクエスト生成部と
    を備えた検査装置と、
    前記サーバ装置がコマンド文字列を生成するかどうか監視してコマンド文字列を検出するコマンド文字列検出部と、
    前記コマンド文字列検出部がコマンド文字列を検出した場合に、検出されたコマンド文字列に構文誤りがあるかどうかを解析して構文誤りの有無を示す構文誤り検出情報をメモリに記憶する構文解析部と、
    前記構文解析部が前記メモリに記憶した構文誤り検出情報を要求する要求情報に応答して、前記メモリに記憶された構文誤り検出情報を送信する応答部と
    を備えた監視装置と
    を備え、
    前記検査装置の検査リクエスト生成部は、
    前記監視装置の前記構文解析部が前記メモリに記憶した構文誤り検出情報を前記監視装置に要求することにより、前記監視装置の前記応答部から構文誤り検出情報を取得し、取得した構文誤り検出情報に基づいて、前記サーバ装置が脆弱かどうかを判定することを特徴とする脆弱性判定システム。
  2. 所定のリクエストを受信した場合に他の機能を制御する文字列であるコマンド文字列を所定の構文に基づいて生成するサーバ装置の脆弱性を検査する検査装置において、
    所定の文字列を含めることが可能なリクエストであって前記サーバ装置へ送信される第1リクエストを生成する元となる第1リクエスト生成用情報と、第1リクエストが所定の文字列を含む場合に第1リクエストの後に前記サーバ装置へ送信されることにより第1リクエストが含む所定の文字列と同一の文字列を含むコマンド文字列を前記サーバ装置に生成させる第2リクエストを生成する元となる第2リクエスト生成用情報とを一対として格納する一対情報格納部と、
    前記一対情報格納部が格納する一対のうちの第1リクエスト生成用情報から第1リクエストを生成し、第2リクエスト生成用情報から第2リクエストを生成する正常リクエスト生成部と、
    前記正常リクエスト生成部が生成した第1リクエストに前記所定の文字列と異なるとともに前記サーバ装置の脆弱性を検査する検査用の文字列を含めて検査リクエストを生成し、生成した検査リクエストと前記正常リクエスト生成部が生成した第2リクエストとを、検査リクエスト、第2リクエストの順で前記サーバ装置に送信する検査リクエスト生成部と
    を備えたことを特徴とする検査装置。
  3. 前記検査リクエスト生成部は、
    前記サーバ装置がコマンド文字列を生成するかどうか監視してコマンド文字列を検出した場合に検出したコマンド文字列に構文誤りがあるかどうかを解析して構文誤りの有無を示す構文誤り検出情報を記憶する監視装置から構文誤り検出情報を取得し、取得した構文誤り検出情報に基づいて、前記サーバ装置が脆弱かどうかを判定することを特徴とする請求項2記載の検査装置。
JP2005372678A 2005-12-26 2005-12-26 脆弱性判定システム及び検査装置 Expired - Fee Related JP4745819B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005372678A JP4745819B2 (ja) 2005-12-26 2005-12-26 脆弱性判定システム及び検査装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005372678A JP4745819B2 (ja) 2005-12-26 2005-12-26 脆弱性判定システム及び検査装置

Publications (2)

Publication Number Publication Date
JP2007172517A JP2007172517A (ja) 2007-07-05
JP4745819B2 true JP4745819B2 (ja) 2011-08-10

Family

ID=38298957

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005372678A Expired - Fee Related JP4745819B2 (ja) 2005-12-26 2005-12-26 脆弱性判定システム及び検査装置

Country Status (1)

Country Link
JP (1) JP4745819B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009129128A (ja) * 2007-11-22 2009-06-11 Fujitsu Ltd プログラム変換プログラム,処理方法,および処理装置
CN101964025B (zh) * 2009-07-23 2016-02-03 北京神州绿盟信息安全科技股份有限公司 Xss检测方法和设备
CN112106048A (zh) * 2018-05-04 2020-12-18 谷歌有限责任公司 检测客户端模板系统的注入漏洞
US11223650B2 (en) 2019-05-15 2022-01-11 International Business Machines Corporation Security system with adaptive parsing
JP7484453B2 (ja) 2020-06-08 2024-05-16 富士通株式会社 情報処理プログラム、情報処理装置、情報処理システム及び情報処理方法
JP6942277B1 (ja) * 2021-03-29 2021-09-29 株式会社ユービーセキュア セキュリティテストシステム
CN114143047A (zh) * 2021-11-17 2022-03-04 湖北天融信网络安全技术有限公司 漏洞检测方法、装置、终端设备、Web服务器及存储介质
JP2023094338A (ja) * 2021-12-23 2023-07-05 エムオーテックス株式会社 脆弱性診断装置、脆弱性診断装置の制御方法および脆弱性診断プログラム
JP7390070B1 (ja) * 2022-09-20 2023-12-01 株式会社エーアイセキュリティラボ ウェブサイトを検査するためのシステム、方法、及びプログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004164617A (ja) * 2002-11-12 2004-06-10 Microsoft Corp クロスサイトスクリプティング脆弱性の自動検出

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004164617A (ja) * 2002-11-12 2004-06-10 Microsoft Corp クロスサイトスクリプティング脆弱性の自動検出

Also Published As

Publication number Publication date
JP2007172517A (ja) 2007-07-05

Similar Documents

Publication Publication Date Title
JP4745819B2 (ja) 脆弱性判定システム及び検査装置
US8196048B2 (en) Associating website clicks with links on a web page
US8326922B2 (en) Method for server-side logging of client browser state through markup language
US8281401B2 (en) System for detecting vulnerabilities in web applications using client-side application interfaces
US8676966B2 (en) Detecting and monitoring server side states during web application scanning
US9003235B2 (en) Indicating coverage of web application testing
US20180107821A1 (en) Code instrumentation for runtime application self-protection
US20110173178A1 (en) Method and system for obtaining script related information for website crawling
AU2004217115C1 (en) Associating website clicks with links on a web page
EP2073121A2 (en) Analyzer and analyzing system, and computer program product
WO2011009295A1 (zh) Xss检测方法和设备
US9754028B2 (en) Automatic crawling of encoded dynamic URLs
CN103546330A (zh) 一种浏览器兼容性检测方法、装置及系统
CN113114680B (zh) 用于文件上传漏洞的检测方法和检测装置
WO2005043300A2 (en) Computer language interpretation and optimization for server testing
JP5151696B2 (ja) ユニフォームリソースロケータ情報を書き換えるプログラム
WO2013054248A1 (en) Generating a predictive data structure
JP4619867B2 (ja) サーバ診断装置及びサーバ監視装置及びサーバ診断プログラム
CN116450533B (zh) 用于应用程序的安全检测方法、装置、电子设备和介质
CN110457900B (zh) 一种网站监测方法、装置、设备及可读存储介质
JP4487725B2 (ja) 分析データ処理システム及び分析装置
US7409591B2 (en) Method and system for managing programs for web service system
CA2538504C (en) Method and system for obtaining script related information for website crawling
JP5288945B2 (ja) 情報処理装置及びプログラム
CN113703780A (zh) 反编译检测、网页资源数据发送方法、装置、设备及介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080528

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110204

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110308

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110414

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110510

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110512

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140520

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees