(57)【特許請求の範囲】
【請求項１】
計算システムであって
アプリケーションに関連する動的テイントモジュールに、通信モジュールを介してセキュリティ・テストのクローリング・フェイズを開始させ、
前記動的テイントモジュールからレポートを受信し、
前記動的テイントモジュールの制限を生成し、
前記レポートに基づいてスキャン戦略を生成するためのアプリケーション・セキュリティ・スキャナー
を含む計算システム。
【請求項２】
前記アプリケーション・セキュリティ・スキャナーから前記動的テイントモジュールを開始するための第１のメッセージを受信し、
前記第１のメッセージに応答して、前記動的テイントモジュールを開始し、
前記クローリング・フェイズ中に前記レポートを生成し、
前記レポートの前記アプリケーション・セキュリティ・スキャナーへの送信を行い、
前記動的テイントモジュールを無効化するための第２のメッセージを受信し、
前記第２のメッセージに基づいて前記動的テイントモジュールの少なくとも一部を無効化するための前記動的テイントモジュール
をさらに含む、請求項１に記載の計算システム。
【請求項３】
前記動的テイントモジュールは、前記クローリング・フェイズ中に前記アプリケーションのプログラム実行をインターセプトし、信用できない１以上のユーザ入力をテイント発生源としてマーキングし、前記ユーザ入力をトレースし、個々のユーザ入力が危険なファンクション・コールの原因であるか否かを判定することにより、セキュリティ脆弱性候補を決定する、請求項２に記載の計算システム。
【請求項４】
前記危険なファンクション・コールは、直接的データベース・クエリ、ファイル・オープン、ファイル削除、及び、ハイパーテキスト・マークアップ・ランゲージ応答ストリームへの書き込み関数のうちの少なくとも１つを含む、請求項３に記載の計算システム。
【請求項５】
前記開始は、前記アプリケーション・セキュリティ・スキャナーを補助するために、前記動的テイントモジュールの機能を有効化することを意味し、前記動的テイントモジュールの制限を生成することは、前記機能を無効化することを意味する、請求項１〜４の何れか一項に記載の計算システム。
【請求項６】
前記クローリング・フェイズ中に前記アプリケーションの攻撃エントリポイントを取得するためのクローラーをさらに含み、
前記レポートは、前記クローリング・フェイズ中に前記動的テイントモジュールにより決定された前記アプリケーションの１以上の脆弱性候補の脆弱性候補リストを含む、請求項１〜５の何れか一項に記載の計算システム。
【請求項７】
攻撃モジュールと、
前記攻撃モジュールにより前記アプリケーションに対して実施される攻撃の際に、前記脆弱性候補リストを優先順位付けすることにより、前記スキャン戦略を決定するための調節モジュールと
をさらに含む、請求項６に記載の計算システム。
【請求項８】
攻撃モジュールと、
前記脆弱性候補リストに重点を置いて攻撃を決定することにより、前記スキャン戦略を決定するための調節モジュールと
をさらに含み、前記攻撃モジュールは、前記スキャン戦略に基づいて前記アプリケーションを攻撃する、請求項６に記載の計算システム。
【請求項９】
種々の命令が記憶された持続性機械読取可能な記憶媒体であって、前記種々の命令は、計算装置の少なくとも１つのプロセッサによって実行されたときに、前記計算装置に、
アプリケーションに関連する動的テイントモジュールに、セキュリティ・テストのクローリング・フェイズを開始させ、
前記動的テイントモジュールから脆弱性候補リストを含むレポートを受信させ、
前記動的テイントモジュールの制限を生成させ、
前記脆弱性候補リストに基づいてスキャン戦略を生成させるように構成される、持続性機械読取可能な記憶媒体。
【請求項１０】
前記脆弱性候補リストは、信用できない１以上のユーザ入力をテイント発生源としてマーキングし、前記ユーザ入力をトレースし、個々のユーザ入力が、危険なファンクション・コールの原因であるか否かを判定することにより決定された脆弱性候補を含む、請求項９に記載の持続性機械読取可能な記憶媒体。
【請求項１１】
前記少なくとも１つのプロセッサによって実行されたときに、前記計算装置に、
前記クローリング・フェイズ中に前記アプリケーションの攻撃エントリポイントを取得させ、
前記アプリケーションへの攻撃に備えて前記脆弱性候補リストを優先順位付けすることにより、前記スキャン戦略を決定させ、
前記スキャン戦略に基づいて前記アプリケーションを攻撃させるように構成された命令をさらに含む、請求項９または請求項１０に記載の持続性機械読取可能な記憶媒体。
【請求項１２】
前記少なくとも１つのプロセッサによって実行されたときに、前記計算装置に、
前記クローリング・フェイズ中に前記アプリケーションの攻撃エントリポイントを取得させ、
前記脆弱性候補リストに重点を置いて攻撃を決定することにより、前記スキャン戦略を決定させ、
前記スキャン戦略に基づいて前記アプリケーションを攻撃させるように構成された命令をさらに含む、請求項９または請求項１０に記載の持続性機械読取可能な記憶媒体。
【請求項１３】
プロセッサを有する計算装置を使用して実施される方法であって、
前記プロセッサにより、アプリケーションに関連する動的テイントモジュールに、通信モジュールを介してセキュリティ・テストのクローリング・フェイズを開始させ、
前記プロセッサにより、前記動的テイントモジュールから脆弱性候補リストを含むレポートを受信し、
前記プロセッサにより、前記動的テイントモジュールの制限を生成し、
前記プロセッサにより、前記脆弱性候補リストに基づいてスキャン戦略を生成し、
前記プロセッサにより、前記スキャン戦略に基づいて前記アプリケーションを攻撃すること
を含む方法。
【請求項１４】
前記攻撃は、前記脆弱性候補リストに基づいて優先順位付けされる、請求項１３に記載の方法。
【請求項１５】
前記攻撃は、前記脆弱性候補リスト上の脆弱性に関連する攻撃からなる、請求項１３に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
ソフトウェア・セキュリティ・テストは、ウェブ・アプリケーションのようなアプリケーションにおいて脆弱性を特定するために使用される。セキュリティ・テスト・アプリケーションを使用して行われるウェブベースのソフトウェア製品のための従来のブラックボックス・セキュリティ・テストは、多くの場合スキャナーと呼ばれ、攻撃者のふりをする。ブラックボックス・アプローチにおいて、スキャナーは、検査対象アプリケーション（ＡＵＴ：Ａｐｐｌｉｃａｔｉｏｎ  Ｕｎｄｅｒ  Ｔｅｓｔ）が入力を受け付ける全てのＵＲＬを見つけ出すために、ハイパーテキスト・トランスファ・プロトコル（ＨＴＴＰ）要求を生成し、ＨＴＴＰ応答を評価することによって、ＡＵＴを調査する。ＡＵＴが入力を受け付けるＵＲＬは、ＡＵＴの攻撃対象領域（Ａｔｔａｃｋ  Ｓｕｒｆａｃｅ）と呼ばれることがある。その後、スキャナーは、攻撃対象領域、及び場合によっては脆弱性のカテゴリに基づいて、攻撃を生成する。スキャナーは、プログラムのＨＴＴＰ応答を評価することにより、攻撃を適用し、脆弱性の有無を診断する。ブラックボックス・アプローチでは、スキャナーは、ＡＵＴの内部動作を何も調査しない。
【０００２】
下記の詳細な説明では、以下の図面が参照される。
【図面の簡単な説明】
【０００３】
【図１】一例による、動的テイントモジュール（Ｄｙｎａｍｉｃ  Ｔａｉｎｔ  Ｍｏｄｕｌｅ）からの脆弱性リストに基づいてセキュリティ攻撃を実施することが可能なシステムを示すブロック図である。
【図２Ａ】一例による、動的テイントモジュールにより生成された脆弱性リストに基づいてアプリケーションを攻撃することが可能なアプリケーション・セキュリティ・スキャナーを示すブロック図である。
【図２Ｂ】一例による、動的テイントモジュールにより生成された脆弱性リストに基づいてアプリケーションを攻撃することが可能なアプリケーション・セキュリティ・スキャナーを示すブロック図である。
【図３】一例による、検査対象アプリケーションのウェブ・アプリケーション・インタフェースを示す図である。
【図４】一例による、動的テイントモジュールにより生成された脆弱性リストに基づくスキャン戦略に基づいてアプリケーションを攻撃する方法を示すフロー図である。
【図５】一例による、脆弱性リストに基づいてウェブ・アプリケーションに対する攻撃を生成することが可能なコンピュータ装置を示すブロック図である。
【発明を実施するための形態】
【０００４】
本明細書に記載する種々の実施形態は、ウェブ・アプリケーションのようなアプリケーションのテストを実施する技術を提供する。企業がウェブ・アプリケーションがどのくらい安全であるのかを知りたいと望むとき、企業は、製造中である場合もあれば、これから製造を開始しようとしている場合もあり、企業は、多くの場合、ペネトレーションテスト法（例えば、スキャナーの使用）のようなセキュリティテスト手段を使用する。企業は、製造中のアプリケーションのコピーを検査対象アプリケーション（ＡＵＴ）として使用することを望む場合がある。製造上これからアプリケーションになるＡＵＴを品質保証段階で使用することによって、確実に、製造上使用されるアプリケーションをテストすることができる。
【０００５】
ウェブ・アプリケーション・セキュリティ・スキャナーは、ウエブ・アプリケーションのようなアプリケーションにおけるセキュリティ脆弱性を見つけ出す一つのアプローチである。一部の状況において、クローラーはまず、手動又は自動で、攻撃対象領域を決定する場合がある。アプリケーションによっては、攻撃対象領域は、広いことがある。
【０００６】
次に、スキャナーは、攻撃対象領域リスト、及び攻撃対象領域リスト中の各エントリを精査し、脆弱性が発生することがあるか否かを判定するために、膨大な数の攻撃を実施することがある。攻撃対象領域から脆弱性を判定することは、難解である。なぜなら、スキャナーは、アプリケーション上で実行されるコードについて限られた可視性しか持たないからである。可視性が限られているため、各攻撃対象領域エントリについて、一組の攻撃が実施される。また、一部の状況において、脆弱性を見つけ出すために実施される攻撃は、攻撃のうちの僅かな回数である場合がある。すなわち、多数の攻撃が実施されても、攻撃のうちの僅かな回数が成功するに過ぎない。その結果、スキャナーによるテストは、時間のかかるものとなる。大きなウェブサイトのスキャンには、完了までに数時間、又は数日を要することがある。ユーザ及び消費者は、より短い検査時間を望む場合がある。
【０００７】
アプリケーションに関する追加的見識情報は、どのような攻撃を実施すべきか、及びどの攻撃が考慮に値しないかに関して、スキャナーがより賢明な判定を行うために役立つことがある。攻撃回数を減らすことは、スキャン時間を直接的に改善する。
【０００８】
したがって、動的テイント解析を使用して、潜在的脆弱性カテゴリをスキャナーに報告することにより、スキャン・プロセスを高速化するアプローチを提供する。その後、スキャナーは、動的テイント解析により決定された脆弱性カテゴリに基づいて、アプリケーションを選択的にスキャンすることができる。したがって、スキャンによる攻撃対象領域を動的テイント解析に基づいて決定された特定の脆弱性に制限することによって、実施しなければらならいテストの回数を減らすことができる。したがって、スキャン全体を、動的テイント解析からの情報の使用しない場合に比べて、高速化することができる。
【０００９】
図１は、一例による、動的テイントモジュールからの脆弱性リストに基づいてセキュリティ攻撃を実施することが可能なシステムを示すブロック図である。システム１００は、アプリケーション・セキュリティ・スキャナー１０２、及び、検査対象アプリケーション（ＡＵＴ）１０４を含む場合がある。ＡＵＴ１０４は、サーバ（例えば、Ｊａｖａ２プラットフォーム・エンタープライズ・エディション（Ｊ２ＥＥ）アプリケーション・サーバ、インターネット・インフォメーション・サーバ等）のような１以上の計算装置上で実施される場合がある。さらに、ＡＵＴ１０４は、動的テイントモジュール１１０を含む場合がある。
【００１０】
ＡＵＴ１０４は、とりわけＪＡＶＡ、又は．ＮＥＴのような、任意の適当なウェブベースのコンピュータ言語でエンコードされる場合がある。ＡＵＴ１０４は、とりわけ、Ｓｔｒｕｔｓ、Ｓｔｒｕｔｓ  ２、ＡＳＰ  ．ＮＥＴ  ＭＶＣ、Ｏｒａｃｌｅ  Ｗｅｂｌｏｇｉｃ、及びＳｐｒｉｎｇ  ＭＶＣのような適当なソフトウェア・フレームワークの中で動作する場合がある。ソフトウェア・フレームワークは、一般的機能を提供する一組の共通プログラムモジュールを含み、特定の機能を提供するために、一般的機能は、ユーザ・コードによって選択的に上書きされ、又は特殊化されることがある。ＡＵＴ１０４は、スキャナー１０２からの種々の要求を処理するために、Ｊａｖａ仮想マシン（ＪＶＭ）、共通言語ランタイム（ＣＬＲ：  Ｃｏｍｍｏｎ  Ｌａｎｇｕａｇｅ  Ｒｕｎｔｉｍｅ）、及び／又は他のランタイム環境の１以上のインスタンスを実行するように構成される場合がある。これらのソフトウェア・フレームワーク又はランタイム環境の共通プログラムモジュールにより提供される種々のプログラミング命令は、コンテナ・コードと呼ばれることがある。ＡＵＴ１０４に固有のカスタム・プログラミング命令は、ユーザ・コードと呼ばれることがある。
【００１１】
スキャナー１０２は、例えばブラックボックス・テストを実施することによりＡＵＴ１０４の潜在的セキュリティ脆弱性、及びアーキテクチャとしての弱点を特定するために、ウェブ・インタフェースのようなフロント・エンドを通してＡＵＴ１０４と通信する、計算装置により実行可能なプログラムとみなすことができる。
【００１２】
ＡＵＴ１０４は、ネットワークを通してスキャナー１０２とＡＵＴ１０４との間の通信を可能にするためのネットワーク・インタフェース（図示せず）を含む。ネットワーク・インタフェースは、ＡＵＴ１０４の攻撃対象領域を露出させる。ネットワーク・インタフェースは、ＡＵＴが一般的用途に使用可能となったときにＡＵＴ１０４へのアクセスを可能にするために最終的に使用されるものと同じインタフェースである。ネットワーク・インタフェースを通じたスキャナー１０２とＡＵＴ１０４との間の通信は、スキャナー１０２からＡＵＴ１０４へ発行されるアプリケーション要求（例えば、ＨＴＴＰによる）、及びＡＵＴ１０４からスキャナー１０２へ発行されるＨＴＴＰ応答により実施される場合がある。ＡＵＴ１０４を宛先とする要求は、アプリケーション要求と呼ばれることがあり、ＡＵＴ１０４から受信される応答は、アプリケーション応答と呼ばれることがある。スキャナー１０２により生成されるアプリケーション要求は、ＡＵＴ１０４の潜在的脆弱性を露出させるように、又はＡＵＴ１０４により課せられたテストに応答する等のように、構成される場合がある。
【００１３】
ネットワークは、例えば、インターネット、ローカル・エリア・ネットワーク（ＬＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ）、ケーブル・ネットワーク、光ファイバー・ネットワーク、又はそれらの組み合わせ等のような、公衆データ網を含む場合がある。特定の幾つかの例として、無線ネットワークは、携帯電話網、衛星通信、無線ＬＡＮなどを含む場合がある。
【００１４】
ＡＵＴ１０４のセキュリティ・テストを実施するための一つのアプローチとして、スキャナー１０２は、セキュリティ・テストのクローリング・フェイズ中に、動的テイントモジュール１１０から情報を受信することができる。一例として、動的テイントモジュール１１０は、ＡＵＴ１０４のプログラム実行中にセキュリティ脆弱性を監視するための特殊なランタイム・モジュールである。動的テイントモジュール１１０は、プログラム・デバッガのような働きをし、所定のプログラム・ポイント（例えば、デバッガにおけるブレーク・ポイントのようなもの）においてプログラムの実行をインターセプトし、セキュリティ・チェックを実施する。動的テイント解析は、まず、信用できないユーザ入力を潜在的テイント（汚染）発生源としてマーキングし、その後、ユーザ入力をトレースし、ユーザ入力からのデータのいずれかが、何らかの危険なファンクション・コールに使用されることがあるか否かを判定することによって、セキュリティ脆弱性を見つけ出す。危険なファンクション・コールの例としては、直接的データベース・クエリ（例えば、直接的ＳＱＬ（直接的Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）クエリ）、ファイル・オープン、ファイル削除、ハイパーテキスト・マークアップ・ランゲージ応答ストリームへの書き込み関数、シェルコマンドの実行、直接的ＸＭＬ（Extensible Markup Language）クエリ、エラーメッセージをログファイルに書き込むための関数、直接的ユーザ・ディレクトリ・クエリなどが挙げられる。特殊なライブラリを使用してＡＵＴ１０４をコンパイルすることにより、又は、ＡＵＴ１０４のバイナリ・コードを直接編集又は修正することにより、動的テイントモジュール１１０をアプリケーションに追加することができる。
【００１５】
テスト中に、スキャナー１０２は、動的テイントモジュール１１０を作動１２０させるためのメッセージを送信することができる。ＡＵＴ１０４は、メッセージを受信すると、動的テイントモジュール１１０が存在するか否かを判定する。動的テイントモジュール１１０が存在する場合、スキャナー１０２は、動的テイントモジュール１１０を有効化するためのメッセージを送信することができ、及び／又は、ＡＵＴ１０４は、スキャナーの以前のメッセージに基づいて、動的テイントモジュール１１０を有効化することができる。
【００１６】
その後、スキャナー１０２は、クローリング・フェイズ１２２を実施することができる。スキャナー１２０は、例えばウェブサイト・インタフェースを介して、ＡＵＴ１０４をクローリングする。動的テイント解析は、クローリングを行いながら、実施される。スキャナー１０２がアプリケーションをクローリングするとき、スキャナー１０２は、１以上のエントリポイント（例えば、入力フィールド）に１以上の回数だけアクセスすることができる。テスト中、スキャナー１０２は、ＡＵＴ１４０が入力を受け付けるＵＲＬを見つけ出すために、ＨＴＴＰ要求を生成し、ＨＴＴＰ応答を評価し、又はＨＴＴＰ応答が無いことを評価することにより、ＡＵＴ１０４を調査することができる。一部の例において、スキャナー１０２は、エンドユーザにより提供された事前記録されたウェブ・プロセス・フローにしたがって、又は、攻撃対象領域を自動発見するためにＡＵＴにインストールされた他のランタイム・モジュールを使用して、ＡＵＴ１０４の攻撃対象領域を取得する場合がある。個々のエントリポイントへのアクセスは、動的テイント解析開始のトリガとされる場合がある。
【００１７】
動的テイントモジュール１１０は、クローリング・フェイズ１２２に応答して、例えばクローリング・フェイズ１２２の最後に、レポート１２４をスキャナー１０２に提供することができる。レポートは、クローリング・フェイズ１２２中に検出された潜在的脆弱性のリストを含む場合がある。
【００１８】
一部の例において、クローリング、及びレポーティング１２４は、反復的に、又はインクリメンタルに実施される場合がある。例えば、レポートは、クローリング・フェイズ１２２の一部の間に受信される場合がある。したがって、レポートは、複数の断片に分割される場合があり、例えば、ウェブ・アプリケーションにおいては、ウェブサイトのクローリングされた各ページについて１つのレポートが送信される場合がある。さらに、他の例として、レポートは、ウェブサイト全体のクローリング・フェイズの最後に送信される場合がある。
【００１９】
その後、スキャナー１０２は、ＡＵＴ１０４の動的テイントモジュール１１０を停止１２６させ、又は無効化するためのメッセージを送信することができる。一部の例において、動的テイントモジュール１１０は、完全に無効化される代わりに、部分的に無効化される場合がある。例えば、スキャナー１０２は、動的テイントモジュール１１０に、スキャナー１０２がデータを収集することを望んでいる対象の攻撃ベクトルについてのテイント発生源以外のテイント発生源の各々を無効化させる場合がある。動的テイントモジュール１１０を無効化することにより、スキャナー１０２は、動的テイントモジュール１１０の余分なコードを実行することなく、ＡＵＴ１０４を攻撃することが可能になる。また、余分なコードが実行されないため、テストが完了するまでの時間も、短縮することができる。
【００２０】
１２８において、スキャナー１０２は、レポートから得られた情報にしたがって、ＡＵＴ１０４のためのスキャン戦略を調節し、及び／又は生成する。これは、スキャン・ポリシーに基づいて実施される場合がある。一例として、スキャナー１０２は、動的テイントモジュール１１０によって事前選別された潜在的脆弱性に関連する攻撃を加えるための戦略を生成する。したがって、他のテストがフィルタリング（除外）されるため、テストの全体的時間を短縮することができる。他の例では、レポート１２４中の脆弱性候補のリストに、攻撃戦略上、高い優先順位が与えられ、それによって、より頻繁に発生する脆弱性ほど、攻撃の際に早い時期に現れるように優先順位が与えられる場合がある。特定の幾つかの例では、調節１２８は、例えば、部分的レポートを受信しながら、動的に、又はインクリメンタルに行われる場合がある。
【００２１】
１３０において、スキャナー１０２は、攻撃戦略にしたがってＡＵＴ１０４を攻撃する。上記のように、攻撃戦略は、レポート中の脆弱性のリストに関連する場合があり、又は、レポート中の脆弱性のリストに基づいて優先順位付けされる場合がある。そのため、攻撃１３０から、意味の無い、又は不可能な攻撃をフィルタリング（除外）することができ、したがって、セキュリティ・スキャン全体に要する時間の量を減らすことができる。
【００２２】
図２Ａ、及び図２Ｂは、種々の例による、動的テイントモジュールにより生成された脆弱性リストに基づいてアプリケーションを攻撃することが可能なアプリケーション・セキュリティ・スキャナーのブロック図である。アプリケーション・セキュリティ・スキャナー２００ａ、２００ｂは、動的テイントモジュールにより生成された脆弱性リストに基づいてアプリケーションを攻撃するのに利用することが可能な種々のコンポーネントを含む。個々のスキャナー２００ａ、２００ｂは、ノートブック・コンピュータ、デスクトップ・コンピュータ、サーバ、ワークステーション、又は、検査対象アプリケーションにアクセスすることができ、及びテストを実行することが可能な任意の他の計算装置であってもよい。一例として、アプリケーション・セキュリティ・スキャナー２００ａは、通信モジュール２１０、クローラー２１２、及び調節モジュール２１４を含む場合がある。他の例として、アプリケーション・セキュリティ・スキャナー２００ｂは、攻撃モジュール２１６、プロセッサ２３０、メモリ２３２、及び／又は、入力装置２４０及び／又は出力装置２４２を使用することができる入出力インタフェース２３４をさらに含む。
【００２３】
通信モジュール２１０は、例えば検査対象アプリケーションを含む装置のような他の装置と通信するために使用される場合がある。検査対象アプリケーションは、動的テイントモジュールをさらに含む場合がある。特定の幾つかの例において、通信モジュール２１０は、具体的に動的テイントモジュールと通信するように構成される場合がある。一部の例において、通信モジュール２１０は、例えば無線ネットワーク・インタフェースや有線ネットワーク・インタフェースのようなネットワーク・インタフェースを介して、インターネットを介して、イントラネットを介して、又は直接接続を介して、検査対象アプリケーションを有するサーバ等と通信する場合がある。特定の幾つかの例において、通信モジュール２１０は、ネットワーク上の他の装置に接続される場合がある。
【００２４】
アプリケーション・セキュリティ・スキャナー２００は、通信モジュール２１０を介して、検査対象アプリケーション（ＡＵＴ）の動的テイントモジュールを作動させるためのメッセージをＡＵＴに送信することができる。したがって、アプリケーション・セキュリティ・スキャナー２００は、セキュリティ・テストのクローリング・フェイズに備えて、ＡＵＴに関連する動的テイントモジュールに、動的テイントモジュールを開始させることができる。一例において、動的テイントモジュールを開始することは、アプリケーション・セキュリティ・スキャナー２００を補助するために、動的テイントモジュールの機能を有効化することを意味する。セキュリティ・テストは、アプリケーション・セキュリティ・スキャナー２００によってコーディネートされる場合がある。
【００２５】
クローラー２１２は、ＡＵＴにアクセスするために使用される場合がある。一例として、クローラーは、クローリング・フェイズ中に、ＡＵＴの種々の攻撃エントリポイントを取得することができる。後で詳しく説明するように、動的テイントモジュールを作動させることができると、動的テイントモジュールは、潜在的セキュリティ脆弱性に関する情報を提供する１つのレポート又は複数のレポートを生成することができる。例えば、レポートは、クローリング・フェイズ中に動的テイントモジュールにより決定されたＡＵＴの１以上の潜在的脆弱性の脆弱性候補リストを含む場合がある。
【００２６】
その後、アプリケーション・セキュリティ・スキャナー２００は、動的テイントモジュールの制限を生成することができる。一例として、動的テイントモジュールの制限を生成することは、機能を無効化することを意味する場合がある。一部の例では、機能の一部を無効化する場合がある。特定の幾つかの例において、クローリング・フェイズは、動的テイントモジュールが開始されたときに開始され、動的テイントモジュールが制限されたときに終了する場合がある。他の例として、クローリング・フェイズは、アプリケーション・セキュリティ・スキャナー２００が他のエントリポイントを探している限り、継続される場合がある。
【００２７】
調節モジュール２１４は、レポートに基づいてスキャン戦略を生成することができる。一例として、スキャン戦略の生成は、脆弱性候補リストに基づいて、そのＡＵＴのための別のスキャン戦略を修正することを含む場合がある。例えば、スキャン戦略は、攻撃モジュール２１６により実施される攻撃の際に、脆弱性候補に優先順位を付けることによって決定される場合がある。優先順位を下げられる攻撃は、他のスキャン戦略からの残りであってもよい。別の例として、調節モジュール２１４は、脆弱性候補リストに重点を置いて攻撃を決定することにより、スキャン戦略を決定する場合がある。例えば、攻撃は、各攻撃エントリポイントについて、個々のエントリポイントについて動的テイントモジュールにより記録されたアクセス可能な潜在的脆弱性に基づいて、決定される場合がある。したがって、攻撃エントリポイントへの攻撃は、動的テイントモジュールにより決定された脆弱性候補に基づいて、フィルタリングされる場合がある。
【００２８】
攻撃モジュール２１６は、攻撃戦略に基づいて、ＡＵＴに対する攻撃を実施することができる。一部の例において、攻撃モジュール２１６は、１以上の通信モジュール２１０を使用して、攻撃を実施する。
【００２９】
一例として、動的テイントモジュール、及び／又はＡＵＴは、アプリケーション・セキュリティ・スキャナー２００からメッセージを受信する場合がある。動的テイントモジュールは、メッセージに応答して開始される場合がある。また、動的テイントモジュールは、クローリング・フェイズ中にレポートを生成することができる。レポートは、動的テイント解析により決定された脆弱性候補のリストを含む場合がある。レポートは、アプリケーション・セキュリティ・スキャナー２００に送信される場合がある。アプリケーション・セキュリティ・スキャナー２００は、メッセージを受信すると、動的テイントモジュールの少なくとも一部を無効化するために第２のメッセージを送信する場合がある。動的テイントモジュールは、第２のメッセージを受信すると、動的テイントモジュール、及び／又は動的テイントモジュールの一部を無効化する。動的テイントモジュールを無効化することは、例えば、アプリケーション・セキュリティ・スキャナー２００によって使用されることになる特定の攻撃ベクトルに関連することがある動的テイント解析を有効化すると同時に、かかる攻撃ベクトルに無関係な部分を制限又は無効化することを含む場合がある。攻撃ベクトルが変化するのに応じて、動的テイントモジュールの他の部分を無効化するために、メッセージが送受信される場合がある。
【００３０】
上で述べたように、動的テイントモジュールは、クローリング・フェイズ中にＡＵＴのプログラム実行をインターセプトし、信用できない１以上のユーザ入力をテイント発生源としてマーキングすることにより、セキュリティ脆弱性候補を決定する。種々のユーザ入力に対するトレースを実施し、個々のユーザ入力が危険なファンクション・コールの原因となるか否かを判定する。上記のように、危険なファンクション・コールは、直接的データベース・クエリ、ファイル・オープン、ファイル削除、及び、ハイパーテキスト・マークアップ・ランゲージ応答ストリームへの書き込み関数のうちの少なくとも１つを含む場合がある。また、脆弱性の例としては、ＳＱＬインジェクション（例えば、直接的データベース・クエリ）、パス操作（例えば、ファイル・オープン、ファイル削除など）、クロスサイト・スクリプティング（例えば、ＨＴＭＬ応答ストリームへの書き込み関数）、コマンド・インジェクション（例えば、シェルコマンドの実行）、Ｘパス・インジェクション（例えば、直接的ＸＭＬクエリ）、ログ偽造（例えば、ログファイルにエラーメッセージを書き込むための関数）、及び、ライトウェイト・ディレクトリ・アクセス・プロトコル（ＬＤＡＰ）インジェクション（例えば、直接的ユーザ・ディレクトリ・クエリ）が挙げられる。
【００３１】
種々の命令の読み出し及び実行に適した中央演算処理装置（ＣＰＵ）のようなプロセッサ２３０若しくはマイクロプロセッサ、及び／又は電子回路は、本明細書に記載されるモジュール２１０、２１４、２１６、又はクローラーのうちのいずれの機能を実施するようにも構成される場合がある。一部の状況において、種々の命令、及び／又は、スキャン戦略、レポート若しくは脆弱性候補リストのような他の情報は、メモリ２３２又は他のメモリに含まれる場合がある。アプリケーション・セキュリティ・スキャナー２００ｂにより、入出力インタフェース２３４がさらに提供される場合がある。例えば、キーボード、センサー、タッチ・インタフェース、マウス、マイクロフォン等のような入力装置２４０を使用して、アプリケーション・セキュリティ・スキャナー２００ｂを取り巻く環境から入力を受け取る場合がある。また、表示装置のような出力装置１４２を使用して、情報をユーザに提示する場合がある。出力装置の例としては、スピーカー、表示装置、アンプなどが挙げられる。さらに、特定の幾つかの実施形態において、一部のコンポーネントは、本明細書に記載される他の機能を実施するために使用される場合がある。
【００３２】
モジュール２１０、２１４、２１６、及び／又はクローラー２１２の各々は、例えば、本明細書に記載される機能を実現するための電子回路を含むハードウェアを含む場合がある。追加又は代替として、各モジュール２１０、２１４、２１６、及び／又はクローラー２１２は、計算装置の機械読取可能な記憶媒体上にエンコードされた一連の命令として実施され、プロセッサ２３０により実行可能である場合がある。なお、一部の実施形態では、一部のモジュールがハードウェア・デバイスとして実施され、他のモジュールが実行可能命令として実施される場合がある。
【００３３】
図３は、一例による、検査対象アプリケーションのウェブ・アプリケーション・インタフェースを示す図である。この例示的図は、スキャナーとのインタフェースとして、ＡＵＴにより提供されることがあるウェブページ３００を示している。クローリング・フェイズ中に、スキャナーは、ユーザ入力を受け取るエントリポイントを、このページから決定することができる。クローリング・フェイズ中に、動的テイントモジュールは、ＡＵＴの所与のページの各入力フィールドについて、事前選別された脆弱性を決定することができる。動的テイントモジュールは、例えば、ウェブページ３００上の使用可能なフィールドに基づいて、表１の脆弱性候補リストを決定することができる。
【００３４】
【表１】
0005982575.tif 000002
【００３５】
ウェブページ３００は、ユーザ名３０２、パスワード３０４、位置検索３０６、ウェブサイト検索３０８、並びに、追加コンテンツ３１０について、入力フィールドを有する場合がある。ユーザ名３０２、及びパスワード３０４は、ログインのタイプに使用されることができ、位置検索３０６は、ＡＴＭ位置のような対象又はサービスの位置を検索（Find）するために使用される場合があり、ウェブサイト検索３０８は、アプリケーションのウェブページを検索（Search）するために使用される場合がある。一例として、脆弱性は、信用できないユーザ入力を汚染されたもの（Taited）としてそれらのフィールドにマーキングし、その後、呼び出すことが出来る関数をトレースすることにより、動的テイントモジュールによって決定される場合がある。この例では、ユーザ名３０２フィールドが、ＳＱＬインジェクション攻撃、及び／又はＬＤＡＰインジェクション攻撃に対して脆弱な場合がある。位置検索３０６フィールドは、ＳＱＬインジェクション攻撃に対する脆弱性に関連する一方、ウェブサイト検索３０８は、クロスサイト・スクリプティング攻撃に対して脆弱性を有する場合がある。動的テイントモジュールは、脆弱性候補リストを含むレポートを作成し、それをスキャナーに送信することができる。その後、スキャナーは、例えば脆弱性候補リストに基づいて種々の攻撃をフィルタリングし、及び／又は優先順位付けすることにより、提供された情報に基づいてアプリケーションを攻撃することができる。
【００３６】
図４は、一例による、動的テイントモジュールにより生成された脆弱性リストに基づくスキャン戦略に基づいてアプリケーションを攻撃する方法を示すフロー図である。方法４００は、例えば、スキャナー１０２、アプリケーション・セキュリティ・スキャナー２００、又は計算装置５００のような適当なコンポーネントを使用して実施される場合がある。また、方法４００を実行するためのコンポーネントは、複数の装置に分散して配置される場合がある。方法４００は、記憶媒体５２０のような機械読取可能な記憶媒体上に記憶される種々の実行可能命令の形で実施される場合もあれば、及び／又は、電子回路の形で実施される場合もある。
【００３７】
４０２において、スキャナーは、検査対象アプリケーションに関連する動的テイントモジュールに、セキュリティ・テストのクローリング・フェイズを開始させる。アプリケーションは、動的テイントモジュールの初期化を行うことができる。初期化は、アプリケーションに動的テイントモジュールが含まれているか否かを判定し、動的テイントモジュールの１以上の機能を作動させることを含む場合がある。また、初期化は、１以上の変数又は設定を所定の値に設定することを含む場合がある。スキャナーは、アプリケーションのクローリングを行わせることができる。クローリング・フェイズ中に、動的テイントモジュールは、スキャナーにより発見された種々の入力に対する解析を実施する。上記のように、この解析は、脆弱性候補のリストを含むレポートを生成する場合がある。アプリケーション、及び／又は動的テイントモジュールは、レポートをスキャナーに送信することができる。
【００３８】
４０４において、スキャナーは、動的テイントモジュール、及び／又はアプリケーションから、レポートを受信する。レポートは、脆弱性候補リストを含む場合がある。その後、４０６において、スキャナーは、動的テイントモジュールの制限を生成する。一例として、この制限は、アプリケーション及び／又は動的テイントモジュールにメッセージを送信することにより生成される場合がある。
【００３９】
４０８において、スキャナーは、レポートの脆弱性候補リストに基づいて、スキャン戦略を生成することができる。スキャン戦略は、例えば、事前に作成されたデフォルトのスキャン戦略、又は動的に作成されるスキャン戦略のような、他のスキャン戦略にもさらに基づく場合がある。一例として、スキャン戦略は、アプリケーションに対する攻撃の際に、脆弱性候補リストを優先順位付けすることを含む。他の例として、攻撃戦略は、脆弱性候補リスト上の脆弱性に関連する攻撃からなる場合がある。他の例において、攻撃戦略は、脆弱性に関連する攻撃を含む場合がある。４１０において、スキャナーは、検査対象アプリケーションに対し、攻撃戦略を実施することができる。
【００４０】
上記アプローチによれば、セキュリティ脆弱性調査結果を失うことなく、アプリケーションのスキャン時間を短縮することができる。また、一部の状況において、動的テイントモジュールをアプリケーション・セキュリティ・スキャナーに組み込むことは、スキャナーが、持続型クロスサイト・スクリプティング（ＰＸＳＳ）又はブラインドＳＱＬインジェクションのようなスキャナー単体で検出することができない、又はスキャナー単体で検出することが難しいセキュリティ脆弱性を発見するのに役立つ場合がある。一部の例において、脆弱性候補は、脆弱性としてリストアップされる場合がある。例えば、動的テイントモジュールは、ある脆弱性を脆弱性候補として報告する代わりに、動的テイントモジュールにより報告されたＰＸＳＳ又はブラインドＳＱＬインジェクションを、脆弱性として直接マーキングする場合がある。また、スキャナーは、脆弱性候補リスト上のそのような脆弱性を、脆弱性として読み出すことができる。
【００４１】
図５は、一例による、脆弱性リストに基づいてウェブ・アプリケーションに対する攻撃を生成することが可能な計算装置を示すブロック図である。計算装置５００は、例えば、プロセッサ５１０と、脆弱性候補リストに基づいてウェブ・アプリケーションに対する攻撃を生成するための命令５２２、５２４、５２６を含む機械読取可能な記憶媒体５２０とを含む。計算装置５００は、例えば、ノートブック・コンピュータ、サーバ、ワークステーション、デスクトップ・コンピュータ、又は、任意の他の計算装置を含む場合がある。
【００４２】
プロセッサ５１０は、機械読取可能な記憶媒体５２０に記憶された種々の命令の読み出し及び実行に適した少なくとも１つの中央演算処理装置（ＣＰＵ）、少なくとも１つの半導体ベースのマイクロプロセッサ、少なくとも１つのグラフィックス処理ユニット（ＧＰＵ）、他のハードウェア・デバイス、又はそれらの組み合わせであってもよい。例えば、プロセッサ５１０は、１つのチップ上に複数のコアを含む場合もあれば、複数のチップにわたって複数のコアを含む場合もあれば、複数の装置にわたって複数のコアを含む場合もあれば（例えば、計算装置５００が複数のノード・デバイスを含む場合）、又はそれらの組み合わせを含む場合もある。プロセッサ５１０は、方法４００を実施するために、命令５２２、５２４、５２６をフェッチし、デコードし、実行することができる。命令を読み出し、実行することの代替又は追加として、プロセッサ５１０は、命令５２２、５２４、５２６の機能を実施するための多数の電子部品を含む、少なくとも１つの集積回路（ＩＣ）、他の制御ロジック、他の電子回路、又はそれらの組み合わせを含む場合がある。
【００４３】
機械読取可能な記憶媒体５２０は、種々の実行可能命令を格納又は記憶する任意の電子的、磁気的、光学的、又は物理的記憶装置であってよい。したがって、機械読取可能な記憶媒体は、例えば、ランダム・アクセス・メモリ（ＲＡＭ）、電気的消去可能なプログラマブル・リードオンリー・メモリ（ＥＥＰＲＯＭ）、記憶装置、コンパクト・ディスク・リードオンリー・メモリ（ＣＤ−ＲＯＭ）などであってよい。したがって、機械読取可能な記憶媒体は、持続性のものであってもよい。本明細書に詳しく記載されるように、機械読取可能な記憶媒体５２０は、方法４００を実施するための一連の実行可能命令によりエンコードされる場合がある。一部の例では、検査対象アプリケーションを実施するために、別の計算装置が使用される場合がある。
【００４４】
通信命令５２２は、通信ハードウェアを制御してメッセージを送信することにより、アプリケーション５３０に関連する動的テイントモジュールに、セキュリティ・テストのクローリング・フェイズを開始させるために、使用される場合がある。上記のように、動的テイントモジュールは、スキャンのための攻撃戦略を生成するために使用される場合がある脆弱性候補のリストを生成することができる。クローリング・フェイズ中に、計算装置は、アプリケーションの種々の攻撃エントリポイントを取得することができる。
【００４５】
通信命令５２２はさらに、動的テイントモジュールからレポートを受信するためにも、実行される場合がある。レポートは、脆弱性候補リストを含む。上記のように、脆弱性候補リストは、信用できない１以上のユーザ入力をテイント発生源としてマーキングし、ユーザ入力をトレースし、個々のユーザ入力が危険なファンクション・コールの原因となるか否かを判定することにより決定された攻撃エントリポイントの潜在的脆弱性を含む場合がある。危険なファンクション・コールは、コードの解析に基づいて決定され、及び／又は所定のリストに基づいて決定される場合がある。
【００４６】
その後、計算装置５００は、動的テイントモジュールの制限を生成するために、メッセージを生成する。メッセージはアプリケーション５３０へ送信され、動的テイントモジュールを停止させる。上記のように、この制限は、アプリケーション５３０、及び／又はアプリケーション５３０を実行している計算装置に必要とされる実行を制限することによって、セキュリティ・テストを高速化する場合がある。
【００４７】
戦略命令５２４は、脆弱性候補リストに基づいてスキャン戦略を生成するために実行される場合がある。上記のように、一例として、スキャン戦略によれば、脆弱性候補リストに関連する種々の攻撃を優先順位付けすることができる。また、別の例として、スキャン戦略によれば、脆弱性候補リストに関連しない攻撃をフィルタリング（除去）することができる。いずれのアプローチによっても、個々のスキャン戦略を使用して攻撃命令５２６を実行することにより、予期される攻撃を計算装置５００によって実行することができる。アプリケーションに対する攻撃を制限し、又は優先順位付けすることにより、不可能な攻撃は使用されないことになるため、より短い時間で有効な攻撃という結果を得ることができる。
【図１】
0005982575.tif 000003
【図２Ａ】
0005982575.tif 000004
【図２Ｂ】
0005982575.tif 000005
【図３】
0005982575.tif 000006
【図４】
0005982575.tif 000007
【図５】
0005982575.tif 000008