(57)【特許請求の範囲】
【請求項１】
ウェブページのＸＳＳ脆弱性を検出するＸＳＳ検出方法であって、
ウェブページパラメータ値ペア集合特定手段がウェブページの受け取り可能なパラメータ値ペアの集合を特定する処理と、
集合に含まれる各々のパラメータ値ペアについて、
テスト用ＵＲＬ組立手段が専用スクリプトが挿入されたパラメータ値ペアを構成する処理と、
前記テスト用ＵＲＬ組立手段が専用スクリプトが挿入されたパラメータ値ペアに基づいてウェブページに対応するＵＲＬを組み立てる処理と、
通信手段が組み立てられたＵＲＬに対応する動的ウェブページコンテンツを取得する処理と、
シミュレート手段が取得した動的ウェブページコンテンツの実行をシミュレートして、専用スクリプトが実行された場合にはウェブページにおけるパラメータの処理がＸＳＳ脆弱性を有すると判定する処理と、
を有し、
ウェブページに対応するＵＲＬを組み立てる処理では、パラメータ値ペアの順番を変更すること、または、前記専用スクリプトの前にｈｔｍｌ要素の終了タグあるいは特別なコードを追加することで、複数のＵＲＬを組み立て、
動的ウェブページコンテンツを取得する処理、および、動的ウェブページコンテンツの実行をシミュレートする処理はそれぞれ、前記複数のＵＲＬの各々に対して実施されること
を特徴とするＸＳＳ検出方法。
【請求項２】
前記シミュレート手段が取得した動的ウェブページコンテンツの実行をシミュレートする処理においては、スクリプト解析エンジンを用いてウェブページコンテンツの実行がシミュレートされ、
前記スクリプト解析エンジンは専用スクリプトが起動されるか否かに基づいてＸＳＳ脆弱性の存在を判定するよう構成されていること、
を特徴とする請求項１に記載のＸＳＳ検出方法。
【請求項３】
専用スクリプトは警告関数であること、
を特徴とする請求項１に記載のＸＳＳ検出方法。
【請求項４】
記録手段がパラメータ値ペアの集合に含まれるパラメータの各々についてＸＳＳ脆弱性を有するか否かを記録する処理、を更に含むこと、
を特徴とする請求項１に記載のＸＳＳ検出方法。
【請求項５】
ウェブページのＸＳＳ脆弱性を検出するＸＳＳ検出装置であって、
ウェブページによって受け取られるパラメータ値ペアの集合を特定するウェブページパラメータ値ペア集合特定手段と、
パラメータ値ペアの集合に含まれるパラメータ値ペアの各々について、テスト用ＵＲＬを組み立て、当該テスト用ＵＲＬの組み立ての間に専用スクリプトをパラメータ値に挿入する、テスト用ＵＲＬ組立手段と、
テスト用ＵＲＬをウェブサーバに送信し、当該ウェブサーバから返されてくるウェブページコンテンツを受信する通信手段と、
ウェブページコンテンツの実行をシミュレートし、専用スクリプトが実行されたか否かに基づいて、対応するパラメータにおけるＸＳＳ脆弱性の存在を判定するシミュレート手段と、を有し、
前記テスト用ＵＲＬ組立手段は、特定のパラメータ値についてテスト用ＵＲＬを組み立てる際に、パラメータ値ペアの順番を変更すること、または、前記専用スクリプトの前にｈｔｍｌ要素の終了タグあるいは特別なコードをＵＲＬに挿入することで、複数のＵＲＬを組み立てるよう構成されており、
組み立てられた各々のＵＲＬについてＸＳＳ脆弱性を検出するために、組み立てられた各々のＵＲＬが前記通信手段に送られること、
を特徴とするＸＳＳ検出装置。
【請求項６】
スクリプト解析エンジンを更に有し、
シミュレート手段は、ウェブページコンテンツの実行をシミュレートする際、専用スクリプトを実行し、
スクリプト解析エンジンは、ＸＳＳ脆弱性が対応するパラメータに存在するか否かを、専用スクリプトが起動されたか否かに基づいて判定すること、
を特徴とする請求項５に記載のＸＳＳ検出装置。
【請求項７】
専用スクリプトが警告関数であること、
を特徴とする請求項５に記載のＸＳＳ検出装置。
【請求項８】
パラメータ値ペアの集合に含まれる各々のパラメータがＸＳＳ脆弱性を有するか否かを記録する記録手段を更に有すること、
を特徴とする請求項５に記載のＸＳＳ検出装置。
【請求項９】
請求項５に記載のＸＳＳ検出装置を有するウェブサイトセキュリティスキャンシステム。
【請求項１０】
請求項５に記載のＸＳＳ検出装置を有するウェブスキャンシステム。
【請求項１１】
コンピュータにロードされ、当該コンピュータ上で動作させられる際に、請求項１に記載のＸＳＳ検出方法の処理を実行するように作られた命令から成るプログラム。
【請求項１２】
コンピュータにロードされ、当該コンピュータ上で動作させられる際に、請求項１に記載のＸＳＳ検出方法の処理を実行するように作られた命令を格納する記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、セキュリティスキャンおよびウェブサイト解析の技術分野に関するものであり、特に、ウェブサイト中のウェブページにおけるＸＳＳ（Cross Site Scripting：クロスサイトスクリプト）脆弱性の有無を検出する方法および装置に関する。
【背景技術】
【０００２】
ＸＳＳが１９９０年代に明らかになって以来、その発見および悪用が多くの関心を引いてきた。ＸＳＳ（すなわちクロスサイトスクリプト）は、ウェブサイト脆弱性を利用することによって情報をユーザから盗む手口の１つである。ウェブサイトをナビゲート中にインスタントメッセージソフトウェアを使用したり、電子メールを読んだりする時、ユーザは通常、その中のリンクをクリックする。ユーザがリンクをクリックした際、ウェブサーバが当該リンクに対応するウェブページを生成する。しかし、悪意を持ったハッカーが悪意のあるコードをリンクに挿入しており、しかもウェブサーバにＸＳＳ脆弱性があって、悪意のあるコードにフィルタがかからない場合、ウェブサーバは悪意のあるコードを含んだウェブページを生成してしまうが、当該ウェブページは、ウェブサイトによって生成された正当なウェブページと見なされてしまう。その結果、悪意のあるコードがユーザのコンピュータにおいて実行され、ユーザのローカルセキュリティメカニズムを回避してユーザ情報を盗み出し、さらには、ユーザのマシンを遠隔制御する権限を取得して、当該ユーザのマシンからトロイ攻撃を開始することさえある。ハッカーは通常、リンクのコード化にあたっては、ユーザにリンクの正当性を疑われないように、１６進符号化（または他の符号化方法）を用いる。ＸＳＳは現在、インターネット内の至る所に存在し、直接ユーザを重大な脅威にさらしている。近年、ＸＳＳはバッファオーバーフローを抜いて、最も広く知られたセキュリティ脆弱性となった。ウェブサイトの約６８％以上がＸＳＳ脆弱性を有する。
【０００３】
ＸＳＳ検出は、検出手法から見て、遠隔からの能動的検出とローカルな受動的検出とに分けられる。ローカルな受動的検出の技術は主にブラウザに用いられる。現在、ＩＥ８とＦｉｒｅｆｏｘの“noscript”プラグインとの両方でＸＳＳ検出がサポートされている。遠隔からの能動的検出は主に、遠隔型脆弱性スキャナなどの検出ツールに用いられる。本発明は、遠隔からの検出技術に関する改良に主眼を置く。
【０００４】
セキュリティに関する知識が豊かになると共に、ウェブサイトプログラマは、ユーザによるパラメータ入力に何らかの特別な処理を実施する場合がある。そうした特別な処理は、ＸＳＳ脆弱性の遠隔スキャンにいくつかの問題を生じさせる。特に、遠隔スキャンに誤警報が生じ易くなる、という問題である。
ウェブサーバのＸＳＳ脆弱性の遠隔スキャンの手法は、いくつか提案されている。米国特許第７３４３６２６号には、テスト対象のウェブサイトのＸＳＳ脆弱性の自動検出を行う方法およびシステムが開示されており、そこでは、以下の処理が行われる。先ず、ウェブサイトのウェブページについて、全てのパラメータ値ペアを探し出す。そして、各々のパラメータ値ペアについて、以下を行う。専用のトレーサ値を構成し、パラメータ値ペアをウェブサーバに送ってウェブページを要求する。返されてくるウェブページに専用トレーサ値が見つかれば、それはウェブページがＸＳＳ脆弱性を有することを意味する。その場合、専用トレーサ値が現れるウェブサイト内の位置に基づいて、スクリプトを含んだ第２の専用トレーサ値を構成する。そして、第２の専用トレーサ値をウェブサーバに送り、返されて来たウェブページがスクリプトを実行するか否かに基づいて、当該ウェブページがＸＳＳ脆弱性を有するか否か判定する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第７３４３６２６号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、米国特許第７３４３６２６号に開示された方法では、パラメータ値ペアを２回送る必要があり、その結果、実行効率が低くなる。加えて、この方法では、最初の専用トレーサ値が現れる位置に基づいて、スクリプトを含んだ第２の専用トレーサ値を構成する必要がある。また、ネットワーク技術の進歩によって、ＸＳＳ脆弱性が別の位置に現れるようになることも考えられる。そうなった場合、この方法ではＸＳＳ脆弱性を包括的に検出することはできないであろう。
【０００７】
更に、いくつかのオープンソースソフトウェアでは、遠隔からＸＳＳ脆弱性を検出する別の方法が開示されている。その原理はおおよそ以下の通りである。検出対象の特定のウェブページについて、先ず、ウェブページが受け取るパラメータ値ペアを特定する。それから、各々のパラメータについて、専用の値を構成し、ウェブサーバに対し、特別に構成したパラメータ値ペアを利用するウェブページを要求する。そして最後に、返されてくる情報に基づいて脆弱性が存在するか否かを判定する。返されてくる情報を解析する方法は、正規表現に基づくマッチングを採用している。オープンソースソフトウェアの検出方法では、返されてくる情報の解析は、特徴づけられた文字列に基づく正規表現マッチングを行ってＸＳＳ脆弱性が存在するか否かを判定する、というやり方で実施されるが、これだと、場合によっては、誤警報や漏れが生じることがある。さらに、ＤＯＭ型のＸＳＳ脆弱性の場合、こうした方法では、脆弱性が起動可能か否かの判定ができない。例えば、返されてくるウェブページが、構成された専用の値を有していたとしても、この専用の値は実行不可能である。それにも関わらず、上記の方法では、当該ウェブページはＸＳＳ脆弱性を有すると見なされる。しかし、実際はそうではない。
【０００８】
以上から、本技術分野では、完全かつ効果的にＸＳＳ脆弱性を検出することのできる方法や装置が未だ存在しないことが分かるであろう。
そこで、本発明は、オープンソースソフトウェアにおいて提案された方法を改良することで、「完全に自動化された、包括的かつ効果的なやり方でのＸＳＳ脆弱性検出」という課題の解決法を提供しようとするものである。
【０００９】
本発明の出願人は、ＸＳＳ脆弱性の最終的な結果は、被害を受けたマシンにおいて予想外のスクリプトコードが実行されることである、と認識している。よって、JavaScript解析エンジンを利用して、被害を受けたマシンにおいて予想外のスクリプトコードが実行されたか否かを判定すれば、ＸＳＳ脆弱性を包括的に検出することができる。本発明は、こうした思想に基づいて提案される。
【課題を解決するための手段】
【００１０】
本発明の１つの様態として、ウェブページのＸＳＳ脆弱性を検出するＸＳＳ検出方法を提供する。当該検出方法は、ウェブページが受け取り可能なパラメータ値ペアの集合を特定する処理と、集合に含まれる各々のパラメータ値ペアについて、専用スクリプトが挿入されたパラメータ値ペアを構成する処理と、専用スクリプトが挿入されたパラメータ値ペアに基づいてウェブページに対応するＵＲＬを組み立てる処理と、組み立てられたＵＲＬに対応する動的ウェブページコンテンツを取得する処理と、
取得した動的ウェブページコンテンツの実行をシミュレートして、専用スクリプトが実行された場合にはウェブページにおけるパラメータの処理がＸＳＳ脆弱性を有すると判定する処理と、を有する。
【００１１】
また、本発明の１つの実施の形態では、取得した動的ウェブページコンテンツの実行をシミュレートする処理においては、スクリプト解析エンジンを用いてウェブページコンテンツの実行がシミュレートされ、スクリプト解析エンジンは専用スクリプトが起動されるか否かに基づいてＸＳＳ脆弱性の存在を判定するよう構成されていること、とする。
また、本発明の別の様態として、ウェブページのＸＳＳ脆弱性を検出するＸＳＳ検出装置を提供する。当該検出装置は、ウェブページによって受け取られるパラメータ値ペアの集合を特定するウェブページパラメータ値ペア集合特定手段と、パラメータ値ペアの集合に含まれるパラメータ値ペアの各々について、テスト用ＵＲＬを組み立て、当該テスト用ＵＲＬの組み立ての間に専用スクリプトをパラメータ値に挿入する、テスト用ＵＲＬ組立手段と、テスト用ＵＲＬをウェブサーバに送信し、当該ウェブサーバから返されてくるウェブページコンテンツを受信する通信手段と、ウェブページの実行をシミュレートし、専用スクリプトが実行されたか否かに基づいて、対応するパラメータにおけるＸＳＳ脆弱性の存在を判定するシミュレート手段と、を有する。
【００１２】
また、本発明の１つの実施の形態によるＸＳＳ検出装置では、スクリプト解析エンジンを更に有し、シミュレート手段は、ウェブページコンテンツの実行をシミュレートする際、当該スクリプト解析エンジンを用いて専用スクリプトを実行し、スクリプト解析エンジンは、ＸＳＳ脆弱性が対応するパラメータに存在するか否かを、専用スクリプトが起動されたか否かに基づいて判定すること、とする。
【発明の効果】
【００１３】
本発明は、専用スクリプトを含むパラメータ値を有するＵＲＬを組み立て、当該専用スクリプトがＵＲＬから返された動的ウェブページコンテンツによって起動されるか否かを検出することで、当該動的ウェブページがＸＳＳ脆弱性を有するか否かを判定する。単に動的ウェブページに対応する内容が現れるか否かの判定による従来の特徴マッチングによる手法と比較して、本発明は精度が高く、より包括的な検出が可能となる。
【００１４】
本発明の上記以外の効果および利点は、本明細書のこれ以降の部分における好適な実施の形態の詳細な説明を読めば、当業者には明らかであろう。図面は、単に好適な実施の形態を示す目的で用いられるものであり、本発明の範囲を限定するものではない。全図面を通じて、同じ参照符号は同じ構成要素を表しており、参照番号に文字が続く場合、それは同じ構成要素が複数あることを示し、これら複数ある構成要素全体に言及する場合、末尾の文字は省略される。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施の形態によるウェブページＸＳＳ脆弱性検出方法のフローチャートである。
【図２】ウェブサーバの特定のパラメータの処理がＸＳＳ脆弱性を有するか否かを判定する、本発明の実施の形態による判定方法のフローチャートである。
【図３】ウェブページのＸＳＳ脆弱性を検出するための、本発明の実施の形態によるＸＳＳ検出装置を示す概略図である。
【発明を実施するための形態】
【００１６】
以下、図面と特定の実施の形態との組み合わせを参照しながら、本発明について更に詳しく説明する。
図１は、本発明の実施の形態によるウェブページにおけるＸＳＳ脆弱性検出方法のフローチャートである。
先ず、ステップＳ１１０において、ＸＳＳ検出の対象となるウェブページのＵＲＬを取得する。次いで、ステップＳ１２０において、ウェブページで受け取り可能なパラメータ値ペアの集合を特定する。ＸＳＳの原理から考えて、ＸＳＳ脆弱性を有するウェブページは、ウェブサーバによって動的に生成されるウェブページであり、そのため、通常、ＨＴＴＰプロトコルに従って、いくつかのパラメータ、および、それらに対応する値を受け取ることができる。例えば、検出対象のウェブページのＵＲＬが“http://www.test.com/test.asp?id=１&name=test”であれば、ウェブページが受け取ることのできるパラメータは、idおよびnameを含む、と特定される。動的ＵＲＬが受け取ることのできるパラメータの集合を特定する方法は様々であり、例えば、動的ウェブページへのアクセス用のＵＲＬの詳細な内容を監視する方法や、ＨＴＴＰプロトコル等に従ってウェブサーバに送信されるＦＯＲＭの内容を検出する方法等がある。これら方法は全て、本発明の保護範囲に含まれる。
【００１７】
ステップＳ１２０においてパラメータ値ペアの集合を取得した後、ステップＳ１３０では、当該集合に含まれるパラメータ値ペアのうち最初のものを選択する。その次のステップＳ１４０では、選択したパラメータ値ペアの値を書き換えて、テスト用ＵＲＬを組み立てる。具体的には、本発明の実施の形態では、専用のJavaScriptを当該パラメータ値に埋め込む。動的ウェブページがＸＳＳ脆弱性を有する場合、埋め込まれたJavaScriptは当該ウェブサーバで処理されることはなく、返されてくる動的ウェブページコンテンツの中に存在する。本発明では、JavaScriptが動的ウェブページの中に存在して実行されるか否かを監視し、その結果に基づいて、当該ウェブページがＸＳＳ脆弱性を有するか否かを判定する。埋め込んだJavaScriptと動的ウェブページ内の既存のJavaScriptとの衝突を回避するために、埋め込むJavaScriptはユニークなものとする。例えば、ユニークなスクリプトパラメータコンテンツから成るものとする。さらに、JavaScriptの警告関数が動作して、ファイルコンテンツに他の影響を与えない形で、メッセージボックスを表示する。つまり、本発明の別の実施の形態では、選択したパラメータ値ペアに警告関数を埋め込む。
【００１８】
例えば、上で挙げた“http://www.test.com/test.asp?id=1&name=test”というＵＲＬでは、パラメータ「id」の変更時に、“<script>alert(0)</script>”という関数を、対応するパラメータ値に埋め込むことができる。その結結、“http://www.test.com/test.asp?id=1<script>alert(0)</script>&name=test”という内容に作られたＵＲＬが得られる。
【００１９】
別な形では、ＨＴＴＰプロトコルを考慮して、ウェブサーバに提出されるパラメータは固定シーケンスを持たないものとする。そうすれば、パラメータのシーケンスを変更して、末尾に埋め込み値を置くことができる。その場合は、“http://www.test.com/test.asp?name=test&id=1<script>alert(0)</script>）”となる。
また、JavaScript以外に、パラメータ値の変更時に特定の文字、例えば、“>”、“<”、“%20”を追加する方法もある。そうした方法で作られるＵＲＬは、
“http://www.test.com/test.asp?name=test&id=1%20<script>alert(0)</script>”、または、
“http://www.test.com/test.asp?name=test&id=1%20><script>alert(0)</script>”などとなる。
【００２０】
加えて、パラメータの値の修正の際に、パラメータの処理にＸＳＳ脆弱性が含まれる場合に、挿入したスクリプトがJavaScript解析エンジンによって確実に実行されるようにするためには、ｈｔｍｌ文法の回復（resumption）を考慮に入れなければならない。例えば、動的ウェブページが生成するＨＴＭＬコードが、“<pre>the name you enter is test<pre>”であって、「test」の部分は動的ウェブページがパラメータ「id」の値に基づいて生成する、という場合である。この場合、パラメータ「id」の値にJavaScriptのみを追加して、“id = <script>alert(0)</script>”とすれば、動的ウェブページが生成するJavaScriptは、“<pre></pre>”のｈｔｍｌ識別子の間に含まれる形となり、JavaScript解析エンジンでは実行できない。これについては、「id」のパラメータ値に挿入するスクリプトを変更して、“id = </pre><script>alert(0)</script><pre>”とする必要があり、そうすると、動的ウェブページが生成するｈｔｍｌコードは、“<pre> the name you entered is</pre><script>alert(0)</script><pre>”となる。このコードであれば、挿入したスクリプト（例えば、警告関数）を解析エンジンに確実に実行させることができる。
【００２１】
上記の“<pre>”タグは単なる一例であり、スクリプトに挿入が行われる場合は他にもある。従って、JavaScriptをパラメータ値に挿入する際には、ｈｔｍｌ文法の回復も考慮して、パラメータの処理がＸＳＳ脆弱性を含む場合に、挿入されたJavaScriptが確実に実行されるようにしなければならない。従って、JavaScriptの挿入については、様々に異なる挿入方法を実行して、より正確にＸＳＳ脆弱性を判定するようにするべきである。
【００２２】
ステップＳ１４０でテスト用ＵＲＬを組み立てた後、ステップＳ１５０では、組み立てたＵＲＬをウェブサーバに送信して動的ウェブページコンテンツを要求する。これに応じて、当該動的ウェブページコンテンツがステップＳ１６０で提供される。その後、ステップＳ１７０において、本発明によるJavaScript解析エンジンを用いて、動的ウェブページコンテンツの実行をシミュレートし、さらに、ステップＳ１４０で挿入した専用スクリプトがJavaScript解析エンジンによって実行されるか否かに基づいて、当該パラメータがＸＳＳ脆弱性を有するか否かの判定を行う。ステップＳ１７０における処理については、後で、図２を参照しながら詳しく説明する。ここでは、当該処理についてこれ以上の説明はしない。
【００２３】
パラメータがＸＳＳ脆弱性を有するか否かに関する判定をステップＳ１７０で行った後、ステップＳ１８０においては、パラメータの集合に、判定対象となるパラメータがまだ残っているか否かを判定する。他にも判定対象のパラメータがあれば、ステップＳ１９０で、次に処理されるべきパラメータ値ペアがパラメータの集合から取得される。そして、本方法の処理はステップＳ１４０に戻り、当該パラメータ値ペアが処理される。ステップＳ１８０において処理すべきパラメータが残っていないと判定された場合は、ステップＳ２１０において、パラメータの集合に含まれる全てのパラメータの処理結果が出力され、当該ウェブページのＸＳＳ検出処理は終了する。
【００２４】
留意すべき点として、ステップＳ１４０では、１つのパラメータに関して複数の専用ＵＲＬを組み立てることができる、と説明した。本発明の別の実施の形態では、ステップＳ１４０〜Ｓ１７０を繰り返し実行することで、各々が特別に組み立てられたＵＲＬをウェブサーバに送信して、ウェブページがＸＳＳ脆弱性を有するか否かを確実に知ることができる。このようにすれば、ウェブページに対してより包括的な脆弱性の検出を行うことができる。
【００２５】
図２は、ウェブサーバによる特定のパラメータの処理にＸＳＳ脆弱性が存在するか否かを判定するために、ステップＳ１７０で実行される判定方法１７００のフローチャートである。
先ず、取得したウェブページコンテンツを、ステップＳ１７１０においてＤＯＭモデルに変換する。ウェブページコンテンツをＤＯＭモデルに変換することは、クライアント側でウェブページコンテンツを提示するための、従来の技術的対応の１つである。本発明では、取得したウェブページコンテンツの実行をシミュレートする必要があるため、ウェブページコンテンツは先ずＤＯＭモデルに変換される。その後、ステップＳ１７２０において、本発明によるJavaScript解析エンジンを用い、ＤＯＭモデルでJavaScriptを実行する。上述した通り、パラメータ値には、特定のパラメータ用に専用のＵＲＬを組み立てる間に、専用のJavaScriptが挿入されている。そうして、ステップＳ１７３０においては、JavaScript解析エンジンが専用スクリプトを実行するか否かに基づいて、ウェブサーバによるパラメータの処理にＸＳＳ脆弱性が存在するか否かが判定される。専用スクリプトが起動され実行される場合、それはＸＳＳ脆弱性が存在することを意味するが（Ｓ１７４０）、起動、実行されなければ、それはＸＳＳ脆弱性が存在しないことを意味する（Ｓ１７５０）。その後、ステップＳ１７６０において、パラメータの処理にＸＳＳ脆弱性が存在するか否かの判定結果が記録され、本判定方法の処理は終了する。
【００２６】
留意すべきは、図２に示す方法の主な狙いが、返されて来たウェブページコンテンツの実行を、本発明によるJavaScript解析エンジンを用いてシミュレートすることだという点である。従って、ウェブページの実行のシミュレートが可能な全ての方法が本発明の保護範囲に含まれる。
加えて、上述したように、JavaScriptでは、警告関数が動作してメッセージボックスをポップアップするが、その際、ウェブページコンテンツに影響を与えることはない。従って、パラメータ値に挿入するスクリプトは、警告関数とするのが好ましい。そして、本発明によるJavaScript解析エンジンは更に、警告関数の処理を変更し、警告関数が起動するか否かに基づいて、パラメータの処理にＸＳＳ脆弱性が存在するか否かを判定する。
【００２７】
図３は、ウェブページのＸＳＳ脆弱性検出を行う、本発明の実施の形態によるＸＳＳ検出装置を示す。
図３に示すように、ＸＳＳ検出装置３００は、ウェブページパラメータ値ペア集合特定部３１０、テスト用ＵＲＬ組立部３２０、通信部３３０、ウェブページコンテンツ取得部３４０、シミュレータ３５０、JavaScript解析エンジン３６０、そして記録部３７０を有する。
【００２８】
ウェブページパラメータ値ペア集合特定部３１０は、特定の動的ウェブページで受け入れ可能なパラメータ値ペア集合を特定する。すでにステップＳ１１０で言及したように、動的ウェブページで受け入れが可能なパラメータ値ペア集合の特定には様々な方向がある。その後、ウェブページパラメータ値ペア集合特定部３１０は、特定したパラメータ値ペア集合をテスト用ＵＲＬ組立部３２０に送る。
【００２９】
テスト用ＵＲＬ組立部３２０は、受け取ったパラメータ値ペア集合に含まれる各々のパラメータ値ペアについて、テスト用ＵＲＬを構築する。テスト用ＵＲＬ組立部３２０は、特定のパラメータ値ペアについてテスト用ＵＲＬを構築している間に、当該パラメータ値に、本発明においてカスタマイズしたJavaScript解析エンジン３６０に対応するJavaScript、例えば、上述した“<script>alert(0)</script>”を挿入する。当該対応するJavaScriptは、パラメータがＸＳＳ脆弱性を有する場合、JavaScript解析エンジン３６０において起動される。つまり、本発明におけるJavaScript解析エンジン３６０は、パラメータ値に挿入されるJavaScriptを提供する。上記の通り、テスト用ＵＲＬ組立部３２０が構築する複数のＵＲＬは、専用のJavaScriptとパラメータ値ペアごとに異なる特殊文字とを含んでいる。こうして組み立てられたＵＲＬは、別々にテストすることができる。
【００３０】
通信部３３０は、テスト用ＵＲＬ組立部３２０で組み立てられたＵＲＬを受け取り、当該ＵＲＬをウェブサーバ４００に送って、動的ウェブページを要求する。これに応じて、ウェブサーバ４００は、生成した動的ウェブページをウェブページコンテンツ取得部３４０に送る。そして、ウェブページコンテンツ取得部３４０は、動的ウェブページを取得すると、動的ウェブページのＸＳＳ脆弱性の有無検出のために、シミュレータ３５０に当該動的ウェブページのコンテンツを送る。
【００３１】
実際問題として、通信部３３０およびウェブページコンテンツ取得部３４０の機能は、関連するネットワーク機能をまとめて実行する単一の通信部に統合することができる。これらは全て、本発明の保護範囲に含まれる。
シミュレータ３５０は様々な方法で、取得したウェブページコンテンツの実行をシミュレートする。例えば、ブラウザ（ＩＥ、Ｆｉｒｅｆｏｘ、Ｃｈｒｏｍｅなど）のカーネルを用いてウェブページコンテンツを処理し、ウェブページコンテンツをＤＯＭモデルに変換した後、JavaScript解析エンジン３６０を用いてウェブページのJavaScriptを実行する。
【００３２】
JavaScriptの実行時、JavaScript解析エンジン３６０は、パラメータ値に挿入するために提供されたJavaScriptが起動されるか否かを判定する。起動されれば、ウェブサーバが生成した動的ウェブページ中のパラメータの処理にはＸＳＳ脆弱性が含まれる、と判定される。起動されなければ、パラメータの処理にＸＳＳ脆弱性は含まれていない、と判定される。その後、JavaScript解析エンジン３６０は、記録部３７０に判定結果を送って記録させる。
【００３３】
上述したＸＳＳ検出装置では、動的ウェブページに関するＸＳＳ検出の手法が開示されている。このＸＳＳ検出装置をウェブサイトセキュリティスキャンシステムまたはウェブスキャンシステムに組み込めば、当該ウェブサイトセキュリティスキャンシステムまたはウェブスキャンシステムがスキャンの対象とする個々の動的ウェブページについて、ＸＳＳ検出を実現することができ、その結果、特定の１又は複数のウェブサイトに関してＸＳＳ脆弱性をスキャンすることが可能となる。
【００３４】
本発明のJavaScript解析エンジン３６０の主要な目的は、返されてきた動的ウェブページにおいて専用のJavaScript関数が起動されたか否かを判定することである。よって、他のJavaScript関数の実行を簡略化することで、JavaScript解析エンジン３６０の実行効率を高めることもできる。その手段としては、例えば、実質的な動作を行わずにインタフェースのみを実現することで、動的ウェブページコンテンツ実行のシミュレートを高速化する、というものがある。本発明によるＸＳＳ検出の方法および装置は、専用スクリプトを有するパラメータの値を含むようにＵＲＬを組み立て、当該ＵＲＬから返されてきた動的ウェブページコンテンツが専用スクリプトを起動させることができるか否かを検出することで、動的ウェブページがＸＳＳ脆弱性を有するか否かを判定する。単に対応する内容が動的ウェブページに現れるか否かを判定する従来の特徴マッチング手法と比較して、本発明の精度は高い。また、ＡＪＡＸ技術の発展に伴って、クライアント側における提示方法および処理方法は一層複雑化するため、従来の特徴マッチング手法では、ＸＳＳ脆弱性を正確に判定することができない。ＸＳＳ脆弱性の影響は、最終的にはスクリプトの実行によって生じるので、本発明はリッチクライアント側のウェブページコンテンツにも問題なく適用することができる。
【００３５】
留意すべき点として、本発明によるＸＳＳ検出装置の構成要素は、実現する機能の観点から論理的に分けられている。しかしながら、本発明はこれに限定されず、ＸＳＳ検出装置の構成要素は、更に細かく分割することも、統合することもできる。例えば、いくつかの構成要素は結合して単一の構成要素とすることが可能であり、一部の構成要素は複数の副構成要素に分割することが可能である。
【００３６】
本発明の実施の形態は、ハードウェアで実現することもできるが、１以上のプロセッサで動作するソフトウェアモジュールで実現することもできる。また、これら２つの組合せで実現することもできる。当業者には理解されるであろうが、実際には、マイクロプロセッサまたはデジタル信号プロセッサ（ＤＳＰ）を用いて、本発明の実施の形態によるＸＳＳ検出装置の一部または全ての構成要素の機能の一部または全てを実行することができる。更に、本発明は、デバイスプログラムまたは手段プログラム（means program）（例えば、コンピュータプログラムやコンピュータプログラム製品）で実装しても、ここに記載した方法の一部または全体を実行することができる。本発明を実行するこうしたプログラムは、コンピュータ読取り可能媒体に格納することが可能であるが、１以上の信号の形とすることもできる。そうした信号は、インターネットウェブサイトからダウンロードやキャリヤ信号による提供、または、それら以外の形での提供が可能である。
【００３７】
留意すべき点として、上述した実施の形態は本発明を限定するものではなく、例示のためのものである。また当業者であれば、添付の特許請求の範囲から逸脱することなく、他の実施の形態を設計することが可能であろう。特許請求の範囲において、括弧で囲まれた参照記号は、特許請求の範囲の限定を構成するものではない。特許請求の範囲において、「有する（comprise）」という語は、特許請求の範囲に列記したもの以外の構成要素やステップの存在を排除するものではない。また、構成要素に先行する冠詞「a」、「an」は、それら構成要素が複数存在する場合を排除するものではない。本発明は、いくつかの異なる構成要素を有するハードウェアで実現することも、適切にプログラムされたコンピュータで実現することもできる。いくつかの手段を列記した特許請求の範囲では、これらの手段のうち複数を単一のハードウェアユニットで実体化することができる。第１、第２、第３など序数の使用は、時間的順序を表すものではなく呼称と理解すべきである。
【図１】
0005497173.tif 000002
【図２】
0005497173.tif 000003
【図３】
0005497173.tif 000004