(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5982575
(24)【登録日】2016年8月5日
(45)【発行日】2016年8月31日
(54)【発明の名称】動的テイントに基づくセキュリティ・スキャン
(51)【国際特許分類】
G06F 21/57 20130101AFI20160818BHJP
【FI】
G06F21/57 370
【請求項の数】15
【全頁数】15
(21)【出願番号】特願2015-529767(P2015-529767)
(86)(22)【出願日】2012年8月29日
(65)【公表番号】特表2015-534155(P2015-534155A)
(43)【公表日】2015年11月26日
(86)【国際出願番号】US2012052772
(87)【国際公開番号】WO2014035386
(87)【国際公開日】20140306
【審査請求日】2015年3月5日
(73)【特許権者】
【識別番号】511076424
【氏名又は名称】ヒューレット−パッカード デベロップメント カンパニー エル.ピー.
【氏名又は名称原語表記】Hewlett‐Packard Development Company, L.P.
(74)【代理人】
【識別番号】100087642
【弁理士】
【氏名又は名称】古谷 聡
(74)【代理人】
【識別番号】100082946
【弁理士】
【氏名又は名称】大西 昭広
(74)【代理人】
【識別番号】100121061
【弁理士】
【氏名又は名称】西山 清春
(74)【代理人】
【識別番号】100195693
【弁理士】
【氏名又は名称】細井 玲
(72)【発明者】
【氏名】ング,ミン・スン・サム・エヌ
(72)【発明者】
【氏名】メドウ,マティアス
【審査官】
岸野 徹
(56)【参考文献】
【文献】
特開2008−135029(JP,A)
【文献】
米国特許出願公開第2012/0110551(US,A1)
【文献】
米国特許出願公開第2009/0172644(US,A1)
【文献】
特開2010−176658(JP,A)
【文献】
特表2006−526221(JP,A)
【文献】
特表2006−518080(JP,A)
【文献】
米国特許出願公開第2012/0072968(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
(57)【特許請求の範囲】
【請求項1】
計算システムであって
アプリケーションに関連する動的テイントモジュールに、通信モジュールを介してセキュリティ・テストのクローリング・フェイズを開始させ、
前記動的テイントモジュールからレポートを受信し、
前記動的テイントモジュールの制限を生成し、
前記レポートに基づいてスキャン戦略を生成するためのアプリケーション・セキュリティ・スキャナー
を含む計算システム。
【請求項2】
前記アプリケーション・セキュリティ・スキャナーから前記動的テイントモジュールを開始するための第1のメッセージを受信し、
前記第1のメッセージに応答して、前記動的テイントモジュールを開始し、
前記クローリング・フェイズ中に前記レポートを生成し、
前記レポートの前記アプリケーション・セキュリティ・スキャナーへの送信を行い、
前記動的テイントモジュールを無効化するための第2のメッセージを受信し、
前記第2のメッセージに基づいて前記動的テイントモジュールの少なくとも一部を無効化するための前記動的テイントモジュール
をさらに含む、請求項1に記載の計算システム。
【請求項3】
前記動的テイントモジュールは、前記クローリング・フェイズ中に前記アプリケーションのプログラム実行をインターセプトし、信用できない1以上のユーザ入力をテイント発生源としてマーキングし、前記ユーザ入力をトレースし、個々のユーザ入力が危険なファンクション・コールの原因であるか否かを判定することにより、セキュリティ脆弱性候補を決定する、請求項2に記載の計算システム。
【請求項4】
前記危険なファンクション・コールは、直接的データベース・クエリ、ファイル・オープン、ファイル削除、及び、ハイパーテキスト・マークアップ・ランゲージ応答ストリームへの書き込み関数のうちの少なくとも1つを含む、請求項3に記載の計算システム。
【請求項5】
前記開始は、前記アプリケーション・セキュリティ・スキャナーを補助するために、前記動的テイントモジュールの機能を有効化することを意味し、前記動的テイントモジュールの制限を生成することは、前記機能を無効化することを意味する、請求項1〜4の何れか一項に記載の計算システム。
【請求項6】
前記クローリング・フェイズ中に前記アプリケーションの攻撃エントリポイントを取得するためのクローラーをさらに含み、
前記レポートは、前記クローリング・フェイズ中に前記動的テイントモジュールにより決定された前記アプリケーションの1以上の脆弱性候補の脆弱性候補リストを含む、請求項1〜5の何れか一項に記載の計算システム。
【請求項7】
攻撃モジュールと、
前記攻撃モジュールにより前記アプリケーションに対して実施される攻撃の際に、前記脆弱性候補リストを優先順位付けすることにより、前記スキャン戦略を決定するための調節モジュールと
をさらに含む、請求項6に記載の計算システム。
【請求項8】
攻撃モジュールと、
前記脆弱性候補リストに重点を置いて攻撃を決定することにより、前記スキャン戦略を決定するための調節モジュールと
をさらに含み、前記攻撃モジュールは、前記スキャン戦略に基づいて前記アプリケーションを攻撃する、請求項6に記載の計算システム。
【請求項9】
種々の命令が記憶された持続性機械読取可能な記憶媒体であって、前記種々の命令は、計算装置の少なくとも1つのプロセッサによって実行されたときに、前記計算装置に、
アプリケーションに関連する動的テイントモジュールに、セキュリティ・テストのクローリング・フェイズを開始させ、
前記動的テイントモジュールから脆弱性候補リストを含むレポートを受信させ、
前記動的テイントモジュールの制限を生成させ、
前記脆弱性候補リストに基づいてスキャン戦略を生成させるように構成される、持続性機械読取可能な記憶媒体。
【請求項10】
前記脆弱性候補リストは、信用できない1以上のユーザ入力をテイント発生源としてマーキングし、前記ユーザ入力をトレースし、個々のユーザ入力が、危険なファンクション・コールの原因であるか否かを判定することにより決定された脆弱性候補を含む、請求項9に記載の持続性機械読取可能な記憶媒体。
【請求項11】
前記少なくとも1つのプロセッサによって実行されたときに、前記計算装置に、
前記クローリング・フェイズ中に前記アプリケーションの攻撃エントリポイントを取得させ、
前記アプリケーションへの攻撃に備えて前記脆弱性候補リストを優先順位付けすることにより、前記スキャン戦略を決定させ、
前記スキャン戦略に基づいて前記アプリケーションを攻撃させるように構成された命令をさらに含む、請求項9または請求項10に記載の持続性機械読取可能な記憶媒体。
【請求項12】
前記少なくとも1つのプロセッサによって実行されたときに、前記計算装置に、
前記クローリング・フェイズ中に前記アプリケーションの攻撃エントリポイントを取得させ、
前記脆弱性候補リストに重点を置いて攻撃を決定することにより、前記スキャン戦略を決定させ、
前記スキャン戦略に基づいて前記アプリケーションを攻撃させるように構成された命令をさらに含む、請求項9または請求項10に記載の持続性機械読取可能な記憶媒体。
【請求項13】
プロセッサを有する計算装置を使用して実施される方法であって、
前記プロセッサにより、アプリケーションに関連する動的テイントモジュールに、通信モジュールを介してセキュリティ・テストのクローリング・フェイズを開始させ、
前記プロセッサにより、前記動的テイントモジュールから脆弱性候補リストを含むレポートを受信し、
前記プロセッサにより、前記動的テイントモジュールの制限を生成し、
前記プロセッサにより、前記脆弱性候補リストに基づいてスキャン戦略を生成し、
前記プロセッサにより、前記スキャン戦略に基づいて前記アプリケーションを攻撃すること
を含む方法。
【請求項14】
前記攻撃は、前記脆弱性候補リストに基づいて優先順位付けされる、請求項13に記載の方法。
【請求項15】
前記攻撃は、前記脆弱性候補リスト上の脆弱性に関連する攻撃からなる、請求項13に記載の方法。
【発明の詳細な説明】
【背景技術】
【0001】
ソフトウェア・セキュリティ・テストは、ウェブ・アプリケーションのようなアプリケーションにおいて脆弱性を特定するために使用される。セキュリティ・テスト・アプリケーションを使用して行われるウェブベースのソフトウェア製品のための従来のブラックボックス・セキュリティ・テストは、多くの場合スキャナーと呼ばれ、攻撃者のふりをする。ブラックボックス・アプローチにおいて、スキャナーは、検査対象アプリケーション(AUT:Application Under Test)が入力を受け付ける全てのURLを見つけ出すために、ハイパーテキスト・トランスファ・プロトコル(HTTP)要求を生成し、HTTP応答を評価することによって、AUTを調査する。AUTが入力を受け付けるURLは、AUTの攻撃対象領域(Attack Surface)と呼ばれることがある。その後、スキャナーは、攻撃対象領域、及び場合によっては脆弱性のカテゴリに基づいて、攻撃を生成する。スキャナーは、プログラムのHTTP応答を評価することにより、攻撃を適用し、脆弱性の有無を診断する。ブラックボックス・アプローチでは、スキャナーは、AUTの内部動作を何も調査しない。
【0002】
下記の詳細な説明では、以下の図面が参照される。
【図面の簡単な説明】
【0003】
【
図1】一例による、動的テイントモジュール(Dynamic Taint Module)からの脆弱性リストに基づいてセキュリティ攻撃を実施することが可能なシステムを示すブロック図である。
【
図2A】一例による、動的テイントモジュールにより生成された脆弱性リストに基づいてアプリケーションを攻撃することが可能なアプリケーション・セキュリティ・スキャナーを示すブロック図である。
【
図2B】一例による、動的テイントモジュールにより生成された脆弱性リストに基づいてアプリケーションを攻撃することが可能なアプリケーション・セキュリティ・スキャナーを示すブロック図である。
【
図3】一例による、検査対象アプリケーションのウェブ・アプリケーション・インタフェースを示す図である。
【
図4】一例による、動的テイントモジュールにより生成された脆弱性リストに基づくスキャン戦略に基づいてアプリケーションを攻撃する方法を示すフロー図である。
【
図5】一例による、脆弱性リストに基づいてウェブ・アプリケーションに対する攻撃を生成することが可能なコンピュータ装置を示すブロック図である。
【発明を実施するための形態】
【0004】
本明細書に記載する種々の実施形態は、ウェブ・アプリケーションのようなアプリケーションのテストを実施する技術を提供する。企業がウェブ・アプリケーションがどのくらい安全であるのかを知りたいと望むとき、企業は、製造中である場合もあれば、これから製造を開始しようとしている場合もあり、企業は、多くの場合、ペネトレーションテスト法(例えば、スキャナーの使用)のようなセキュリティテスト手段を使用する。企業は、製造中のアプリケーションのコピーを検査対象アプリケーション(AUT)として使用することを望む場合がある。製造上これからアプリケーションになるAUTを品質保証段階で使用することによって、確実に、製造上使用されるアプリケーションをテストすることができる。
【0005】
ウェブ・アプリケーション・セキュリティ・スキャナーは、ウエブ・アプリケーションのようなアプリケーションにおけるセキュリティ脆弱性を見つけ出す一つのアプローチである。一部の状況において、クローラーはまず、手動又は自動で、攻撃対象領域を決定する場合がある。アプリケーションによっては、攻撃対象領域は、広いことがある。
【0006】
次に、スキャナーは、攻撃対象領域リスト、及び攻撃対象領域リスト中の各エントリを精査し、脆弱性が発生することがあるか否かを判定するために、膨大な数の攻撃を実施することがある。攻撃対象領域から脆弱性を判定することは、難解である。なぜなら、スキャナーは、アプリケーション上で実行されるコードについて限られた可視性しか持たないからである。可視性が限られているため、各攻撃対象領域エントリについて、一組の攻撃が実施される。また、一部の状況において、脆弱性を見つけ出すために実施される攻撃は、攻撃のうちの僅かな回数である場合がある。すなわち、多数の攻撃が実施されても、攻撃のうちの僅かな回数が成功するに過ぎない。その結果、スキャナーによるテストは、時間のかかるものとなる。大きなウェブサイトのスキャンには、完了までに数時間、又は数日を要することがある。ユーザ及び消費者は、より短い検査時間を望む場合がある。
【0007】
アプリケーションに関する追加的見識情報は、どのような攻撃を実施すべきか、及びどの攻撃が考慮に値しないかに関して、スキャナーがより賢明な判定を行うために役立つことがある。攻撃回数を減らすことは、スキャン時間を直接的に改善する。
【0008】
したがって、動的テイント解析を使用して、潜在的脆弱性カテゴリをスキャナーに報告することにより、スキャン・プロセスを高速化するアプローチを提供する。その後、スキャナーは、動的テイント解析により決定された脆弱性カテゴリに基づいて、アプリケーションを選択的にスキャンすることができる。したがって、スキャンによる攻撃対象領域を動的テイント解析に基づいて決定された特定の脆弱性に制限することによって、実施しなければらならいテストの回数を減らすことができる。したがって、スキャン全体を、動的テイント解析からの情報の使用しない場合に比べて、高速化することができる。
【0009】
図1は、一例による、動的テイントモジュールからの脆弱性リストに基づいてセキュリティ攻撃を実施することが可能なシステムを示すブロック図である。システム100は、アプリケーション・セキュリティ・スキャナー102、及び、検査対象アプリケーション(AUT)104を含む場合がある。AUT104は、サーバ(例えば、Java2プラットフォーム・エンタープライズ・エディション(J2EE)アプリケーション・サーバ、インターネット・インフォメーション・サーバ等)のような1以上の計算装置上で実施される場合がある。さらに、AUT104は、動的テイントモジュール110を含む場合がある。
【0010】
AUT104は、とりわけJAVA、又は.NETのような、任意の適当なウェブベースのコンピュータ言語でエンコードされる場合がある。AUT104は、とりわけ、Struts、Struts 2、ASP .NET MVC、Oracle Weblogic、及びSpring MVCのような適当なソフトウェア・フレームワークの中で動作する場合がある。ソフトウェア・フレームワークは、一般的機能を提供する一組の共通プログラムモジュールを含み、特定の機能を提供するために、一般的機能は、ユーザ・コードによって選択的に上書きされ、又は特殊化されることがある。AUT104は、スキャナー102からの種々の要求を処理するために、Java仮想マシン(JVM)、共通言語ランタイム(CLR: Common Language Runtime)、及び/又は他のランタイム環境の1以上のインスタンスを実行するように構成される場合がある。これらのソフトウェア・フレームワーク又はランタイム環境の共通プログラムモジュールにより提供される種々のプログラミング命令は、コンテナ・コードと呼ばれることがある。AUT104に固有のカスタム・プログラミング命令は、ユーザ・コードと呼ばれることがある。
【0011】
スキャナー102は、例えばブラックボックス・テストを実施することによりAUT104の潜在的セキュリティ脆弱性、及びアーキテクチャとしての弱点を特定するために、ウェブ・インタフェースのようなフロント・エンドを通してAUT104と通信する、計算装置により実行可能なプログラムとみなすことができる。
【0012】
AUT104は、ネットワークを通してスキャナー102とAUT104との間の通信を可能にするためのネットワーク・インタフェース(図示せず)を含む。ネットワーク・インタフェースは、AUT104の攻撃対象領域を露出させる。ネットワーク・インタフェースは、AUTが一般的用途に使用可能となったときにAUT104へのアクセスを可能にするために最終的に使用されるものと同じインタフェースである。ネットワーク・インタフェースを通じたスキャナー102とAUT104との間の通信は、スキャナー102からAUT104へ発行されるアプリケーション要求(例えば、HTTPによる)、及びAUT104からスキャナー102へ発行されるHTTP応答により実施される場合がある。AUT104を宛先とする要求は、アプリケーション要求と呼ばれることがあり、AUT104から受信される応答は、アプリケーション応答と呼ばれることがある。スキャナー102により生成されるアプリケーション要求は、AUT104の潜在的脆弱性を露出させるように、又はAUT104により課せられたテストに応答する等のように、構成される場合がある。
【0013】
ネットワークは、例えば、インターネット、ローカル・エリア・ネットワーク(LAN)、ワイド・エリア・ネットワーク(WAN)、メトロポリタン・エリア・ネットワーク(MAN)、ケーブル・ネットワーク、光ファイバー・ネットワーク、又はそれらの組み合わせ等のような、公衆データ網を含む場合がある。特定の幾つかの例として、無線ネットワークは、携帯電話網、衛星通信、無線LANなどを含む場合がある。
【0014】
AUT104のセキュリティ・テストを実施するための一つのアプローチとして、スキャナー102は、セキュリティ・テストのクローリング・フェイズ中に、動的テイントモジュール110から情報を受信することができる。一例として、動的テイントモジュール110は、AUT104のプログラム実行中にセキュリティ脆弱性を監視するための特殊なランタイム・モジュールである。動的テイントモジュール110は、プログラム・デバッガのような働きをし、所定のプログラム・ポイント(例えば、デバッガにおけるブレーク・ポイントのようなもの)においてプログラムの実行をインターセプトし、セキュリティ・チェックを実施する。動的テイント解析は、まず、信用できないユーザ入力を潜在的テイント(汚染)発生源としてマーキングし、その後、ユーザ入力をトレースし、ユーザ入力からのデータのいずれかが、何らかの危険なファンクション・コールに使用されることがあるか否かを判定することによって、セキュリティ脆弱性を見つけ出す。危険なファンクション・コールの例としては、直接的データベース・クエリ(例えば、直接的SQL(直接的Structured Query Language)クエリ)、ファイル・オープン、ファイル削除、ハイパーテキスト・マークアップ・ランゲージ応答ストリームへの書き込み関数、シェルコマンドの実行、直接的XML(Extensible Markup Language)クエリ、エラーメッセージをログファイルに書き込むための関数、直接的ユーザ・ディレクトリ・クエリなどが挙げられる。特殊なライブラリを使用してAUT104をコンパイルすることにより、又は、AUT104のバイナリ・コードを直接編集又は修正することにより、動的テイントモジュール110をアプリケーションに追加することができる。
【0015】
テスト中に、スキャナー102は、動的テイントモジュール110を作動120させるためのメッセージを送信することができる。AUT104は、メッセージを受信すると、動的テイントモジュール110が存在するか否かを判定する。動的テイントモジュール110が存在する場合、スキャナー102は、動的テイントモジュール110を有効化するためのメッセージを送信することができ、及び/又は、AUT104は、スキャナーの以前のメッセージに基づいて、動的テイントモジュール110を有効化することができる。
【0016】
その後、スキャナー102は、クローリング・フェイズ122を実施することができる。スキャナー120は、例えばウェブサイト・インタフェースを介して、AUT104をクローリングする。動的テイント解析は、クローリングを行いながら、実施される。スキャナー102がアプリケーションをクローリングするとき、スキャナー102は、1以上のエントリポイント(例えば、入力フィールド)に1以上の回数だけアクセスすることができる。テスト中、スキャナー102は、AUT140が入力を受け付けるURLを見つけ出すために、HTTP要求を生成し、HTTP応答を評価し、又はHTTP応答が無いことを評価することにより、AUT104を調査することができる。一部の例において、スキャナー102は、エンドユーザにより提供された事前記録されたウェブ・プロセス・フローにしたがって、又は、攻撃対象領域を自動発見するためにAUTにインストールされた他のランタイム・モジュールを使用して、AUT104の攻撃対象領域を取得する場合がある。個々のエントリポイントへのアクセスは、動的テイント解析開始のトリガとされる場合がある。
【0017】
動的テイントモジュール110は、クローリング・フェイズ122に応答して、例えばクローリング・フェイズ122の最後に、レポート124をスキャナー102に提供することができる。レポートは、クローリング・フェイズ122中に検出された潜在的脆弱性のリストを含む場合がある。
【0018】
一部の例において、クローリング、及びレポーティング124は、反復的に、又はインクリメンタルに実施される場合がある。例えば、レポートは、クローリング・フェイズ122の一部の間に受信される場合がある。したがって、レポートは、複数の断片に分割される場合があり、例えば、ウェブ・アプリケーションにおいては、ウェブサイトのクローリングされた各ページについて1つのレポートが送信される場合がある。さらに、他の例として、レポートは、ウェブサイト全体のクローリング・フェイズの最後に送信される場合がある。
【0019】
その後、スキャナー102は、AUT104の動的テイントモジュール110を停止126させ、又は無効化するためのメッセージを送信することができる。一部の例において、動的テイントモジュール110は、完全に無効化される代わりに、部分的に無効化される場合がある。例えば、スキャナー102は、動的テイントモジュール110に、スキャナー102がデータを収集することを望んでいる対象の攻撃ベクトルについてのテイント発生源以外のテイント発生源の各々を無効化させる場合がある。動的テイントモジュール110を無効化することにより、スキャナー102は、動的テイントモジュール110の余分なコードを実行することなく、AUT104を攻撃することが可能になる。また、余分なコードが実行されないため、テストが完了するまでの時間も、短縮することができる。
【0020】
128において、スキャナー102は、レポートから得られた情報にしたがって、AUT104のためのスキャン戦略を調節し、及び/又は生成する。これは、スキャン・ポリシーに基づいて実施される場合がある。一例として、スキャナー102は、動的テイントモジュール110によって事前選別された潜在的脆弱性に関連する攻撃を加えるための戦略を生成する。したがって、他のテストがフィルタリング(除外)されるため、テストの全体的時間を短縮することができる。他の例では、レポート124中の脆弱性候補のリストに、攻撃戦略上、高い優先順位が与えられ、それによって、より頻繁に発生する脆弱性ほど、攻撃の際に早い時期に現れるように優先順位が与えられる場合がある。特定の幾つかの例では、調節128は、例えば、部分的レポートを受信しながら、動的に、又はインクリメンタルに行われる場合がある。
【0021】
130において、スキャナー102は、攻撃戦略にしたがってAUT104を攻撃する。上記のように、攻撃戦略は、レポート中の脆弱性のリストに関連する場合があり、又は、レポート中の脆弱性のリストに基づいて優先順位付けされる場合がある。そのため、攻撃130から、意味の無い、又は不可能な攻撃をフィルタリング(除外)することができ、したがって、セキュリティ・スキャン全体に要する時間の量を減らすことができる。
【0022】
図2A、及び
図2Bは、種々の例による、動的テイントモジュールにより生成された脆弱性リストに基づいてアプリケーションを攻撃することが可能なアプリケーション・セキュリティ・スキャナーのブロック図である。アプリケーション・セキュリティ・スキャナー200a、200bは、動的テイントモジュールにより生成された脆弱性リストに基づいてアプリケーションを攻撃するのに利用することが可能な種々のコンポーネントを含む。個々のスキャナー200a、200bは、ノートブック・コンピュータ、デスクトップ・コンピュータ、サーバ、ワークステーション、又は、検査対象アプリケーションにアクセスすることができ、及びテストを実行することが可能な任意の他の計算装置であってもよい。一例として、アプリケーション・セキュリティ・スキャナー200aは、通信モジュール210、クローラー212、及び調節モジュール214を含む場合がある。他の例として、アプリケーション・セキュリティ・スキャナー200bは、攻撃モジュール216、プロセッサ230、メモリ232、及び/又は、入力装置240及び/又は出力装置242を使用することができる入出力インタフェース234をさらに含む。
【0023】
通信モジュール210は、例えば検査対象アプリケーションを含む装置のような他の装置と通信するために使用される場合がある。検査対象アプリケーションは、動的テイントモジュールをさらに含む場合がある。特定の幾つかの例において、通信モジュール210は、具体的に動的テイントモジュールと通信するように構成される場合がある。一部の例において、通信モジュール210は、例えば無線ネットワーク・インタフェースや有線ネットワーク・インタフェースのようなネットワーク・インタフェースを介して、インターネットを介して、イントラネットを介して、又は直接接続を介して、検査対象アプリケーションを有するサーバ等と通信する場合がある。特定の幾つかの例において、通信モジュール210は、ネットワーク上の他の装置に接続される場合がある。
【0024】
アプリケーション・セキュリティ・スキャナー200は、通信モジュール210を介して、検査対象アプリケーション(AUT)の動的テイントモジュールを作動させるためのメッセージをAUTに送信することができる。したがって、アプリケーション・セキュリティ・スキャナー200は、セキュリティ・テストのクローリング・フェイズに備えて、AUTに関連する動的テイントモジュールに、動的テイントモジュールを開始させることができる。一例において、動的テイントモジュールを開始することは、アプリケーション・セキュリティ・スキャナー200を補助するために、動的テイントモジュールの機能を有効化することを意味する。セキュリティ・テストは、アプリケーション・セキュリティ・スキャナー200によってコーディネートされる場合がある。
【0025】
クローラー212は、AUTにアクセスするために使用される場合がある。一例として、クローラーは、クローリング・フェイズ中に、AUTの種々の攻撃エントリポイントを取得することができる。後で詳しく説明するように、動的テイントモジュールを作動させることができると、動的テイントモジュールは、潜在的セキュリティ脆弱性に関する情報を提供する1つのレポート又は複数のレポートを生成することができる。例えば、レポートは、クローリング・フェイズ中に動的テイントモジュールにより決定されたAUTの1以上の潜在的脆弱性の脆弱性候補リストを含む場合がある。
【0026】
その後、アプリケーション・セキュリティ・スキャナー200は、動的テイントモジュールの制限を生成することができる。一例として、動的テイントモジュールの制限を生成することは、機能を無効化することを意味する場合がある。一部の例では、機能の一部を無効化する場合がある。特定の幾つかの例において、クローリング・フェイズは、動的テイントモジュールが開始されたときに開始され、動的テイントモジュールが制限されたときに終了する場合がある。他の例として、クローリング・フェイズは、アプリケーション・セキュリティ・スキャナー200が他のエントリポイントを探している限り、継続される場合がある。
【0027】
調節モジュール214は、レポートに基づいてスキャン戦略を生成することができる。一例として、スキャン戦略の生成は、脆弱性候補リストに基づいて、そのAUTのための別のスキャン戦略を修正することを含む場合がある。例えば、スキャン戦略は、攻撃モジュール216により実施される攻撃の際に、脆弱性候補に優先順位を付けることによって決定される場合がある。優先順位を下げられる攻撃は、他のスキャン戦略からの残りであってもよい。別の例として、調節モジュール214は、脆弱性候補リストに重点を置いて攻撃を決定することにより、スキャン戦略を決定する場合がある。例えば、攻撃は、各攻撃エントリポイントについて、個々のエントリポイントについて動的テイントモジュールにより記録されたアクセス可能な潜在的脆弱性に基づいて、決定される場合がある。したがって、攻撃エントリポイントへの攻撃は、動的テイントモジュールにより決定された脆弱性候補に基づいて、フィルタリングされる場合がある。
【0028】
攻撃モジュール216は、攻撃戦略に基づいて、AUTに対する攻撃を実施することができる。一部の例において、攻撃モジュール216は、1以上の通信モジュール210を使用して、攻撃を実施する。
【0029】
一例として、動的テイントモジュール、及び/又はAUTは、アプリケーション・セキュリティ・スキャナー200からメッセージを受信する場合がある。動的テイントモジュールは、メッセージに応答して開始される場合がある。また、動的テイントモジュールは、クローリング・フェイズ中にレポートを生成することができる。レポートは、動的テイント解析により決定された脆弱性候補のリストを含む場合がある。レポートは、アプリケーション・セキュリティ・スキャナー200に送信される場合がある。アプリケーション・セキュリティ・スキャナー200は、メッセージを受信すると、動的テイントモジュールの少なくとも一部を無効化するために第2のメッセージを送信する場合がある。動的テイントモジュールは、第2のメッセージを受信すると、動的テイントモジュール、及び/又は動的テイントモジュールの一部を無効化する。動的テイントモジュールを無効化することは、例えば、アプリケーション・セキュリティ・スキャナー200によって使用されることになる特定の攻撃ベクトルに関連することがある動的テイント解析を有効化すると同時に、かかる攻撃ベクトルに無関係な部分を制限又は無効化することを含む場合がある。攻撃ベクトルが変化するのに応じて、動的テイントモジュールの他の部分を無効化するために、メッセージが送受信される場合がある。
【0030】
上で述べたように、動的テイントモジュールは、クローリング・フェイズ中にAUTのプログラム実行をインターセプトし、信用できない1以上のユーザ入力をテイント発生源としてマーキングすることにより、セキュリティ脆弱性候補を決定する。種々のユーザ入力に対するトレースを実施し、個々のユーザ入力が危険なファンクション・コールの原因となるか否かを判定する。上記のように、危険なファンクション・コールは、直接的データベース・クエリ、ファイル・オープン、ファイル削除、及び、ハイパーテキスト・マークアップ・ランゲージ応答ストリームへの書き込み関数のうちの少なくとも1つを含む場合がある。また、脆弱性の例としては、SQLインジェクション(例えば、直接的データベース・クエリ)、パス操作(例えば、ファイル・オープン、ファイル削除など)、クロスサイト・スクリプティング(例えば、HTML応答ストリームへの書き込み関数)、コマンド・インジェクション(例えば、シェルコマンドの実行)、Xパス・インジェクション(例えば、直接的XMLクエリ)、ログ偽造(例えば、ログファイルにエラーメッセージを書き込むための関数)、及び、ライトウェイト・ディレクトリ・アクセス・プロトコル(LDAP)インジェクション(例えば、直接的ユーザ・ディレクトリ・クエリ)が挙げられる。
【0031】
種々の命令の読み出し及び実行に適した中央演算処理装置(CPU)のようなプロセッサ230若しくはマイクロプロセッサ、及び/又は電子回路は、本明細書に記載されるモジュール210、214、216、又はクローラーのうちのいずれの機能を実施するようにも構成される場合がある。一部の状況において、種々の命令、及び/又は、スキャン戦略、レポート若しくは脆弱性候補リストのような他の情報は、メモリ232又は他のメモリに含まれる場合がある。アプリケーション・セキュリティ・スキャナー200bにより、入出力インタフェース234がさらに提供される場合がある。例えば、キーボード、センサー、タッチ・インタフェース、マウス、マイクロフォン等のような入力装置240を使用して、アプリケーション・セキュリティ・スキャナー200bを取り巻く環境から入力を受け取る場合がある。また、表示装置のような出力装置142を使用して、情報をユーザに提示する場合がある。出力装置の例としては、スピーカー、表示装置、アンプなどが挙げられる。さらに、特定の幾つかの実施形態において、一部のコンポーネントは、本明細書に記載される他の機能を実施するために使用される場合がある。
【0032】
モジュール210、214、216、及び/又はクローラー212の各々は、例えば、本明細書に記載される機能を実現するための電子回路を含むハードウェアを含む場合がある。追加又は代替として、各モジュール210、214、216、及び/又はクローラー212は、計算装置の機械読取可能な記憶媒体上にエンコードされた一連の命令として実施され、プロセッサ230により実行可能である場合がある。なお、一部の実施形態では、一部のモジュールがハードウェア・デバイスとして実施され、他のモジュールが実行可能命令として実施される場合がある。
【0033】
図3は、一例による、検査対象アプリケーションのウェブ・アプリケーション・インタフェースを示す図である。この例示的図は、スキャナーとのインタフェースとして、AUTにより提供されることがあるウェブページ300を示している。クローリング・フェイズ中に、スキャナーは、ユーザ入力を受け取るエントリポイントを、このページから決定することができる。クローリング・フェイズ中に、動的テイントモジュールは、AUTの所与のページの各入力フィールドについて、事前選別された脆弱性を決定することができる。動的テイントモジュールは、例えば、ウェブページ300上の使用可能なフィールドに基づいて、表1の脆弱性候補リストを決定することができる。
【0035】
ウェブページ300は、ユーザ名302、パスワード304、位置検索306、ウェブサイト検索308、並びに、追加コンテンツ310について、入力フィールドを有する場合がある。ユーザ名302、及びパスワード304は、ログインのタイプに使用されることができ、位置検索306は、ATM位置のような対象又はサービスの位置を検索(Find)するために使用される場合があり、ウェブサイト検索308は、アプリケーションのウェブページを検索(Search)するために使用される場合がある。一例として、脆弱性は、信用できないユーザ入力を汚染されたもの(Taited)としてそれらのフィールドにマーキングし、その後、呼び出すことが出来る関数をトレースすることにより、動的テイントモジュールによって決定される場合がある。この例では、ユーザ名302フィールドが、SQLインジェクション攻撃、及び/又はLDAPインジェクション攻撃に対して脆弱な場合がある。位置検索306フィールドは、SQLインジェクション攻撃に対する脆弱性に関連する一方、ウェブサイト検索308は、クロスサイト・スクリプティング攻撃に対して脆弱性を有する場合がある。動的テイントモジュールは、脆弱性候補リストを含むレポートを作成し、それをスキャナーに送信することができる。その後、スキャナーは、例えば脆弱性候補リストに基づいて種々の攻撃をフィルタリングし、及び/又は優先順位付けすることにより、提供された情報に基づいてアプリケーションを攻撃することができる。
【0036】
図4は、一例による、動的テイントモジュールにより生成された脆弱性リストに基づくスキャン戦略に基づいてアプリケーションを攻撃する方法を示すフロー図である。方法400は、例えば、スキャナー102、アプリケーション・セキュリティ・スキャナー200、又は計算装置500のような適当なコンポーネントを使用して実施される場合がある。また、方法400を実行するためのコンポーネントは、複数の装置に分散して配置される場合がある。方法400は、記憶媒体520のような機械読取可能な記憶媒体上に記憶される種々の実行可能命令の形で実施される場合もあれば、及び/又は、電子回路の形で実施される場合もある。
【0037】
402において、スキャナーは、検査対象アプリケーションに関連する動的テイントモジュールに、セキュリティ・テストのクローリング・フェイズを開始させる。アプリケーションは、動的テイントモジュールの初期化を行うことができる。初期化は、アプリケーションに動的テイントモジュールが含まれているか否かを判定し、動的テイントモジュールの1以上の機能を作動させることを含む場合がある。また、初期化は、1以上の変数又は設定を所定の値に設定することを含む場合がある。スキャナーは、アプリケーションのクローリングを行わせることができる。クローリング・フェイズ中に、動的テイントモジュールは、スキャナーにより発見された種々の入力に対する解析を実施する。上記のように、この解析は、脆弱性候補のリストを含むレポートを生成する場合がある。アプリケーション、及び/又は動的テイントモジュールは、レポートをスキャナーに送信することができる。
【0038】
404において、スキャナーは、動的テイントモジュール、及び/又はアプリケーションから、レポートを受信する。レポートは、脆弱性候補リストを含む場合がある。その後、406において、スキャナーは、動的テイントモジュールの制限を生成する。一例として、この制限は、アプリケーション及び/又は動的テイントモジュールにメッセージを送信することにより生成される場合がある。
【0039】
408において、スキャナーは、レポートの脆弱性候補リストに基づいて、スキャン戦略を生成することができる。スキャン戦略は、例えば、事前に作成されたデフォルトのスキャン戦略、又は動的に作成されるスキャン戦略のような、他のスキャン戦略にもさらに基づく場合がある。一例として、スキャン戦略は、アプリケーションに対する攻撃の際に、脆弱性候補リストを優先順位付けすることを含む。他の例として、攻撃戦略は、脆弱性候補リスト上の脆弱性に関連する攻撃からなる場合がある。他の例において、攻撃戦略は、脆弱性に関連する攻撃を含む場合がある。410において、スキャナーは、検査対象アプリケーションに対し、攻撃戦略を実施することができる。
【0040】
上記アプローチによれば、セキュリティ脆弱性調査結果を失うことなく、アプリケーションのスキャン時間を短縮することができる。また、一部の状況において、動的テイントモジュールをアプリケーション・セキュリティ・スキャナーに組み込むことは、スキャナーが、持続型クロスサイト・スクリプティング(PXSS)又はブラインドSQLインジェクションのようなスキャナー単体で検出することができない、又はスキャナー単体で検出することが難しいセキュリティ脆弱性を発見するのに役立つ場合がある。一部の例において、脆弱性候補は、脆弱性としてリストアップされる場合がある。例えば、動的テイントモジュールは、ある脆弱性を脆弱性候補として報告する代わりに、動的テイントモジュールにより報告されたPXSS又はブラインドSQLインジェクションを、脆弱性として直接マーキングする場合がある。また、スキャナーは、脆弱性候補リスト上のそのような脆弱性を、脆弱性として読み出すことができる。
【0041】
図5は、一例による、脆弱性リストに基づいてウェブ・アプリケーションに対する攻撃を生成することが可能な計算装置を示すブロック図である。計算装置500は、例えば、プロセッサ510と、脆弱性候補リストに基づいてウェブ・アプリケーションに対する攻撃を生成するための命令522、524、526を含む機械読取可能な記憶媒体520とを含む。計算装置500は、例えば、ノートブック・コンピュータ、サーバ、ワークステーション、デスクトップ・コンピュータ、又は、任意の他の計算装置を含む場合がある。
【0042】
プロセッサ510は、機械読取可能な記憶媒体520に記憶された種々の命令の読み出し及び実行に適した少なくとも1つの中央演算処理装置(CPU)、少なくとも1つの半導体ベースのマイクロプロセッサ、少なくとも1つのグラフィックス処理ユニット(GPU)、他のハードウェア・デバイス、又はそれらの組み合わせであってもよい。例えば、プロセッサ510は、1つのチップ上に複数のコアを含む場合もあれば、複数のチップにわたって複数のコアを含む場合もあれば、複数の装置にわたって複数のコアを含む場合もあれば(例えば、計算装置500が複数のノード・デバイスを含む場合)、又はそれらの組み合わせを含む場合もある。プロセッサ510は、方法400を実施するために、命令522、524、526をフェッチし、デコードし、実行することができる。命令を読み出し、実行することの代替又は追加として、プロセッサ510は、命令522、524、526の機能を実施するための多数の電子部品を含む、少なくとも1つの集積回路(IC)、他の制御ロジック、他の電子回路、又はそれらの組み合わせを含む場合がある。
【0043】
機械読取可能な記憶媒体520は、種々の実行可能命令を格納又は記憶する任意の電子的、磁気的、光学的、又は物理的記憶装置であってよい。したがって、機械読取可能な記憶媒体は、例えば、ランダム・アクセス・メモリ(RAM)、電気的消去可能なプログラマブル・リードオンリー・メモリ(EEPROM)、記憶装置、コンパクト・ディスク・リードオンリー・メモリ(CD−ROM)などであってよい。したがって、機械読取可能な記憶媒体は、持続性のものであってもよい。本明細書に詳しく記載されるように、機械読取可能な記憶媒体520は、方法400を実施するための一連の実行可能命令によりエンコードされる場合がある。一部の例では、検査対象アプリケーションを実施するために、別の計算装置が使用される場合がある。
【0044】
通信命令522は、通信ハードウェアを制御してメッセージを送信することにより、アプリケーション530に関連する動的テイントモジュールに、セキュリティ・テストのクローリング・フェイズを開始させるために、使用される場合がある。上記のように、動的テイントモジュールは、スキャンのための攻撃戦略を生成するために使用される場合がある脆弱性候補のリストを生成することができる。クローリング・フェイズ中に、計算装置は、アプリケーションの種々の攻撃エントリポイントを取得することができる。
【0045】
通信命令522はさらに、動的テイントモジュールからレポートを受信するためにも、実行される場合がある。レポートは、脆弱性候補リストを含む。上記のように、脆弱性候補リストは、信用できない1以上のユーザ入力をテイント発生源としてマーキングし、ユーザ入力をトレースし、個々のユーザ入力が危険なファンクション・コールの原因となるか否かを判定することにより決定された攻撃エントリポイントの潜在的脆弱性を含む場合がある。危険なファンクション・コールは、コードの解析に基づいて決定され、及び/又は所定のリストに基づいて決定される場合がある。
【0046】
その後、計算装置500は、動的テイントモジュールの制限を生成するために、メッセージを生成する。メッセージはアプリケーション530へ送信され、動的テイントモジュールを停止させる。上記のように、この制限は、アプリケーション530、及び/又はアプリケーション530を実行している計算装置に必要とされる実行を制限することによって、セキュリティ・テストを高速化する場合がある。
【0047】
戦略命令524は、脆弱性候補リストに基づいてスキャン戦略を生成するために実行される場合がある。上記のように、一例として、スキャン戦略によれば、脆弱性候補リストに関連する種々の攻撃を優先順位付けすることができる。また、別の例として、スキャン戦略によれば、脆弱性候補リストに関連しない攻撃をフィルタリング(除去)することができる。いずれのアプローチによっても、個々のスキャン戦略を使用して攻撃命令526を実行することにより、予期される攻撃を計算装置500によって実行することができる。アプリケーションに対する攻撃を制限し、又は優先順位付けすることにより、不可能な攻撃は使用されないことになるため、より短い時間で有効な攻撃という結果を得ることができる。