(57)【要約】【課題】  Ｗｅｂサイトがクロスサイトスクリプティング攻撃を受けやすいかどうか検出する自動化ソフトウェアツールを提供すること。【解決手段】  Ｗｅｂサイトのクロスサイトスクリプティング（ＸＳＳ）攻撃に対する脆弱性を試験する自動化された方法およびシステムが開示される。この自動化されたツールは、ＧＥＴおよびＰＯＳＴ両方のフォームデータにトレーサ値を挿入し、その結果得られるＨＴＭＬを監視して、そのトレーサ値がその送信先のサーバからローカルマシンに戻されるかどうか判定する。トレーサ値が戻された場合、戻りトレーサ値が見つかった戻りＨＴＭＬ中でのその位置に基づき、何らかのフォームデータに対する入力値の一部として悪意のないスクリプトを挿入することによって、自動化されたツールがＷｅｂサイトに付け込もうと試みる。付け込みに成功したことが悪意のないスクリプトによって示された場合、自動化されたツールは、ログファイルにその付け込みを記録し、それを後刻ユーザが検討して、たとえばＷｅｂサイトのデバッグの際に役立てることができる。【選択図】  図８
2004164617.tif 000002
【特許請求の範囲】
【請求項１】
Ｗｅｂサイトのクロスサイトスクリプティング脆弱性を自動検出するためのコンピュータによる方法であって、
前記Ｗｅｂサイトに対応するキー／値対を決定すること、および
決定した各キー／値対ごとに、少なくとも第１の脆弱性が検出されるまで下位方法を実行することを含み、前記下位方法が、
その値がトレーサ値を含む前記キー／値対を前記Ｗｅｂサイトに送信すること、
前記送信したキー／値対に応答してＷｅｂページを受信すること、
前記受信したＷｅｂページ中に前記トレーサ値が存在する場合はその位置を判定すること、および
前記トレーサ値が前記受信したＷｅｂページに存在する場合、その値がスクリプトを含む第２のキー／値対を前記Ｗｅｂサイトに送信すること
を含むことを特徴とするコンピュータによる方法。
【請求項２】
前記スクリプトが実行されると前記Ｗｅｂサイトがクロスサイトスクリプティング攻撃に対して脆弱であることを知らせ、前記第２のキー／値対の前記スクリプトを含む値の形式が前記トレーサ値の前記判定した位置に基づくことを特徴とする請求項１に記載のコンピュータによる方法。
【請求項３】
前記スクリプトが実行されるかどうかに基づいて前記Ｗｅｂページに対応する脆弱性データをログファイルに書き込むことをさらに含むことを特徴とする請求項１に記載のコンピュータによる方法。
【請求項４】
前記トレーサ値の前記位置を前記Ｗｅｂページの文書オブジェクトモデルに基づいて判定することを特徴とする請求項２に記載のコンピュータによる方法。
【請求項５】
前記トレーサ値の前記位置が前記Ｗｅｂページの本文の表示テキスト内である場合、前記スクリプトを含む値の前記形式がスクリプトタグで始まることを特徴とする請求項４に記載のコンピュータによる方法。
【請求項６】
前記トレーサ値の前記位置がＨＴＭＬタグ内である場合、前記スクリプトを含む値の前記形式が前記ＨＴＭＬタグを閉じる記号で始まることを特徴とする請求項４に記載のコンピュータによる方法。
【請求項７】
前記トレーサ値の前記位置がＩＭＧタグ内である場合、前記スクリプトを含む値の前記形式がグラフィックファイル拡張子で始まることを特徴とする請求項６に記載のコンピュータによる方法。
【請求項８】
前記トレーサ値の前記位置がスクリプトブロック内である場合、前記スクリプトを含む値の前記形式が<SCRIPT>タグで始まらないことを特徴とする請求項４に記載のコンピュータによる方法。
【請求項９】
前記トレーサ値の前記位置がコメントフィールド内である場合、前記スクリプトを含む値の前記形式が「-->」で始まることを特徴とする請求項６に記載のコンピュータによる方法。
【請求項１０】
前記下位方法を実行することに先立って、前記Ｗｅｂサイトが許容されるＷｅｂサイトの範囲内にあるかどうか判定すること、および
前記Ｗｅｂサイトが前記許容されるＷｅｂサイトの範囲内にない場合、前記コンピュータによる方法の実行を停止すること
をさらに含むことを特徴とする請求項１に記載のコンピュータによる方法。
【請求項１１】
前記下位方法を実行するのに先立って、前記方法を実行する前記コンピュータがホームネットワーク上に位置するかどうか判定すること、および
前記方法を実行する前記コンピュータが前記ホームネットワーク上に位置しない場合、前記コンピュータによる方法の実行を停止すること
をさらに含むことを特徴とする請求項１に記載のコンピュータによる方法。
【請求項１２】
前記キー／値対を決定する元になるＷｅｂサイト情報を前記コンピュータのオペレーティングシステムのクリップボードを介して受信することを特徴とする請求項１に記載のコンピュータによる方法。
【請求項１３】
前記キー／値対を決定する元になるＷｅｂサイト情報を複数の試験対象Ｗｅｂサイトのリストを含む入力ファイルを介して受信することを特徴とする請求項１に記載のコンピュータによる方法。
【請求項１４】
前記Ｗｅｂサイトが対応するキー／値対を含まない場合、それが実行されると前記Ｗｅｂサイトがクロスサイトスクリプティング攻撃に対して脆弱であることを示すスクリプトをその値が含む第３のキー／値対を前記Ｗｅｂサイトに送信することをさらに含むことを特徴とする請求項１に記載のコンピュータによる方法。
【請求項１５】
フォームを介して前記キー／値対を送信することを特徴とする請求項１に記載のコンピュータによる方法。
【請求項１６】
ＰＯＳＴコマンドを介して前記キー／値対を送信することを特徴とする請求項１５に記載のコンピュータによる方法。
【請求項１７】
ＵＲＬを介して前記キー／値対を送信することを特徴とする請求項１に記載のコンピュータによる方法。
【請求項１８】
ＧＥＴメソッドを介して前記キー／値対を送信することを特徴とする請求項１７に記載のコンピュータによる方法。
【請求項１９】
それが実行されるとＷｅｂサイトのクロスサイトスクリプティング脆弱性を自動検出する方法をコンピュータに実行させるコンピュータ可読命令を含むコンピュータ可読媒体であって、
前記Ｗｅｂサイトに対応するキー／値対を決定すること、および
決定した各キー／値対ごとに、少なくとも第１の脆弱性が検出されるまで下位方法を実行することを含み、前記下位方法が、
その値がトレーサ値を含む前記キー／値対を前記Ｗｅｂサイトに送信すること、
前記送信したキー／値対に応答してＷｅｂページを受信すること、
前記受信したＷｅｂページ中に前記トレーサ値が存在する場合はその位置を判定すること、および
前記トレーサ値が前記受信したＷｅｂページに存在する場合、その値がスクリプトを含む第２のキー／値対を前記Ｗｅｂサイトに送信すること
を含むことを特徴とするコンピュータ可読媒体。
【請求項２０】
前記スクリプトが実行されると前記Ｗｅｂサイトがクロスサイトスクリプティング攻撃に対して脆弱であることを知らせ、前記第２のキー／値対の前記スクリプトを含む値の形式が前記判定した前記トレーサ値の位置に基づくことを特徴とする請求項１９に記載のコンピュータ可読媒体。
【請求項２１】
前記コンピュータ可読命令が、前記スクリプトが実行されるかどうかに基づいて前記Ｗｅｂページに対応する脆弱性データをログファイルに書き込むことをさらに含む
ことを特徴とする請求項１９に記載のコンピュータ可読媒体。
【請求項２２】
前記トレーサ値の前記位置を前記Ｗｅｂページの文書オブジェクトモデルに基づいて判定することを特徴とする請求項２０に記載のコンピュータ可読媒体。
【請求項２３】
前記トレーサ値の前記位置が前記Ｗｅｂページの本文の表示テキスト内である場合、前記スクリプトを含む値の前記形式がスクリプトタグで始まることを特徴とする請求項２２に記載のコンピュータ可読媒体。
【請求項２４】
前記トレーサ値の前記位置がＨＴＭＬタグ内である場合、前記スクリプトを含む値の前記形式が前記ＨＴＭＬタグを閉じる記号で始まることを特徴とする請求項２２に記載のコンピュータ可読媒体。
【請求項２５】
前記トレーサ値の前記位置がＩＭＧタグ内である場合、前記スクリプトを含む値の前記形式がグラフィックファイル拡張子で始まることを特徴とする請求項２４に記載のコンピュータ可読媒体。
【請求項２６】
前記トレーサ値の前記位置がスクリプトブロック内である場合、前記スクリプトを含む値の前記形式が<SCRIPT>タグで始まらないことを特徴とする請求項２２に記載のコンピュータ可読媒体。
【請求項２７】
前記トレーサ値の前記位置がコメントフィールド内である場合、前記スクリプトを含む値の前記形式が「-->」で始まることを特徴とする請求項２４に記載のコンピュータ可読媒体。
【請求項２８】
前記コンピュータ可読命令が、
前記下位方法を実行することに先立って、前記Ｗｅｂサイトが許容されるＷｅｂサイトの範囲内にあるかどうか判定すること、および
前記Ｗｅｂサイトが前記許容されるＷｅｂサイトの範囲内にない場合、前記コンピュータによる方法の実行を停止すること
をさらに含むことを特徴とする請求項１９に記載のコンピュータ可読媒体。
【請求項２９】
前記コンピュータ可読命令が、
前記下位方法を実行することに先立って、前記方法を実行する前記コンピュータがホームネットワーク上に位置するかどうか判定すること、および
前記方法を実行する前記コンピュータがホームネットワーク上に位置しない場合、前記コンピュータによる方法の実行を停止すること
をさらに含むことを特徴とする請求項１９に記載のコンピュータ可読媒体。
【請求項３０】
前記キー／値対を決定する元になるＷｅｂサイト情報を前記コンピュータのオペレーティングシステムのクリップボードを介して受信することを特徴とする請求項１９に記載のコンピュータ可読媒体。
【請求項３１】
前記キー／値対を決定する元になるＷｅｂサイト情報を複数の試験対象Ｗｅｂサイトのリストを含む入力ファイルを介して受信することを特徴とする請求項１９に記載のコンピュータ可読媒体。
【請求項３２】
前記Ｗｅｂサイトが対応するキー／値対を含まない場合、それが実行されると前記Ｗｅｂサイトがクロスサイトスクリプティング攻撃に対して脆弱であることを示すスクリプトをその値が含む第３のキー／値対を前記Ｗｅｂサイトに送信すること
をさらに含むことを特徴とする請求項１９に記載のコンピュータ可読媒体。
【請求項３３】
フォームを介して前記キー／値対を送信することを特徴とする請求項１９に記載のコンピュータ可読媒体。
【請求項３４】
ＰＯＳＴコマンドを介して前記キー／値対を送信することを特徴とする請求項３３に記載のコンピュータ可読媒体。
【請求項３５】
ＵＲＬを介して前記キー／値対を送信することを特徴とする請求項１９に記載のコンピュータ可読媒体。
【請求項３６】
ＧＥＴメソッドを介して前記キー／値対を送信することを特徴とする請求項３５に記載のコンピュータ可読媒体。
【請求項３７】
プロセッサと、
前記プロセッサによって実行されると、Ｗｅｂサイトのクロスサイトスクリプティング脆弱性を自動検出する方法をコンピュータシステムに実行させるコンピュータ可読命令を記憶するメモリとを含み、前記方法が、
前記Ｗｅｂサイトに対応するキー／値対を決定すること、および
決定された各キー／値対ごとに、少なくとも第１の脆弱性が検出されるまで、下位方法を実行することを含み、前記下位方法が、
その値がトレーサ値を含む前記キー／値対を前記Ｗｅｂサイトに送信すること、
前記送信したキー／値対に応答してＷｅｂページを受信すること、
前記受信したＷｅｂページに前記トレーサ値が存在する場合、その位置を判定すること、および
前記受信したＷｅｂページに前記トレーサ値が存在する場合、その値がスクリプトを含む第２のキー／値対を前記Ｗｅｂサイトに送信すること
を含むことを特徴とするコンピュータシステム。
【請求項３８】
前記スクリプトが実行されると前記Ｗｅｂサイトがクロスサイトスクリプティング攻撃に対して脆弱であることを知らせ、前記第２のキー／値対の前記スクリプトを含む値の形式が前記トレーサ値の前記判定した位置に基づくことを特徴とする請求項３７に記載のコンピュータシステム。
【請求項３９】
前記コンピュータ可読命令が、前記スクリプトが実行されるかどうかに基づいて前記Ｗｅｂページに対応する脆弱性データをログファイルに書き込むことをさらに含むことを特徴とする請求項３７に記載のコンピュータシステム。
【請求項４０】
前記トレーサ値の前記位置を前記Ｗｅｂページの文書オブジェクトモデルに基づいて判定することを特徴とする請求項３８に記載のコンピュータシステム。
【請求項４１】
前記トレーサ値の前記位置が前記Ｗｅｂページの本文の表示テキスト内である場合、前記スクリプトを含む値の前記形式がスクリプトタグで始まることを特徴とする請求項４０に記載のコンピュータシステム。
【請求項４２】
前記トレーサ値の前記位置がＨＴＭＬタグ内である場合、前記スクリプトを含む値の前記形式が前記ＨＴＭＬタグを閉じる記号で始まることを特徴とする請求項４０に記載のコンピュータシステム。
【請求項４３】
前記トレーサ値の前記位置がＩＭＧタグ内である場合、前記スクリプトを含む値の前記形式がグラフィックファイル拡張子で始まることを特徴とする請求項４２に記載のコンピュータシステム。
【請求項４４】
前記トレーサ値の前記位置がスクリプトブロック内である場合、前記スクリプトを含む値の前記形式が<SCRIPT>タグで始まらないことを特徴とする請求項４０に記載のコンピュータシステム。
【請求項４５】
前記トレーサ値の前記位置がコメントフィールド内である場合、前記スクリプトを含む値の前記形式が「-->」で始まることを特徴とする請求項４２に記載のコンピュータシステム。
【請求項４６】
前記コンピュータ可読命令が、
前記下位方法を実行することに先立って、前記Ｗｅｂサイトが許容されるＷｅｂサイトの範囲内にあるかどうか判定すること、および
前記Ｗｅｂサイトが前記許容されるＷｅｂサイトの範囲内にない場合、前記コンピュータによる方法の実行を停止すること
をさらに含むことを特徴とする請求項３７に記載のコンピュータシステム。
【請求項４７】
前記コンピュータ可読命令が、
前記下位方法を実行することに先立って、前記方法を実行する前記コンピュータがホームネットワーク上に位置するかどうか判定すること、および
前記方法を実行する前記コンピュータが前記ホームネットワーク上に位置しない場合、前記コンピュータによる方法の実行を停止すること
をさらに含むことを特徴とする請求項３７に記載のコンピュータシステム。
【請求項４８】
前記キー／値対を決定する元になるＷｅｂサイト情報を前記コンピュータのオペレーティングシステムのクリップボードを介して受信することを特徴とする請求項３７に記載のコンピュータシステム。
【請求項４９】
前記キー／値対を決定する元になるＷｅｂサイト情報を複数の試験対象Ｗｅｂサイトのリストを含む入力ファイルを介して受信することを特徴とする請求項３７に記載のコンピュータシステム。
【請求項５０】
前記Ｗｅｂサイトが対応するキー／値対を含まない場合、それが実行されると前記Ｗｅｂサイトがクロスサイトスクリプティング攻撃に対して脆弱であることを示すスクリプトをその値が含む第３のキー／値対を前記Ｗｅｂサイトに送信すること
をさらに含むことを特徴とする請求項３７に記載のコンピュータシステム。
【請求項５１】
フォームを介して前記キー／値対を送信することを特徴とする請求項３７に記載のコンピュータシステム。
【請求項５２】
ＰＯＳＴコマンドを介して前記キー／値対を送信することを特徴とする請求項５１に記載のコンピュータシステム。
【請求項５３】
ＵＲＬを介して前記キー／値対を送信することを特徴とする請求項３７に記載のコンピュータシステム。
【請求項５４】
ＧＥＴメソッドを介して前記キー／値対を送信することを特徴とする請求項５３に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータおよびコンピュータネットワークに関する。より詳細には、本発明はコンピュータセキュリティ、およびクロスサイトスクリプティング型攻撃に対するＷｅｂサイトの脆弱性の自動検出を提供することによりハッカーによるコンピュータシステムに対する悪意ある攻撃を防止することに関する。
【背景技術】
【０００２】
インターネットが普及したことにより、コンピュータハッカーがＷｅｂサービスを混乱させ、企業のＷｅｂサイトに不具合を生じさせ、ユーザの私的な個人情報を悪用しようと試みる大きな活躍の場が作り出された。インターネットを基盤とする攻撃の典型的なタイプには、バッファオーバフロー攻撃、サービス妨害攻撃、およびクロスサイトスクリプティング（ＸＳＳ、以前は当技術分野でＣＳＳとして知られていた）攻撃と呼ばれる新しいクラスの攻撃が含まれる。
【０００３】
クロスサイトスクリプティング攻撃は、サーバがＨＴＴＰまたはＨＴＴＰＳを介してユーザのクライアントコンピュータに何らかのユーザ入力データを戻すことに付け込む。たとえば、図１に示すように、ＣＧＩスクリプトが入力として人の名前を受け入れるとする。このＣＧＩスクリプトは、図２に示すように、その人向けのメッセージを表示するＨＴＭＬ文書をクライアントコンピュータに戻すことができる。図２では、戻されたデータを例示のために限り太字で示す。
【０００４】
ハッカーなどの悪意あるユーザは、この返信機能を悪用してクライアントコンピュータ上で悪意あるコードを実行できることがある。たとえば、悪意あるユーザは、不注意なユーザを促して、図３に示すようなＵＲＬに対応するハイパーリンクをクリックさせることができる。悪意あるユーザは、不注意なユーザに一方的に送りつけられる電子メールで無害に見えるリンクを送信することがあり、あるいは、たとえば、人気のある有名人に関する情報を宣伝するなど、多くの人々が見ようとするＷｅｂページを運営していることがある。いずれのシナリオ（電子メールまたはＷｅｂページ）でも、図３に示すようなＵＲＬに対応するハイパーリンクが送信され（ＧＥＴ要求）、あるいはＨＴＭＬフォームに悪意あるフォームデータを事前に取り込ませる（ＰＯＳＴ要求）。ＣＧＩスクリプトは、サーバで実行されると、図４に示すようなＨＴＭＬ文書をクライアントに戻す。図４では、返信されたデータを例示のために限り太字で示す。ユーザのＷｅｂブラウザは、その有害なＪａｖａ（登録商標）Ｓｃｒｉｐｔを信頼するＷｅｂページ（goodguy.com）から受信するので、そのスクリプトを実行し、たとえばユーザの個人ログイン名およびパスワード、アカウント情報、クレジットカード情報などを含むクッキーなど、通常ならgoodguy.comからアクセスできるはずの何に対してでもアクセスを許可することになる。
【０００５】
信頼するＷｅｂサイトから発信されたように見えるが実は悪意あるユーザから発信されたスクリプトをユーザのローカルコンピュータ上で実行できることは深刻なセキュリティ上の脆弱性である。たとえば、簡単なスクリプトalert(document.cookie)は、ユーザの現在のgoodguy.com用の１組のクッキーを表示するアラートダイアログボックスをポップアップ表示させる。当技術分野の技術者であれば、パスワードやクッキーに格納されるその他の個人情報（たとえばクレジットカード情報）を盗み出すことやユーザを別の（悪意ある）Ｗｅｂサイトに転送することを含めて、悪意あるユーザがより一層深刻な損害を与える可能性があることを理解するであろう。
【０００６】
たとえば、入力が悪意あるコードを含まないことを確認するために、受信した入力に対する妥当性検査を実行することによって、あるいはＨＴＭＬにおいて特別な意味を持つ文字を符号化することによってクロスサイトスクリプティング攻撃を防止する解決法が提案されているが、今のところ、Ｗｅｂサイトがクロスサイトスクリプティング攻撃を受けやすいかどうか自動的に試験する方策はない。クロスサイトスクリプティング脆弱性を試験するためには、試験者は様々な試験データを含むＵＲＬの形で試験データをＷｅｂサーバに手動で送信しなければならない。この手動試験は冗長であり、不必要なリソース（すなわち工数）を消費する。
【０００７】
したがって、Ｗｅｂサイトがクロスサイトスクリプティング攻撃を受けやすいかどうか試験する自動化された解決法を提供すれば、当分野における前進である。単純なクロスサイトスクリプティング脆弱性を検査するだけでなく、高度なクロスサイトスクリプティング攻撃を受けやすいかどうかも試験する自動化されたソフトウェア試験ツールを提供すれば、当分野におけるさらなる前進である。その自動化ソフトウェアツールが、ユーザが普通のＷｅｂブラウザを使用してＷｅｂサイトを閲覧する場合と同じ普通のＷｅｂブラウザによって使用されるエンジンを使用して、試験対象サイトが正しく動作することを確認できれば、それは当分野におけるさらなる前進である。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
前述の従来技術における限界を克服するとともに、本明細書を読み理解すれば明らかになるその他の限界を克服するために、本発明はＷｅｂサイトがクロスサイトスクリプティング攻撃を受けやすいかどうか検出する自動化ソフトウェアツールを対象とする。
【課題を解決するための手段】
【０００９】
自動化ソフトウェアツールは、Ｗｅｂサイトに入力としてトレーサ値を送信（ｓｕｂｍｉｔし、トレーサ値を送信した結果としてＷｅｂサイトから戻されるＷｅｂページを監視する。戻されたＷｅｂページにそのトレーサ値が存在する場合、自動化ソフトウェアツールは、そのＷｅｂサイトがクロスサイトスクリプティング（ＸＳＳ）攻撃に対して脆弱である可能性があることを知る。そのＷｅｂサイトが実際にＸＳＳ攻撃に対して脆弱であるかどうか確認するために、自動化ソフトウェアツールは、戻されたトレーサ値の位置に基づいて、Ｗｅｂサイトに入力として信号スクリプトを送信し、続いて戻されるＷｅｂページを監視して、続いて戻されるＷｅｂページがローカルコンピュータ上にロードされるときにその信号スクリプトがローカルコンピュータによって実行されるかどうか判定する。スクリプトが実行される場合、自動化ソフトウェアツールは、判定されたトレーサ値の位置に基づいて送信されたスクリプトの形式に対応するＸＳＳ攻撃に対して、そのＷｅｂサイトが脆弱であることを知る。
【００１０】
本発明および本発明の利点のより完全な理解は、以下の説明を添付の図面を検討しながら参照することにより得ることができる。図面において類似の番号は類似の特徴を示す。
【発明を実施するための最良の形態】
【００１１】
以下の様々な実施形態の説明において、本明細書の一部を形成する添付の図面を参照する。図面では、本発明を実施できる様々な実施形態を例として示す。他の実施形態を利用することができ、本発明の範囲を逸脱することなく構造的および機能的改変を行うことができることを理解されたい。
【００１２】
図５を参照すると、本発明を実装するための例示的システムは、コンピュータ装置１００などのコンピュータ装置を含む。その最も基本的な構成において、コンピュータ装置１００は一般に、少なくとも１つの処理ユニット１０２およびメモリ１０４を含む。コンピュータ装置の厳密な構成およびタイプに応じて、メモリ１０４は揮発性（ＲＡＭなど）、不揮発性（ＲＯＭ、フラッシュメモリなど）、または両者の何らかの組合せとすることができる。この最も基本的な構成を図５に破線１０６で示す。さらに、装置１００は追加の機構／機能を備えることもできる。たとえば、装置１００は、それだけには限らないが、磁気または光のディスクまたはテープを含む（取外し可能および／または取外し不能の）追加記憶装置を含むこともできる。そうした追加記憶装置を取外し可能記憶装置１０８および取外し不能記憶装置１１０で図５に示す。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、他のデータなどの情報を記憶するための任意の方法または技術において実装される揮発性および不揮発性、取外し可能および取外し不能媒体が含まれる。メモリ１０４、取外し可能記憶装置１０８および取外し不能記憶装置１１０はすべて、コンピュータ記憶媒体の例である。コンピュータ記憶媒体には、それだけには限らないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、ディジタル多用途ディスク（ＤＶＤ）または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、あるいは所望の情報を記憶するために使用でき装置１００からアクセスできる任意の他の媒体が含まれる。任意のそうしたコンピュータ記憶媒体を装置１００の一部とすることができる。
【００１３】
装置１００は、この装置が他の装置と通信できるようにする１つまたは複数の通信接続１１２を備えることもできる。通信接続１１２は通信媒体の一例である。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを、搬送波または他の伝送機構などの変調データ信号で実施し、任意の情報配信媒体を含む。「変調データ信号」という用語は、その１つまたは複数の特性が、その信号中に情報を符号化するような方式で設定または変更されている信号を意味する。通信媒体には例として、それだけには限らないが、有線ネットワークや直接配線接続などの有線媒体、および音波、ブルートゥース、ＲＦ、赤外線、他の無線媒体などの無線媒体が含まれる。本明細書で使用するコンピュータ可読媒体という用語は、記憶媒体と通信媒体の両方を含む。
【００１４】
通信接続１１２は、装置１００が、１つまたは複数のネットワーク１１８を介してリモート装置、たとえばサーバ１２０と通信できるようにする。サーバ１２０はＷｅｂサービスを提供するアプリケーションサービスプロバイダのサーバ、Ｗｅｂサイトの１つまたは複数のＷｅｂページにアクセスするためのＷｅｂサーバ、またはクライアントマシンとして働く装置１００がアクセスできる任意の他のサーバとすることができる。ネットワーク１１８は、例としてインターネット、企業のイントラネット、ＬＡＮ、広域ネットワーク（ＷＡＮ）などを含めて、任意の数およびタイプの有線および／または無線ネットワークを含むことができる。
【００１５】
また、装置１００は、キーボード、マウス、ペン、音声入力装置、タッチ入力装置などの入力装置１１４を備えることもできる。また、ディスプレイ、スピーカ、プリンタなどの出力装置１１６を含むこともできる。これらの装置はすべて当技術分野で公知であり、本明細書で詳細に説明する必要はない。
【００１６】
図５に、本発明を実装できる適当な動作環境１００の例を示す。動作環境１００は適当な動作環境の一例に過ぎず、本発明の使用または機能の範囲に関する限定を示唆するためのものではない。本発明と共に使用するのに適する他の公知のコンピュータシステム、環境、および／または構成には、それだけには限らないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサに基づくシステム、プログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは装置のいずれかを含む分散コンピュータ環境などが含まれる。
【００１７】
本発明は、１つまたは複数のコンピュータあるいは他の装置によって実行される、プログラムモジュールなどのコンピュータ実行可能命令という一般的な脈絡の中で説明することができる。一般に、プログラムモジュールには、コンピュータまたは他の装置においてプロセッサによって実行された場合に特定のタスクを実施し、あるいは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。コンピュータ実行可能命令は、ハードディスク、光ディスク、取外し可能記憶媒体、固体メモリ、ＲＡＭなどのコンピュータ可読媒体上に記憶することができる。当分野の技術者であれば理解するように、プログラムモジュールの機能は、様々な実施形態において所望どおりに組み合わせ、あるいは分配することができる。また、その機能の全体または一部を、集積回路、フィールドプログラマブルゲートアレイ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ、ＦＰＧＡ）など、ファームウェアまたはハードウェアの等価物として実施することもできる。
【００１８】
図６〜図１２を参照すると、本発明はＷｅｂサイトがハッカーまたはその他悪意のユーザによるクロスサイトスクリプティング（ＸＳＳ）攻撃を受けやすいかどうか検査する自動化されたソフトウェア試験ツールを提供する。図６に、自動化ソフトウェアツールのユーザが利用できる様々な機能および選択肢を示す、このツールのメインメニューの画面ショットを示す。図７に、ユーザがクロスサイトスクリプティング型攻撃を受けやすいかどうか判定しようとするＷｅｂページの画面ショットを示す。図８に、この自動化ソフトウェアツールの例示的実施形態によって実施される、クロスサイトスクリプティング攻撃を受けやすいかどうか判定する方法を示す。以下で各図をより詳細に説明する。
【００１９】
図６には、本発明の例示的実施形態による、自動化ソフトウェアツールのメインメニュー６０１を示す。この自動化ソフトウェアツールを起動した後、ユーザは、ＸＳＳ脆弱性を試験しようとするＷｅｂサイトに対応するホスト名を入力ボックス６０３に入力することができる。同様に、ユーザは、具体的なＵＲＩデータ、ポート番号、およびフォームデータを入力ボックス６０５、６０７および６０９にそれぞれ入力する。ＵＲＩデータ６０５は、ＵＲＬのドメイン名部分の後のデータを指す。ポート番号６０７は、リモートサーバ上のアクセス可能な任意のポートとすることができる。ただし、特に指定しない限り、デフォルトではポート８０が使用される。というのはポート８０がＷｅｂブラウザトラフィックに対応するからである。フォームデータ６０９には、ホスト６０３がＵＲＩ６０５を介してポート６０７上で受信すると予想するフォームフィールドを記述する。
【００２０】
上記のＷｅｂサイト情報を入力した後で、ユーザはセキュアソケットレイヤ（ＳＳＬ）を使用すべきかどうか入力ボックス６１１を介して選択するなど、追加の選択肢を指定することができる。たとえば、一部のＷｅｂページは、ＨＴＴＰＳ（セキュリティ機能を付加した接続）を介してのみアクセスすることができる。この場合、ユーザはＳＳＬを指定する必要がある。たとえば、Ｗｅｂサイトへのログインページは、安全のためＳＳＬを介さないと機能しない可能性が高い。ユーザはまた、ＧＥＴメソッドを使用してテストを実施するかそれともＰＯＳＴメソッドを使用して実施するかを、入力ボックス６１３を介して選択することもできる。ＧＥＴメソッドは一般に、サーバに送信されるＵＲＬ中に変数のデータを含めることをいう。ＰＯＳＴメソッドは一般に、Ｗｅｂページのフォームフィールドを介してＰＯＳＴメソッドによってフォームデータを送信することをいう。Ｗｅｂサイト情報および関連選択肢が入力された後、ユーザは「実行する」ボタン６１５を選択して試験プロセスを起動する。
【００２１】
各Ｗｅｂサイトの情報を手入力する代わりに、ユーザは複数のＷｅｂサイトに対応する情報をデータファイルに記憶させることができる。ユーザは、「ファイルを実行する」ボタン６１７を選択することによって、メニュー６０１に各Ｗｅｂサイトごとの情報を手入力するように要求されずに、各Ｗｅｂサイトを自動的に試験することができる。ボタン６１７が選択されると、複数Ｗｅｂサイトに対応する情報を含むファイルのファイル名を入力するようユーザに促すことができる。代替として、たとえば「webdata.csv」など所定の名前でファイルに情報を記憶させるようユーザに求めることもできる。自動化ソフトウェアツールは、ボタン６１７の選択時に所定のファイルからその情報を取り込む。
【００２２】
別の代替方法によれば、ユーザは、たとえばマイクロソフトＷＩＮＤＯＷＳ（登録商標）ブランドのオペレーティングシステムなど、オペレーティングシステムのクリップボード（図示せず）にＵＲＬを単にコピーすることもできる。次いで自動化ソフトウェアツールがそのＵＲＬをパースして、入力フィールド６０３、６０５、６０７、６０９に適切なＷｅｂサイト情報を決定する。たとえば、ユーザが図７に示すＷｅｂサイト７０１の試験を望んでいると想定する。ユーザは、ＵＲＬ７０３をハイライト表示させ、メニューバー７０５から編集、コピーと選択し、あるいはこれに対応するショートカットＣｔｒｌ＋Ｃを入力することによって、ＵＲＬ７０３をクリップボードにコピーすることができる。再度図６を参照すると、ユーザは次いで「クリップボードをパースする」ボタン６１９を選択することができる。これによって自動化ソフトウェアツールにクリップボードの現在の内容をパースさせ、図６に示すように、入力フィールド６０３、６０５、６０７、６０９にホスト名、ＵＲＩ、ポート、フォームデータをそれぞれ自動的に取り込ませる。クリップボードの現在の内容がＷｅｂサイトに対応しない場合、自動化ソフトウェアツールはユーザにエラー（図示せず）を表示する。クリップボードの内容のパースに成功した後で、ユーザはボタン６１５を選択してＷｅｂサイト７０１を試験することができる。以下で図８を参照してより詳細に試験プロセスを説明する。
【００２３】
ユーザが、自動試験プロセスを終了する前に自動化ソフトウェアツールを打ち切ろうとする場合、ユーザは「実行を打ち切る」ボタン６２５を選択することができる。このボタンは、（図示のように）ユーザが、試験プロセス中に選択する際に、任意選択に限って使用することができる。自動化ソフトウェアツールがＷｅｂサイトの試験を完了した後で、ユーザは「ログを閲覧する」ボタン６２３を選択することによって生成されたログファイルを閲覧することができる。ユーザがログファイルを保持する必要がない、あるいはそのログファイルの削除を望む場合は、ユーザは「ログを消去する」ボタン６２１を選択することによってログファイルを消去することができる。
【００２４】
メインメニュー６０１には、他の任意選択の情報を提示することもできる。たとえば、状況表示６２７は、自動化ソフトウェアツールが（図示のように）Ｗｅｂサイトを試験できる状況にあるかどうか、ユーザからの入力を待機中、クリップボードをパース中、複数Ｗｅｂサイトに対応する情報を含むファイルをパース中、試験中などを示すことができる。Ｗｅｂサイトの試験中および／またはその後に、表示６２９は現在のＷｅｂサイトが合格した試験数を示すことができ、表示６３１は現在のＷｅｂサイトが失格した試験数（すなわち、自動化されたソトウェアツールが現在のＷｅｂサイトに付け込む（ｅｘｐｌｏｉｔ）ことができた、したがって、そのＷｅｂサイトがＸＳＳ攻撃を受けやすい様々な進入路）を示すことができる。
【００２５】
図８に、本発明の例示的実施形態による、ＷｅｂサイトがＸＳＳ型の攻撃を受けやすいかどうか試験する方法を示す。まず、ステップ８０１で、ユーザは試験対象のＷｅｂサイトにナビゲートする。ステップ８０３で、ユーザはＷｅｂサイトのＵＲＬをクリップボードにコピーし、ステップ８０５で自動化ソフトウェアツール上の「クリップボードをパースする」ボタンを選択し、自動化ソフトウェアツールにクリップボードをパースさせ、前述のように各Ｗｅｂサイト情報フィールドに情報を取り込ませる。ステップ８０７でユーザが「実行する」ボタンを選択すると、自動化ソフトウェアツールは試験を開始する。当分野の技術者であれば、ステップ８０１〜８０７の代わりに、前述のようにユーザが自動化ソフトウェアツールのメインメニュー（図６）で情報を手入力でき、あるいは試験する複数のＷｅｂサイトを入力ファイルで指定できることを理解するであろう。本明細書では例示のために限り、１つの試験対象Ｗｅｂサイトについてだけ説明する。
【００２６】
ステップ８０９で、自動化ソフトウェアツールは、そこで対象Ｗｅｂサイトを試験するために新規のブラウザウィンドウを開く。ステップ８１１で自動化ソフトウェアツールは、フォームデータ６０９（図６）をパースしてキーと値の対に分解する。各キー／値対はアンパサンド（＆）で区切り、キー名とそれに対応する値は等号（＝）で区切る。図６および図７に示す例では、各キーの値はヌルである。しかし、キーＮＧＳｅａｒｃｈに対して値「hacking」が指定された場合、この例は「email45=&emailaddr=&NGSearch=hacking&SearchType=&...」のようになる。
【００２７】
自動化ソフトウェアツールは続いて、各キー／値対に基づきＸＳＳ攻撃に対するＷｅｂサイトの脆弱性を検査する。すなわち、自動化ソフトウェアツールはまず、第１のキー／値対に基づいて脆弱性を試験し、次いで、第２のキー／値対に進み、以下同様に進んですべてのキー／値対をテストする。したがって、ステップ８１３で自動化ソフトウェアツールは、現在のキー／値対と呼ばれる第１の（または次の）キー／値対を選択する。
【００２８】
自動化ソフトウェアツールは、現在のキー／値の各対ごとにステップ８１５〜８３５を実施する。ステップ８１５で、自動化ソフトウェアツールは、現在のキー／値対の値として、たとえばCSSTESTAGなどのプレーンテキストのトレーサを挿入し、その結果得られるＵＲＬをステップ８０９で開いた新規のブラウザウィンドウを介して送信する。たとえば、現在のキー／値対が第１のキー／値対であるとすると、自動化ソフトウェアツールはまず、ステップ８１５で図９に示すＵＲＬを送信する。ステップ８１７で、自動化ソフトウェアツールは、ＵＲＬを送信した相手先のＷｅｂサーバ（たとえば、図５のサーバ１２０）から戻されるＨＴＭＬデータを受信し、その自動化サーバツールはそのＨＴＭＬを走査してサーバによってトレーサ値が戻されたどうか検査する。本発明の一例示的実施形態においては、走査中のＷｅｂサイトの挙動がユーザのブラウザウィンドウにおける場合と全く同じになるようにするために、自動化ソフトウェアツールはＷｅｂページの文書オブジェクトモデル（ＤＯＭ）を走査する。戻されたＨＴＭＬ  ＷｅｂページのＤＯＭは（たとえば、mshtml.dll、dispex.dll、iesetup.dll、mshtml.tlb、mshtmled.dll、mshtmler.dllを使用して）インターネットエクスプローラのＨＴＭＬレンダリングエンジンによって明らかにされる。ＤＯＭにトレーサ値が見つからなかった場合、自動化ソフトウェアツールはステップ８１９でキー／値対が残っているかどうか判定し、残っている場合はステップ８１３に戻る。残りのキー／値対がない場合、自動化ソフトウェアツールはステップ８３７に進む。
【００２９】
ＨＴＭＬ  ＤＯＭにトレーサ値が見つからなかった場合、ツールはステップ８１９に進む。しかし、ＨＴＭＬ  ＤＯＭにトレーサ値が見つかった場合、自動化ソフトウェアツールは、ステップ８１７で、トレーサ値がどこで見つかったかも分析する。次に、ステップ８２１で、自動化ソフトウェアツールは、トレーサ値が見つかった位置が、それに対する付け込み手段の存在が知られている特殊な事例に相当するかどうか判定する。相当すると判定した場合、自動化ソフトウェアツールはステップ８２３で、ステップ８１７でトレーサ値が見つかった位置に基づいて、そのＷｅｂサイトのクロスサイトスクリプティング攻撃に対する脆弱性に付け込もうと試みる。特殊な事例が存在しない場合、自動化ソフトウェアツールはステップ８２９に進み、ＤＯＭにカスタムＨＴＭＬを挿入するための別のトレーサ値を使ってそのＷｅｂサイトに付け込もうと試みる。
【００３０】
既知の付け込み手段を示す位置の例は、それだけには限らないが、以下のとおりである。
１）Ｗｅｂページの本文中に表示されるテキストとして戻されるトレーサ値。
戻されるＷｅｂページの本文中の表示テキストとしてトレーサ値が戻される場合、自動化ソフトウェアツールは、そのＷｅｂサイトが脆弱であれば、現在のキー／値対の値としてスクリプトをそのままで挿入することによってクロスサイトスクリプティング攻撃を達成できると判定する。すなわち、自動化ソフトウェアツールは「<script>exploit-script-goes-here;</script>」（引用符を除く）の形でスクリプトを挿入することができる。
【００３１】
２）ＨＴＭＬタグ中で戻されるトレーサ値。
ＨＴＭＬタグ中でトレーサ値が戻される場合、その結果得られるＨＴＭＬは、トレーサ値が入力値として送信された以下の例と同様に表示されることがある。
<INPUT type="text" value="CSSTESTTAG">
しかし、「ＩＮＰＵＴ」タグは、トレーサ値の出現に先立って閉じられないことに気付く。したがって、自動化ソフトウェアツールは、そのＷｅｂサイトが脆弱であれば、たとえば、「><SCRIPT>exploit-script-goes-here;</SCRIPT>」（引用符を除く）の形でタグ閉じ記号を先頭に付けたスクリプトを挿入することによって、クロスサイトスクリプティング攻撃を達成できると判定する。
Ｗｅｂサイトによっては、先行するタグを閉じることはできないが、属性が付加されることがある。したがって、自動化ソフトウェアツールは値に属性を付加しようと試みることもできる。たとえば、郵便番号の値「90210 onclick="exploit-script-goes-here;"」（外側の引用符を除く）を送信するＨＴＭＬ「<A HREF=www.test.com/default.asp?zip=>」でトレーサが戻される場合である。その結果得られるＨＴＭＬは図１０に示す例のようになることがある。その結果生じたリンクをクリックすると、挿入されたスクリプトを起動する。
【００３２】
３）ＩＭＧまたはＡ  ＨＲＥＦタグの属性として戻されるトレーサ値。
「IMG」、「A」およびその他いくつかのタグではＵＲＬを属性として指定できる。したがって、自動化ソフトウェアツールは、そのＷｅｂサイトが脆弱であれば、ＵＲＬとしてスクリプトプロトコルを挿入することによって、クロスサイトスクリプティング攻撃を達成できると判定する。たとえば、ｊａｖａ（登録商標）script:exploit-script-goes-here、vbscript:exploit-script-goes-hereなどである。場合によっては、ＷｅｂサイトがＩＭＧ  ＳＲＣ属性の一部としてユーザによる入力を使用することがある。すなわち、Ｗｅｂサイトはユーザ入力を基にしてファイル名を生成することができ、たとえば、入力値「CSSTESTTAG」がタグ「<IMG SRC=fooCSSTESTTAG.jpg>」（引用符を除く）という結果になることがある。したがって、自動化ソフトウェアツールは、そのＷｅｂサイトが脆弱であれば、「.jpg>」の前に置いたスクリプトを挿入することによってクロスサイトスクリプティング攻撃を達成できると判定する。
【００３３】
４）スクリプトブロックの一部として戻されるトレーサ値。
トレーサ値はスクリプトブロックに挿入することもできる。この場合、入力されるスクリプトにＳＣＲＩＰＴタグを含む必要がない。ただし、この攻撃では、戻されるデータが構文上正しいスクリプトである必要がある。たとえば、慎重な閲覧を勧告するサイトの一部に入ろうとしていることをユーザに知らせるＷｅｂページが、ユーザが宛先変更されるはずの転送先ページの転送値を含むことがある。そのページのＵＲＬは以下のようになることがある。
http://www.test.com/blabla/acssrv.dll?action=acwarning&redir_url=%2Fisapi%2Facssrv%2Edll%3Faction%3Derror%26commid%3D
このＵＲＬ中で渡されるパラメータの１つはredir_urlである。ユーザ入力データは、「var Request_redir_url='/isapi/acssrv.dll?action=error&commid=';」などのように、ＳＣＲＩＰＴタグ内で戻すことができる。このＵＲＬからのredir_urlの値はRequest_redir_urlという名前のＪａｖａ（登録商標）Ｓｃｒｉｐｔ変数の値になる。自動化ソフトウェアツールは、そのＷｅｂサイトが脆弱であれば、たとえば以下のようなＵＲＬを使用して、ＳＣＲＩＰＴタグなしでＵＲＬの末尾にスクリプトを挿入することによって、クロスサイトスクリプティング攻撃を達成できると判定する。
http://www.test.com/isapi/acssrv.dll?action=acwarning&c=&redir_url=%2Fisapi%2Facssrv%2Edll%3Faction%3Derror%26commid%3D';some-evil-Java Script-goes-here;var%20strBogus='gotcha
自動化ソフトウェアツールが上記のＵＲＬを送信すると、以下がＳＣＲＩＰＴタグ内でブラウザに戻される。
「var Request_redir_url='/isapi/acssrv.dll?action=error&commid=';alert("Cross-siteScriptingVulnerabilityFoundByCSSProbe.");var strBogus='gotcha」
自動化ソフトウェアツールは、スクリプトの後に「var strBogus='gotcha」を含むことによって、そのスクリプト（すなわち、alert("Cross-siteScriptingVulnerabilityFoundByCSSProbe.")）の挿入に成功する。というのは、Ｗｅｂサーバの一部（たとえばＭＳＮ）は、ユーザ入力データの後に必ず「'」を付加するからである。自動化ソフトウェアツールは、スクリプトエラーを回避するようにｓｔｒＢｏｇｕｓという名前の新規の変数を宣言することによって、そのスクリプトを構文上正しいものにする。
【００３４】
５）ＨＴＭＬコメント中で戻されるトレーサ値。
ユーザ入力データ（すなわちトレーサ値）は、ＨＴＭＬコメント内で戻されることがある。たとえば、ＣＧＩスクリプトはエラーを戻し、ユーザ入力をデバッグに使用する。しかし、コメントフィールドは、ここでのトレーサ値CSSTESTTAGの出現に先立って閉じられることはない。したがって、自動化ソフトウェアツールは、そのＷｅｂサイトが脆弱であれば、たとえば、「--> <SCRIPT>exploit-script-goes-here;</SCRIPT>」（引用符を除く）の形で、コメント閉じ記号を先頭に付けたスクリプトを挿入することによって、クロスサイトスクリプティング攻撃を達成できると判定する。
【００３５】
６）それに対する付け込み手段の存在が知られている位置以外に位置するトレーサ値。
場合によっては、ＤＯＭ中のそれに対する付け込み手段があると知られていない位置でトレーサ値が見つかることがある。そうした状況において、自動化ソフトウェアツールは、ＳＴＹＬＥ属性を挿入することによってＷｅｂサイトに付け込もうと試みることができる。自動化ソフトウェアツールは、他の特定の位置で見つかるトレーサ値に基づいて他の属性を挿入することもできるが、ＳＴＹＬＥ属性は、多くのＨＴＭＬタグに共通なので、デフォルトの、またはフォールバックの試行として使用される。したがって、自動化ソフトウェアツールは、'STYLE=、"STYLE=など様々な形式でＳＴＹＬＥ属性を挿入することによって様々な付け込みを試みることができる。
【００３６】
上記の各シナリオは例示のためのものに過ぎず、この自動化ソフトウェアツールをそれらのシナリオだけに限定していると解釈すべきではない。当分野の技術者であれば、他のシナリオが知られており、あるいは後日発見される可能性があり、この自動化ソフトウェアツールをそうした他のシナリオに対応するように適合できることを理解するであろう。
【００３７】
再度図８を参照すると、自動化ソフトウェアツールはステップ８２３で、前述の悪意のないスクリプトを挿入することによってＷｅｂサイトに付け込もうと試みる。本発明の例示的実施形態においては、<SCRIPT>alert("Cross-siteScriptingVulnerabilityFoundByCSSProbe.")</SCRIPT>などのスクリプトを使用する。容易に識別可能な任意の他のテキストを代わりに使用することができる。したがって、付け込みに成功した場合、その結果ブラウザウィンドウに戻されるＨＴＭＬは、図１１に示すようにテキスト「Cross-siteScriptingVulnerabilityFoundByCSSProbe」をポップアップウィンドウに表示させる。ステップ８２５で、自動化ソフトウェアツールは、ローカルシステムにそのポップアップウィンドウが表示されるかどうか監視することによって付け込みが成功したかどうか判定する。所定の時間内、たとえば戻されたＨＴＭＬのロードが完了した時またはその直後までにポップアップウィンドウが表示されなかった場合、自動化ソフトウェアツールは付け込みに失敗したと判定し、ステップ８２９に進む。しかし、所定の時間内にポップアップウィンドウが表示された場合、自動化ソフトウェアツールは、付け込みに成功したと判定し、ステップ８２７に進む。そこで、そのＷｅｂサイトが受けやすいＸＳＳ攻撃のタイプを識別するのに十分な情報と共に付け込みデータがログファイルに書き込まれる。このログファイルは、後刻ユーザが検討して、たとえば、対象Ｗｅｂサイトをデバッグする際に役立てることができる。
【００３８】
図１２を参照すると、たとえば一実施形態では、ログファイルがＨＴＭＬ文書として書かれており、ユーザは試験サイクルの完了時にそれを検討することができる。ログファイル中の各エントリはテーブル中の一行として表示することができ、各Ｗｅｂページが脆弱かそれとも安全かを示すように各エントリを色分けすることができる。当分野の技術者であれば、ログファイルは、各Ｗｅｂページがそれに対して脆弱である付け込みのタイプをユーザに示すのに十分な任意のファイルタイプとすることができることを理解するであろう。ステップ８２７でその付け込みを記録した後で、自動化ソフトウェアツールはステップ８１９に戻る。
【００３９】
ステップ８２９で、自動化ソフトウェアツールは、ステップ８２３で試みた付け込みの結果に基づき、タグに基づくトレーサ値を挿入する。たとえば、ステップ８１７で自動化ソフトウェアツールが、それへの付け込み方が分かっているタグ属性中にトレーサ値を発見しなかった場合は、たとえば<CSSTESTTAG>などのタグをＤＯＭに追加しようと試みる。自動化ソフトウェアツールはまず、<CSSTESTTAG>を送信する。というのはそれが一般に、Ｗｅｂサイトの付け込みに成功する可能性が最も高いタグだからである。また、自動化ソフトウェアツールは、"><CSSTESTTAG>、'><CSSTESTTAG>、生成されるＤＯＭにタグを挿入しようとするその他の構文変形などを使って、Ｗｅｂサイトに付け込もうと試みることができる。ＤＯＭ内にタグが見つかると、自動化ソフトウェアツールはスクリプトタグおよび悪意のないスクリプト付け込みコードで<CSSTESTTAG>を置き換える。ステップ８３１で、自動化ソフトウェアツールは戻されたＨＴＭＬおよび／またはＤＯＭを検査して、サーバが戻されたＷｅｂページ中で新規のトレーサ値を戻したかどうか判定する。戻した場合、自動化ソフトウェアツールはステップ８３３に進む。戻さなかった場合、自動化ソフトウェアツールはステップ８１９に進む。
【００４０】
ステップ８３３では、サーバによって新規のトレーサ値が戻されたので、自動化ソフトウェアツールは、この場合もやはり戻されたＷｅｂページ中の新規のトレーサ値の位置に基づいて付け込みスクリプトを送信することによってそのＷｅｂサイトに付け込もうと試みる。ステップ８３５で、自動化ソフトウェアツールは、所定の時間内にポップアップウィンドウが表示されるかどうかに基づいて、付け込みに成功したかどうか判定する。ステップ８３３での付け込みに成功した場合、自動化ソフトウェアツールはステップ８２７に進み、そこでその付け込みをログファイルに記録する。付け込みに失敗した場合、自動化ソフトウェアツールはステップ８１９に進む。
【００４１】
ステップ８３７で自動化ソフトウェアツールは、ＤＯＭに付け込み可能な属性を挿入することによってＷｅｂサイトに付け込もうと試みる。すなわち、一部のＷｅｂサイトは、キー／値対を受け入れると明示的に示していないが、キー／値対が送信されるとそれを受け入れる。たとえば、「http://www.test.com/main.asp」というＵＲＬのＷｅｂサイトはキー／値対を受け入れるように見えない。しかし、ＵＲＬ「http://www.test.com/main.asp?name=CSSTESTTAG」が送信された場合、その結果得られるＨＴＭＬまたはＤＯＭはトレーサ値「CSSTESTTAG」を含むことができる。したがって、自動化ソフトウェアツールは、そのＷｅｂサイトが脆弱であれば、前述のように属性トレーサ値の位置に基づくスクリプトを挿入することによってクロスサイトスクリプティング攻撃を達成することができると判定する。ステップ８３９で、自動化ソフトウェアツールは、所定の時間内にポップアップウィンドウが表示されるかどうかに基づき、属性攻撃が成功したかどうか判定する。攻撃に成功した場合、自動化ソフトウェアツールは、ステップ８２７での記録と同様に、ステップ８４１でその付け込みを記録する。
【００４２】
当分野の技術者であれば、本発明の範囲および精神を逸脱することなく図８に示す方法を変更できることを理解するであろう。すなわち、図８の一部のステップを記載した以外の順番で実行することができ、１つまたは複数のステップを任意選択とすることができ、追加のステップを挿入することができ、また一部のステップを結合することができ、しかもそれらすべてにおいて前述の機能と実質的に同じ機能を実行することができる。たとえば図８は、キー／値対に対する付け込みが見つかった後で、自動化ソフトウェアツールが次のキー／値対に進むことを示す。これは、自動化ソフトウェアツールが、戻りトレーサ値の位置に基づいて必要な付け込みのタイプについて知的意思決定を行うからである。すなわち、自動化ソフトウェアツールは、トレーサ値の戻り位置に基づいて、挿入されたスクリプトを「>」、「-->」、「.jpg>」、「.jpgSTYLE=」、ヌルなどで始めるべきかどうかの知的意思決定を行う。しかし、当分野の技術者であれば、代替の例示的実施形態において、自動化ソフトウェアツールは、各スクリプト形式を繰り返し試みることによって各キー／値対に付け込もうと試みることができることを理解するであろう。すなわち、強引なやり方を代わりに用いることもできる。また、別の代替の例示的実施形態において自動化ソフトウェアツールは、第１の脆弱性が検出され次第試験を停止することができる。
【００４３】
図６に示すように、自動化ソフトウェアツールはまた、公知のＰＯＳＴコマンドを使ってＸＳＳ攻撃に対するＷｅｂサイトの脆弱性を試験することもできる。それを介してＰＯＳＴコマンドを送信できるフォームを含むＷｅｂページはしばしば、そのＷｅｂページ自体のフォーム内にエラー検査を含むことがある。すなわち、エラー検査はしばしば、データがサーバに送信される前に、クライアントコンピュータ上においてローカルで実施される。そうしたシナリオでは、入力値がＳＣＲＩＰＴやその他不正なまたは悪意ある可能性のあるタグを含んでいないことを確認するための入力データの妥当性検査をエラー検査に含むことがある。しかし、悪意あるユーザであればそうするように、ローカルで実施されるエラー検査をくぐり抜けるために、自動化ソフトウェアツールはそのフォームをパースしてサーバに実際に戻される値を判定し、エラー検査を実施しない複製ページを作成する。自動化ソフトウェアツールは次いで、エラー検査を実施しない複製されたＷｅｂページを使って、そのＷｅｂサイト上で、図８に示すように前述の分析を実施する。
【００４４】
前述の自動化ソフトウェアツールは、Ｗｅｂサイトにおける脆弱性を識別するための強力なツールである。このツールを悪意あるユーザが入手した場合、悪意あるユーザは、この自動化ソフトウェアツール自体を悪用して様々なＷｅｂサイトの弱点を識別することができよう。したがって、権限のないまたは悪意あるユーザにこの自動化ソフトウェアツールの諸機能を利用させないようにするために、本発明の一例示的実施形態において自動化ソフトウェアツールは、初期設定中に検査を行って、それが所定のネットワーク、すなわちホームネットワークから実行されているかどうか判定する。たとえば、自動化ソフトウェアツールは、企業のイントラネット内からしかアクセスできない所定の企業サーバにｐｉｎｇできることを確認することによって、自動化ソフトウェアツールが企業イントラネット内から実行されていると判定することができる。自動化ソフトウェアツールが所定の企業サーバと交信できない場合、自動化ソフトウェアツールはシャットダウンし、あるいはＷｅｂサイトの試験を拒否することができる。
【００４５】
代替として、自動化ソフトウェアツールが任意のＷｅｂサイト上で使用されないようにするために、所定のドメイン名、ホスト、および／またはＵＲＩのリスト内に含まれるＷｅｂサイトだけを試験するように自動化ソフトウェアツールをハードコーディングすることができる。ユーザが所定のＷｅｂサイトのリストに含まれないＷｅｂサイトを試験しようとした場合、自動化ソフトウェアツールはシャットダウンし、あるいは所望のＷｅｂサイトの試験を拒否することができる。
【００４６】
以上、本発明を実施する現時点での好ましい形態を含む具体的な例に関して本発明を説明したが、当分野の技術者であれば、前述のシステムおよび技術の多数の変形形態および置換形態があることを理解するであろう。したがって、本発明の精神および範囲は、特許請求の範囲に記載するように広範囲に解釈すべきである。
【図面の簡単な説明】
【００４７】
【図１】予想されるユーザ入力を含むＵＲＬを示す図である。
【図２】図１に示すＵＲＬを送信した結果として生成されるＨＴＭＬを示す図である。
【図３】悪意あるコードが挿入されたＵＲＬを示す図である。
【図４】図３に示すＵＲＬを送信した結果として生成されるＨＴＭＬを示す図である。
【図５】本発明の例示的実施形態による実行環境を示す図である。
【図６】本発明の例示的実施形態による自動化ソフトウェアツールの画面ショットを示す図である。
【図７】本発明の例示的実施形態に従ってクロスサイトスクリプティング攻撃に対して脆弱かどうか試験されるＷｅｂサイトの画面ショットを示す図である。
【図８】本発明の例示的実施形態による、Ｗｅｂサイトがクロスサイトスクリプティング攻撃を受けやすいかどうか試験する方法を示す図である。
【図９】本発明の例示的実施形態による自動化ソフトウェアツールによって使用される試験ＵＲＬを示す図である。
【図１０】自動化ソフトウェアツールが本発明の例示的実施形態による付け込みを試みた後でサーバによって戻されるＨＴＭＬを示す図である。
【図１１】本発明の例示的実施形態による自動化ソフトウェアツールによって表示されるアラートウィンドウを示す図である。
【図１２】本発明の例示的実施形態による自動化ソフトウェアツールによって生成されるログファイルの一部を示す図である。
【符号の説明】
【００４８】
１００  コンピュータ装置
１０２  処理ユニット
１０４  メモリ
１０８  取外し可能記憶装置
１１０  取外し不能記憶装置
１１２  通信接続
１１４  入力装置
１１６  出力装置
１１８  ネットワーク
１２０  サーバ
【図１】
2004164617.tif 000003
【図２】
2004164617.tif 000004
【図３】
2004164617.tif 000005
【図４】
2004164617.tif 000006
【図５】
2004164617.tif 000007
【図６】
2004164617.tif 000008
【図７】
2004164617.tif 000009
【図８】
2004164617.tif 000010
【図９】
2004164617.tif 000011
【図１０】
2004164617.tif 000012
【図１１】
2004164617.tif 000013
【図１２】
2004164617.tif 000014
【外国語明細書】
2004164617.tif 000015
2004164617.tif 000016
2004164617.tif 000017
2004164617.tif 000018
2004164617.tif 000019
2004164617.tif 000020
2004164617.tif 000021
2004164617.tif 000022
2004164617.tif 000023
2004164617.tif 000024
2004164617.tif 000025
2004164617.tif 000026
2004164617.tif 000027
2004164617.tif 000028
2004164617.tif 000029
2004164617.tif 000030
2004164617.tif 000031
2004164617.tif 000032
2004164617.tif 000033
2004164617.tif 000034
2004164617.tif 000035
2004164617.tif 000036
2004164617.tif 000037
2004164617.tif 000038
2004164617.tif 000039
2004164617.tif 000040
2004164617.tif 000041
2004164617.tif 000042
2004164617.tif 000043
2004164617.tif 000044