説明

XSS検出方法および装置

本発明が開示するのは、ウェブページのXSS脆弱性を検出するXSS検出方法であって、ウェブページが受け取り可能なパラメータ値ペアの集合に含まれる各々のパラメータ値ペアについて、専用スクリプトが挿入されたパラメータ値ペアを構成する処理と、専用スクリプトが挿入されたパラメータ値ペアに基づいてウェブページに対応するURLを組み立てる処理と、組み立てられたURLに対応する動的ウェブページコンテンツを取得する処理と、取得した動的ウェブページコンテンツの実行をシミュレートして、専用スクリプトが実行された場合にはウェブページにおけるパラメータの処理がXSS脆弱性を有すると判定する処理と、を有することを特徴とするXSS検出方法である。本発明はまた、上記方法に対応するXSS検出装置と、こうした装置を使用するウェブサイトセキュリティスキャンシステムおよびウェブスキャンシステムとを開示する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、セキュリティスキャンおよびウェブサイト解析の技術分野に関するものであり、特に、ウェブサイト中のウェブページにおけるXSS(Cross Site Scripting:クロスサイトスクリプト)脆弱性の有無を検出する方法および装置に関する。
【背景技術】
【0002】
XSSが1990年代に明らかになって以来、その発見および悪用が多くの関心を引いてきた。XSS(すなわちクロスサイトスクリプト)は、ウェブサイト脆弱性を利用することによって情報をユーザから盗む手口の1つである。ウェブサイトをナビゲート中にインスタントメッセージソフトウェアを使用したり、電子メールを読んだりする時、ユーザは通常、その中のリンクをクリックする。ユーザがリンクをクリックした際、ウェブサーバが当該リンクに対応するウェブページを生成する。しかし、悪意を持ったハッカーが悪意のあるコードをリンクに挿入しており、しかもウェブサーバにXSS脆弱性があって、悪意のあるコードにフィルタがかからない場合、ウェブサーバは悪意のあるコードを含んだウェブページを生成してしまうが、当該ウェブページは、ウェブサイトによって生成された正当なウェブページと見なされてしまう。その結果、悪意のあるコードがユーザのコンピュータにおいて実行され、ユーザのローカルセキュリティメカニズムを回避してユーザ情報を盗み出し、さらには、ユーザのマシンを遠隔制御する権限を取得して、当該ユーザのマシンからトロイ攻撃を開始することさえある。ハッカーは通常、リンクのコード化にあたっては、ユーザにリンクの正当性を疑われないように、16進符号化(または他の符号化方法)を用いる。XSSは現在、インターネット内の至る所に存在し、直接ユーザを重大な脅威にさらしている。近年、XSSはバッファオーバーフローを抜いて、最も広く知られたセキュリティ脆弱性となった。ウェブサイトの約68%以上がXSS脆弱性を有する。
【0003】
XSS検出は、検出手法から見て、遠隔からの能動的検出とローカルな受動的検出とに分けられる。ローカルな受動的検出の技術は主にブラウザに用いられる。現在、IE8とFirefoxの“noscript”プラグインとの両方でXSS検出がサポートされている。遠隔からの能動的検出は主に、遠隔型脆弱性スキャナなどの検出ツールに用いられる。本発明は、遠隔からの検出技術に関する改良に主眼を置く。
【0004】
セキュリティに関する知識が豊かになると共に、ウェブサイトプログラマは、ユーザによるパラメータ入力に何らかの特別な処理を実施する場合がある。そうした特別な処理は、XSS脆弱性の遠隔スキャンにいくつかの問題を生じさせる。特に、遠隔スキャンに誤警報が生じ易くなる、という問題である。
ウェブサーバのXSS脆弱性の遠隔スキャンの手法は、いくつか提案されている。米国特許第7343626号には、テスト対象のウェブサイトのXSS脆弱性の自動検出を行う方法およびシステムが開示されており、そこでは、以下の処理が行われる。先ず、ウェブサイトのウェブページについて、全てのパラメータ値ペアを探し出す。そして、各々のパラメータ値ペアについて、以下を行う。専用のトレーサ値を構成し、パラメータ値ペアをウェブサーバに送ってウェブページを要求する。返されてくるウェブページに専用トレーサ値が見つかれば、それはウェブページがXSS脆弱性を有することを意味する。その場合、専用トレーサ値が現れるウェブサイト内の位置に基づいて、スクリプトを含んだ第2の専用トレーサ値を構成する。そして、第2の専用トレーサ値をウェブサーバに送り、返されて来たウェブページがスクリプトを実行するか否かに基づいて、当該ウェブページがXSS脆弱性を有するか否か判定する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】米国特許第7343626号明細書
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、米国特許第7343626号に開示された方法では、パラメータ値ペアを2回送る必要があり、その結果、実行効率が低くなる。加えて、この方法では、最初の専用トレーサ値が現れる位置に基づいて、スクリプトを含んだ第2の専用トレーサ値を構成する必要がある。また、ネットワーク技術の進歩によって、XSS脆弱性が別の位置に現れるようになることも考えられる。そうなった場合、この方法ではXSS脆弱性を包括的に検出することはできないであろう。
【0007】
更に、いくつかのオープンソースソフトウェアでは、遠隔からXSS脆弱性を検出する別の方法が開示されている。その原理はおおよそ以下の通りである。検出対象の特定のウェブページについて、先ず、ウェブページが受け取るパラメータ値ペアを特定する。それから、各々のパラメータについて、専用の値を構成し、ウェブサーバに対し、特別に構成したパラメータ値ペアを利用するウェブページを要求する。そして最後に、返されてくる情報に基づいて脆弱性が存在するか否かを判定する。返されてくる情報を解析する方法は、正規表現に基づくマッチングを採用している。オープンソースソフトウェアの検出方法では、返されてくる情報の解析は、特徴づけられた文字列に基づく正規表現マッチングを行ってXSS脆弱性が存在するか否かを判定する、というやり方で実施されるが、これだと、場合によっては、誤警報や漏れが生じることがある。さらに、DOM型のXSS脆弱性の場合、こうした方法では、脆弱性が起動可能か否かの判定ができない。例えば、返されてくるウェブページが、構成された専用の値を有していたとしても、この専用の値は実行不可能である。それにも関わらず、上記の方法では、当該ウェブページはXSS脆弱性を有すると見なされる。しかし、実際はそうではない。
【0008】
以上から、本技術分野では、完全かつ効果的にXSS脆弱性を検出することのできる方法や装置が未だ存在しないことが分かるであろう。
そこで、本発明は、オープンソースソフトウェアにおいて提案された方法を改良することで、「完全に自動化された、包括的かつ効果的なやり方でのXSS脆弱性検出」という課題の解決法を提供しようとするものである。
【0009】
本発明の出願人は、XSS脆弱性の最終的な結果は、被害を受けたマシンにおいて予想外のスクリプトコードが実行されることである、と認識している。よって、JavaScript解析エンジンを利用して、被害を受けたマシンにおいて予想外のスクリプトコードが実行されたか否かを判定すれば、XSS脆弱性を包括的に検出することができる。本発明は、こうした思想に基づいて提案される。
【課題を解決するための手段】
【0010】
本発明の1つの様態として、ウェブページのXSS脆弱性を検出するXSS検出方法を提供する。当該検出方法は、ウェブページが受け取り可能なパラメータ値ペアの集合を特定する処理と、集合に含まれる各々のパラメータ値ペアについて、専用スクリプトが挿入されたパラメータ値ペアを構成する処理と、専用スクリプトが挿入されたパラメータ値ペアに基づいてウェブページに対応するURLを組み立てる処理と、組み立てられたURLに対応する動的ウェブページコンテンツを取得する処理と、
取得した動的ウェブページコンテンツの実行をシミュレートして、専用スクリプトが実行された場合にはウェブページにおけるパラメータの処理がXSS脆弱性を有すると判定する処理と、を有する。
【0011】
また、本発明の1つの実施の形態では、取得した動的ウェブページコンテンツの実行をシミュレートする処理においては、スクリプト解析エンジンを用いてウェブページコンテンツの実行がシミュレートされ、スクリプト解析エンジンは専用スクリプトが起動されるか否かに基づいてXSS脆弱性の存在を判定するよう構成されていること、とする。
また、本発明の別の様態として、ウェブページのXSS脆弱性を検出するXSS検出装置を提供する。当該検出装置は、ウェブページによって受け取られるパラメータ値ペアの集合を特定するウェブページパラメータ値ペア集合特定手段と、パラメータ値ペアの集合に含まれるパラメータ値ペアの各々について、テスト用URLを組み立て、当該テスト用URLの組み立ての間に専用スクリプトをパラメータ値に挿入する、テスト用URL組立手段と、テスト用URLをウェブサーバに送信し、当該ウェブサーバから返されてくるウェブページコンテンツを受信する通信手段と、ウェブページの実行をシミュレートし、専用スクリプトが実行されたか否かに基づいて、対応するパラメータにおけるXSS脆弱性の存在を判定するシミュレート手段と、を有する。
【0012】
また、本発明の1つの実施の形態によるXSS検出装置では、スクリプト解析エンジンを更に有し、シミュレート手段は、ウェブページコンテンツの実行をシミュレートする際、当該スクリプト解析エンジンを用いて専用スクリプトを実行し、スクリプト解析エンジンは、XSS脆弱性が対応するパラメータに存在するか否かを、専用スクリプトが起動されたか否かに基づいて判定すること、とする。
【発明の効果】
【0013】
本発明は、専用スクリプトを含むパラメータ値を有するURLを組み立て、当該専用スクリプトがURLから返された動的ウェブページコンテンツによって起動されるか否かを検出することで、当該動的ウェブページがXSS脆弱性を有するか否かを判定する。単に動的ウェブページに対応する内容が現れるか否かの判定による従来の特徴マッチングによる手法と比較して、本発明は精度が高く、より包括的な検出が可能となる。
【0014】
本発明の上記以外の効果および利点は、本明細書のこれ以降の部分における好適な実施の形態の詳細な説明を読めば、当業者には明らかであろう。図面は、単に好適な実施の形態を示す目的で用いられるものであり、本発明の範囲を限定するものではない。全図面を通じて、同じ参照符号は同じ構成要素を表しており、参照番号に文字が続く場合、それは同じ構成要素が複数あることを示し、これら複数ある構成要素全体に言及する場合、末尾の文字は省略される。
【図面の簡単な説明】
【0015】
【図1】本発明の実施の形態によるウェブページXSS脆弱性検出方法のフローチャートである。
【図2】ウェブサーバの特定のパラメータの処理がXSS脆弱性を有するか否かを判定する、本発明の実施の形態による判定方法のフローチャートである。
【図3】ウェブページのXSS脆弱性を検出するための、本発明の実施の形態によるXSS検出装置を示す概略図である。
【発明を実施するための形態】
【0016】
以下、図面と特定の実施の形態との組み合わせを参照しながら、本発明について更に詳しく説明する。
図1は、本発明の実施の形態によるウェブページにおけるXSS脆弱性検出方法のフローチャートである。
先ず、ステップS110において、XSS検出の対象となるウェブページのURLを取得する。次いで、ステップS120において、ウェブページで受け取り可能なパラメータ値ペアの集合を特定する。XSSの原理から考えて、XSS脆弱性を有するウェブページは、ウェブサーバによって動的に生成されるウェブページであり、そのため、通常、HTTPプロトコルに従って、いくつかのパラメータ、および、それらに対応する値を受け取ることができる。例えば、検出対象のウェブページのURLが“http://www.test.com/test.asp?id=1&name=test”であれば、ウェブページが受け取ることのできるパラメータは、idおよびnameを含む、と特定される。動的URLが受け取ることのできるパラメータの集合を特定する方法は様々であり、例えば、動的ウェブページへのアクセス用のURLの詳細な内容を監視する方法や、HTTPプロトコル等に従ってウェブサーバに送信されるFORMの内容を検出する方法等がある。これら方法は全て、本発明の保護範囲に含まれる。
【0017】
ステップS120においてパラメータ値ペアの集合を取得した後、ステップS130では、当該集合に含まれるパラメータ値ペアのうち最初のものを選択する。その次のステップS140では、選択したパラメータ値ペアの値を書き換えて、テスト用URLを組み立てる。具体的には、本発明の実施の形態では、専用のJavaScriptを当該パラメータ値に埋め込む。動的ウェブページがXSS脆弱性を有する場合、埋め込まれたJavaScriptは当該ウェブサーバで処理されることはなく、返されてくる動的ウェブページコンテンツの中に存在する。本発明では、JavaScriptが動的ウェブページの中に存在して実行されるか否かを監視し、その結果に基づいて、当該ウェブページがXSS脆弱性を有するか否かを判定する。埋め込んだJavaScriptと動的ウェブページ内の既存のJavaScriptとの衝突を回避するために、埋め込むJavaScriptはユニークなものとする。例えば、ユニークなスクリプトパラメータコンテンツから成るものとする。さらに、JavaScriptの警告関数が動作して、ファイルコンテンツに他の影響を与えない形で、メッセージボックスを表示する。つまり、本発明の別の実施の形態では、選択したパラメータ値ペアに警告関数を埋め込む。
【0018】
例えば、上で挙げた“http://www.test.com/test.asp?id=1&name=test”というURLでは、パラメータ「id」の変更時に、“<script>alert(0)</script>”という関数を、対応するパラメータ値に埋め込むことができる。その結結、“http://www.test.com/test.asp?id=1<script>alert(0)</script>&name=test”という内容に作られたURLが得られる。
【0019】
別な形では、HTTPプロトコルを考慮して、ウェブサーバに提出されるパラメータは固定シーケンスを持たないものとする。そうすれば、パラメータのシーケンスを変更して、末尾に埋め込み値を置くことができる。その場合は、“http://www.test.com/test.asp?name=test&id=1<script>alert(0)</script>)”となる。
また、JavaScript以外に、パラメータ値の変更時に特定の文字、例えば、“>”、“<”、“%20”を追加する方法もある。そうした方法で作られるURLは、
“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>”などとなる。
【0020】
加えて、パラメータの値の修正の際に、パラメータの処理にXSS脆弱性が含まれる場合に、挿入したスクリプトがJavaScript解析エンジンによって確実に実行されるようにするためには、html文法の回復(resumption)を考慮に入れなければならない。例えば、動的ウェブページが生成するHTMLコードが、“<pre>the name you enter is test<pre>”であって、「test」の部分は動的ウェブページがパラメータ「id」の値に基づいて生成する、という場合である。この場合、パラメータ「id」の値にJavaScriptのみを追加して、“id = <script>alert(0)</script>”とすれば、動的ウェブページが生成するJavaScriptは、“<pre></pre>”のhtml識別子の間に含まれる形となり、JavaScript解析エンジンでは実行できない。これについては、「id」のパラメータ値に挿入するスクリプトを変更して、“id = </pre><script>alert(0)</script><pre>”とする必要があり、そうすると、動的ウェブページが生成するhtmlコードは、“<pre> the name you entered is</pre><script>alert(0)</script><pre>”となる。このコードであれば、挿入したスクリプト(例えば、警告関数)を解析エンジンに確実に実行させることができる。
【0021】
上記の“<pre>”タグは単なる一例であり、スクリプトに挿入が行われる場合は他にもある。従って、JavaScriptをパラメータ値に挿入する際には、html文法の回復も考慮して、パラメータの処理がXSS脆弱性を含む場合に、挿入されたJavaScriptが確実に実行されるようにしなければならない。従って、JavaScriptの挿入については、様々に異なる挿入方法を実行して、より正確にXSS脆弱性を判定するようにするべきである。
【0022】
ステップS140でテスト用URLを組み立てた後、ステップS150では、組み立てたURLをウェブサーバに送信して動的ウェブページコンテンツを要求する。これに応じて、当該動的ウェブページコンテンツがステップS160で提供される。その後、ステップS170において、本発明によるJavaScript解析エンジンを用いて、動的ウェブページコンテンツの実行をシミュレートし、さらに、ステップS140で挿入した専用スクリプトがJavaScript解析エンジンによって実行されるか否かに基づいて、当該パラメータがXSS脆弱性を有するか否かの判定を行う。ステップS170における処理については、後で、図2を参照しながら詳しく説明する。ここでは、当該処理についてこれ以上の説明はしない。
【0023】
パラメータがXSS脆弱性を有するか否かに関する判定をステップS170で行った後、ステップS180においては、パラメータの集合に、判定対象となるパラメータがまだ残っているか否かを判定する。他にも判定対象のパラメータがあれば、ステップS190で、次に処理されるべきパラメータ値ペアがパラメータの集合から取得される。そして、本方法の処理はステップS140に戻り、当該パラメータ値ペアが処理される。ステップS180において処理すべきパラメータが残っていないと判定された場合は、ステップS210において、パラメータの集合に含まれる全てのパラメータの処理結果が出力され、当該ウェブページのXSS検出処理は終了する。
【0024】
留意すべき点として、ステップS140では、1つのパラメータに関して複数の専用URLを組み立てることができる、と説明した。本発明の別の実施の形態では、ステップS140〜S170を繰り返し実行することで、各々が特別に組み立てられたURLをウェブサーバに送信して、ウェブページがXSS脆弱性を有するか否かを確実に知ることができる。このようにすれば、ウェブページに対してより包括的な脆弱性の検出を行うことができる。
【0025】
図2は、ウェブサーバによる特定のパラメータの処理にXSS脆弱性が存在するか否かを判定するために、ステップS170で実行される判定方法1700のフローチャートである。
先ず、取得したウェブページコンテンツを、ステップS1710においてDOMモデルに変換する。ウェブページコンテンツをDOMモデルに変換することは、クライアント側でウェブページコンテンツを提示するための、従来の技術的対応の1つである。本発明では、取得したウェブページコンテンツの実行をシミュレートする必要があるため、ウェブページコンテンツは先ずDOMモデルに変換される。その後、ステップS1720において、本発明によるJavaScript解析エンジンを用い、DOMモデルでJavaScriptを実行する。上述した通り、パラメータ値には、特定のパラメータ用に専用のURLを組み立てる間に、専用のJavaScriptが挿入されている。そうして、ステップS1730においては、JavaScript解析エンジンが専用スクリプトを実行するか否かに基づいて、ウェブサーバによるパラメータの処理にXSS脆弱性が存在するか否かが判定される。専用スクリプトが起動され実行される場合、それはXSS脆弱性が存在することを意味するが(S1740)、起動、実行されなければ、それはXSS脆弱性が存在しないことを意味する(S1750)。その後、ステップS1760において、パラメータの処理にXSS脆弱性が存在するか否かの判定結果が記録され、本判定方法の処理は終了する。
【0026】
留意すべきは、図2に示す方法の主な狙いが、返されて来たウェブページコンテンツの実行を、本発明によるJavaScript解析エンジンを用いてシミュレートすることだという点である。従って、ウェブページの実行のシミュレートが可能な全ての方法が本発明の保護範囲に含まれる。
加えて、上述したように、JavaScriptでは、警告関数が動作してメッセージボックスをポップアップするが、その際、ウェブページコンテンツに影響を与えることはない。従って、パラメータ値に挿入するスクリプトは、警告関数とするのが好ましい。そして、本発明によるJavaScript解析エンジンは更に、警告関数の処理を変更し、警告関数が起動するか否かに基づいて、パラメータの処理にXSS脆弱性が存在するか否かを判定する。
【0027】
図3は、ウェブページのXSS脆弱性検出を行う、本発明の実施の形態によるXSS検出装置を示す。
図3に示すように、XSS検出装置300は、ウェブページパラメータ値ペア集合特定部310、テスト用URL組立部320、通信部330、ウェブページコンテンツ取得部340、シミュレータ350、JavaScript解析エンジン360、そして記録部370を有する。
【0028】
ウェブページパラメータ値ペア集合特定部310は、特定の動的ウェブページで受け入れ可能なパラメータ値ペア集合を特定する。すでにステップS110で言及したように、動的ウェブページで受け入れが可能なパラメータ値ペア集合の特定には様々な方向がある。その後、ウェブページパラメータ値ペア集合特定部310は、特定したパラメータ値ペア集合をテスト用URL組立部320に送る。
【0029】
テスト用URL組立部320は、受け取ったパラメータ値ペア集合に含まれる各々のパラメータ値ペアについて、テスト用URLを構築する。テスト用URL組立部320は、特定のパラメータ値ペアについてテスト用URLを構築している間に、当該パラメータ値に、本発明においてカスタマイズしたJavaScript解析エンジン360に対応するJavaScript、例えば、上述した“<script>alert(0)</script>”を挿入する。当該対応するJavaScriptは、パラメータがXSS脆弱性を有する場合、JavaScript解析エンジン360において起動される。つまり、本発明におけるJavaScript解析エンジン360は、パラメータ値に挿入されるJavaScriptを提供する。上記の通り、テスト用URL組立部320が構築する複数のURLは、専用のJavaScriptとパラメータ値ペアごとに異なる特殊文字とを含んでいる。こうして組み立てられたURLは、別々にテストすることができる。
【0030】
通信部330は、テスト用URL組立部320で組み立てられたURLを受け取り、当該URLをウェブサーバ400に送って、動的ウェブページを要求する。これに応じて、ウェブサーバ400は、生成した動的ウェブページをウェブページコンテンツ取得部340に送る。そして、ウェブページコンテンツ取得部340は、動的ウェブページを取得すると、動的ウェブページのXSS脆弱性の有無検出のために、シミュレータ350に当該動的ウェブページのコンテンツを送る。
【0031】
実際問題として、通信部330およびウェブページコンテンツ取得部340の機能は、関連するネットワーク機能をまとめて実行する単一の通信部に統合することができる。これらは全て、本発明の保護範囲に含まれる。
シミュレータ350は様々な方法で、取得したウェブページコンテンツの実行をシミュレートする。例えば、ブラウザ(IE、Firefox、Chromeなど)のカーネルを用いてウェブページコンテンツを処理し、ウェブページコンテンツをDOMモデルに変換した後、JavaScript解析エンジン360を用いてウェブページのJavaScriptを実行する。
【0032】
JavaScriptの実行時、JavaScript解析エンジン360は、パラメータ値に挿入するために提供されたJavaScriptが起動されるか否かを判定する。起動されれば、ウェブサーバが生成した動的ウェブページ中のパラメータの処理にはXSS脆弱性が含まれる、と判定される。起動されなければ、パラメータの処理にXSS脆弱性は含まれていない、と判定される。その後、JavaScript解析エンジン360は、記録部370に判定結果を送って記録させる。
【0033】
上述したXSS検出装置では、動的ウェブページに関するXSS検出の手法が開示されている。このXSS検出装置をウェブサイトセキュリティスキャンシステムまたはウェブスキャンシステムに組み込めば、当該ウェブサイトセキュリティスキャンシステムまたはウェブスキャンシステムがスキャンの対象とする個々の動的ウェブページについて、XSS検出を実現することができ、その結果、特定の1又は複数のウェブサイトに関してXSS脆弱性をスキャンすることが可能となる。
【0034】
本発明のJavaScript解析エンジン360の主要な目的は、返されてきた動的ウェブページにおいて専用のJavaScript関数が起動されたか否かを判定することである。よって、他のJavaScript関数の実行を簡略化することで、JavaScript解析エンジン360の実行効率を高めることもできる。その手段としては、例えば、実質的な動作を行わずにインタフェースのみを実現することで、動的ウェブページコンテンツ実行のシミュレートを高速化する、というものがある。本発明によるXSS検出の方法および装置は、専用スクリプトを有するパラメータの値を含むようにURLを組み立て、当該URLから返されてきた動的ウェブページコンテンツが専用スクリプトを起動させることができるか否かを検出することで、動的ウェブページがXSS脆弱性を有するか否かを判定する。単に対応する内容が動的ウェブページに現れるか否かを判定する従来の特徴マッチング手法と比較して、本発明の精度は高い。また、AJAX技術の発展に伴って、クライアント側における提示方法および処理方法は一層複雑化するため、従来の特徴マッチング手法では、XSS脆弱性を正確に判定することができない。XSS脆弱性の影響は、最終的にはスクリプトの実行によって生じるので、本発明はリッチクライアント側のウェブページコンテンツにも問題なく適用することができる。
【0035】
留意すべき点として、本発明によるXSS検出装置の構成要素は、実現する機能の観点から論理的に分けられている。しかしながら、本発明はこれに限定されず、XSS検出装置の構成要素は、更に細かく分割することも、統合することもできる。例えば、いくつかの構成要素は結合して単一の構成要素とすることが可能であり、一部の構成要素は複数の副構成要素に分割することが可能である。
【0036】
本発明の実施の形態は、ハードウェアで実現することもできるが、1以上のプロセッサで動作するソフトウェアモジュールで実現することもできる。また、これら2つの組合せで実現することもできる。当業者には理解されるであろうが、実際には、マイクロプロセッサまたはデジタル信号プロセッサ(DSP)を用いて、本発明の実施の形態によるXSS検出装置の一部または全ての構成要素の機能の一部または全てを実行することができる。更に、本発明は、デバイスプログラムまたは手段プログラム(means program)(例えば、コンピュータプログラムやコンピュータプログラム製品)で実装しても、ここに記載した方法の一部または全体を実行することができる。本発明を実行するこうしたプログラムは、コンピュータ読取り可能媒体に格納することが可能であるが、1以上の信号の形とすることもできる。そうした信号は、インターネットウェブサイトからダウンロードやキャリヤ信号による提供、または、それら以外の形での提供が可能である。
【0037】
留意すべき点として、上述した実施の形態は本発明を限定するものではなく、例示のためのものである。また当業者であれば、添付の特許請求の範囲から逸脱することなく、他の実施の形態を設計することが可能であろう。特許請求の範囲において、括弧で囲まれた参照記号は、特許請求の範囲の限定を構成するものではない。特許請求の範囲において、「有する(comprise)」という語は、特許請求の範囲に列記したもの以外の構成要素やステップの存在を排除するものではない。また、構成要素に先行する冠詞「a」、「an」は、それら構成要素が複数存在する場合を排除するものではない。本発明は、いくつかの異なる構成要素を有するハードウェアで実現することも、適切にプログラムされたコンピュータで実現することもできる。いくつかの手段を列記した特許請求の範囲では、これらの手段のうち複数を単一のハードウェアユニットで実体化することができる。第1、第2、第3など序数の使用は、時間的順序を表すものではなく呼称と理解すべきである。

【特許請求の範囲】
【請求項1】
ウェブページのXSS脆弱性を検出するXSS検出方法であって、
ウェブページが受け取り可能なパラメータ値ペアの集合を特定する処理と、
集合に含まれる各々のパラメータ値ペアについて、
専用スクリプトが挿入されたパラメータ値ペアを構成する処理と、
専用スクリプトが挿入されたパラメータ値ペアに基づいてウェブページに対応するURLを組み立てる処理と、
組み立てられたURLに対応する動的ウェブページコンテンツを取得する処理と、
取得した動的ウェブページコンテンツの実行をシミュレートして、専用スクリプトが実行された場合にはウェブページにおけるパラメータの処理がXSS脆弱性を有すると判定する処理と、
を有することを特徴とするXSS検出方法。
【請求項2】
取得した動的ウェブページコンテンツの実行をシミュレートする処理においては、スクリプト解析エンジンを用いてウェブページコンテンツの実行がシミュレートされ、
前記スクリプト解析エンジンは専用スクリプトが起動されるか否かに基づいてXSS脆弱性の存在を判定するよう構成されていること、
を特徴とする請求項1に記載のXSS検出方法。
【請求項3】
専用スクリプトは警告関数であること、
を特徴とする請求項1に記載のXSS検出方法。
【請求項4】
ウェブページに対応するURLを組み立てる処理では、パラメータ値ペアの順番を変更すること、および、他の特別なコードをURLに挿入することで、複数のURLを組み立て、
動的ウェブページコンテンツを取得する処理、および、動的ウェブページコンテンツの実行をシミュレートする処理はそれぞれ、複数のURLの各々に対して実施されること、
を特徴とする請求項1に記載のXSS検出方法。
【請求項5】
パラメータ値ペアの集合に含まれるパラメータの各々についてXSS脆弱性を有するか否かを記録する処理、を更に含むこと、
を特徴とする請求項1に記載のXSS検出方法。
【請求項6】
ウェブページのXSS脆弱性を検出するXSS検出装置であって、
ウェブページによって受け取られるパラメータ値ペアの集合を特定するウェブページパラメータ値ペア集合特定手段と、
パラメータ値ペアの集合に含まれるパラメータ値ペアの各々について、テスト用URLを組み立て、当該テスト用URLの組み立ての間に専用スクリプトをパラメータ値に挿入する、テスト用URL組立手段と、
テスト用URLをウェブサーバに送信し、当該ウェブサーバから返されてくるウェブページコンテンツを受信する通信手段と、
ウェブページコンテンツの実行をシミュレートし、専用スクリプトが実行されたか否かに基づいて、対応するパラメータにおけるXSS脆弱性の存在を判定するシミュレート手段と、を有すること、
を特徴とするXSS検出装置。
【請求項7】
スクリプト解析エンジンを更に有し、
シミュレート手段は、ウェブページコンテンツの実行をシミュレートする際、専用スクリプトを実行し、
スクリプト解析エンジンは、XSS脆弱性が対応するパラメータに存在するか否かを、専用スクリプトが起動されたか否かに基づいて判定すること、
を特徴とする請求項6に記載のXSS検出装置。
【請求項8】
専用スクリプトが警告関数であること、
を特徴とする請求項6に記載のXSS検出装置。
【請求項9】
テスト用URL組立手段は、特定のパラメータ値についてテスト用URLを組み立てる際に、パラメータ値ペアの順番を変更すること、および、他の特別なコードをURLに挿入することで、複数のURLを組み立てるよう構成されており、
組み立てられた各々のURLについてXSS脆弱性を検出するために、組み立てられた各々のURLが通信手段に送られること、
を特徴とする請求項6に記載のXSS検出装置。
【請求項10】
パラメータ値ペアの集合に含まれる各々のパラメータがXSS脆弱性を有するか否かを記録する記録手段を更に有すること、
を特徴とする請求項6に記載のXSS検出装置。
【請求項11】
請求項6に記載のXSS検出装置を有するウェブサイトセキュリティスキャンシステム。
【請求項12】
請求項6に記載のXSS検出装置を有するウェブスキャンシステム。
【請求項13】
コンピュータにロードされ、当該コンピュータ上で動作させられる際に、請求項1に記載のXSS検出方法の処理を実行するように作られた命令から成るコンピュータプログラム製品。
【請求項14】
コンピュータにロードされ、当該コンピュータ上で動作させられる際に、請求項1に記載のXSS検出方法の処理を実行するように作られた命令を格納する記録媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公表番号】特表2012−533806(P2012−533806A)
【公表日】平成24年12月27日(2012.12.27)
【国際特許分類】
【出願番号】特願2012−520889(P2012−520889)
【出願日】平成22年7月23日(2010.7.23)
【国際出願番号】PCT/CN2010/001119
【国際公開番号】WO2011/009295
【国際公開日】平成23年1月27日(2011.1.27)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVASCRIPT
【出願人】(511273078)エヌエスフォーカス インフォメーション テクノロジー カンパニー,リミテッド (2)