(57)【要約】本書で開示する例示的な実施形態は、検査対象アプリケーション（AUT）のリアルタイムモディファイアに関するものである。該AUT上でセキュリティ検査が実行される。リアルタイムモディファイアは、AUTにより実行される機能の一部分が安全でないことを判定する。リアルタイムモディファイアは、該部分を実行しないようAUTの実行を修正する。【選択図】図１
2015535997.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング装置に通信可能な状態で接続されている、リアルタイムモディファイア内で実行している検査対象アプリケーションをホストしているサーバを備えている、コンピュータシステムであって、
前記コンピューティング装置が、前記検査対象アプリケーションについてセキュリティ検査を実行し、
前記リアルタイムモディファイアが、前記検査対象アプリケーションにより実行される機能が安全でないことを判定し、及び該機能のうち安全でないと判定した部分が実行されないようにする、
コンピュータシステム。
【請求項２】
前記機能が安全でないか否かを認識するための認識モジュールを更に備えている、請求項１に記載のコンピュータシステム。
【請求項３】
前記部分により実行される処理の種類に基づいて前記機能が安全でないとみなされる、請求項１に記載のコンピュータシステム。
【請求項４】
前記処理の種類が、データベースレコードの削除、別のデータベースレコードの修正、データベースの汚染、外向けメッセージの送信、及び前記サーバのリソースを枯渇させることのうちの少なくとも１つを実行するよう構成されたものである、請求項３に記載のコンピュータシステム。
【請求項５】
前記機能によりコールされるアプリケーションプログラミングインタフェイスに基づいて該機能が安全でないとみなされる、請求項１に記載のコンピュータシステム。
【請求項６】
前記リアルタイムモディファイアが、前記機能のうち安全でないとみなされた前記部分を実行することなく該機能をエミュレートする、請求項１に記載のコンピュータシステム。
【請求項７】
前記リアルタイムモディファイアが、安全でないとみなされた前記機能の前記部分を実行しない場合に、該部分が実行されるのを阻止する、請求項１に記載のコンピュータシステム。
【請求項８】
前記セキュリティ検査が侵入検査であり、前記リアルタイムモディファイアに関連するオブザーバが、前記部分に関する脆弱性を前記侵入検査にレポートする、請求項１に記載のコンピュータシステム。
【請求項９】
命令を記憶した持続性マシン読み取り可能記憶媒体であって、該命令が、装置の少なくとも１つのプロセッサにより実行された際に、
リアルタイムモディファイアを用いてホストされている検査対象アプリケーション上でセキュリティ検査を実行するために該検査対象アプリケーションに通信可能な状態で接続されたコンピューティング装置からの通信を受信し、
前記検査対象アプリケーションにより実行される機能の一部分が安全でないことを前記リアルタイムモディファイアにより判定し、
前記部分を実行しないように前記リアルタイムモディファイアにより前記検査対象アプリケーションの実行を修正する、
という各ステップを前記装置に実行させる、持続性マシン読み取り可能記憶媒体。
【請求項１０】
前記少なくとも１つのプロセッサにより実行された際に、前記部分に関する処理の種類に基づいて該部分が安全でないことを前記装置に判定させる命令を更に含み、
前記処理の前記種類が、データベースレコードの削除、別のデータベースレコードの修正、データベースの汚染、外向けメッセージの送信、及び前記装置のリソースを枯渇させることのうちの少なくとも１つを実行するよう構成されたものである、
請求項９に記載の持続性マシン読み取り可能記憶媒体。
【請求項１１】
前記少なくとも１つのプロセッサにより実行された際に、前記機能によりコールされたアプリケーションプログラミングインタフェイスに基づいて前記部分が安全でないことを前記装置に判定させる命令を更に含み、
前記リアルタイムモディファイアが、安全でないとみなされた前記機能の前記一部分を実行することなく該機能をエミュレートする、
請求項９に記載の持続性マシン読み取り可能記憶媒体。
【請求項１２】
前記少なくとも１つのプロセッサにより実行された際に、前記部分に関する脆弱性を前記セキュリティ検査へ前記装置にレポートさせる命令を更に含み、
前記セキュリティ検査が侵入検査である、
請求項９に記載の持続性マシン読み取り可能記憶媒体。
【請求項１３】
サーバ上のリアルタイムモディファイアを使用して検査対象アプリケーションをホストし、
前記検査対象アプリケーション上でセキュリティ検査を実行するために該検査対象アプリケーションに通信可能な状態で接続されたコンピューティング装置からの通信を受信し、
前記検査対象アプリケーションにより実行される機能の一部分が安全でないことを該部分に起因する活動の種類に基づいて前記リアルタイムモディファイアにより判定し、
該部分を実行しないように前記検査対象アプリケーションの実行を前記リアルタイムモディファイアにより修正する、
という各ステップからなる方法。
【請求項１４】
前記セキュリティ検査に対する応答を提供するように前記部分の機能をエミュレートするステップを更に含む、請求項１３に記載の方法。
【請求項１５】
前記部分に起因する脆弱性を前記セキュリティ検査にレポートするステップを更に含む、請求項１４に記載の方法。
【発明の詳細な説明】
【背景技術】
【０００１】
ソフトウェアセキュリティ検査は、ウェブアプリケーション等のアプリケーションにおける脆弱性を識別するために使用される。セキュリティ検査アプリケーションを使用することによるウェブベース・ソフトウェア開発のための従来のブラックボックス型セキュリティ検査は、スキャナと呼ばれることが多く、アタッカーを装うものである。ブラックボックス方式では、スキャナによるAUT（Application Under Test：検査対象アプリケーション）の調査は、HTTPリクエストを行い、そのHTTPレスポンス又はその欠如を評価して、該AUTが入力を受け入れる全てのURLを見出すことにより行われる。AUTが入力を受け入れるURLは、該AUTのアタックサーフェスと呼ぶことができる。スキャナは次いで、該アタックサーフェス及び存在し得る脆弱性カテゴリに基づいてアタックを作成する。該スキャナは、該アタックを適用して、プログラムのHTTPレスポンスを評価することにより、脆弱性の存在又は不存在を診断する。
【図面の簡単な説明】
【０００２】
【図１】本発明の一実施形態による、安全でない実行を判定し修正することによりAUTの実行を修正することができるコンピュータシステムのブロック図である。
【図２】本発明の一実施形態による、AUTの実行を修正することができる検査システムの構成を示すブロック図である。
【図３】本発明の一実施形態による、安全性に基づいて修正されているAUTの動作の一例を示すブロック図である。
【図４】本発明の一実施形態による、実行の安全性に基づいてAUTの実行を修正するための方法のフローチャートである。
【図５】本発明の一実施形態による、安全性に基づくセキュリティ検査のアクションに応じてAUTを修正することができるコンピューティング装置のブロック図である。
【発明を実施するための形態】
【０００３】
本書で説明する実施形態は、ウェブアプリケーション等のアプリケーションの検査を実行するための技術を提供するものである。企業は、該企業が製造中であり又は製造段階に入りつつあるウェブアプリケーションの安全性を知りたい場合に、侵入検査ソリューション（例えばスキャナの使用）、ファズテスト（fuzz testing）、脆弱性検査、ソフトウェアセキュリティ検査、ウェブサイトセキュリティ検査、及びそれらの組み合わせといった、セキュリティ検査ソリューションを使用することが多い。企業は、製造中のアプリケーションのコピーをAUTとして使用することを望む場合がある。製造中のアプリケーション又は製造段階に入りつつあるアプリケーションを検査に使用する理由は、企業が同じコードを検査することを望むことにある。品質保証段階にある製造中のアプリケーションとなる予定のAUTを使用することにより、製造に使用されたアプリケーションが検査されたことが保証されるからである。本開示の全体を通してスキャナについて言及するが、他の検査ソリューションを同様に使用することが可能であることに留意されたい。
【０００４】
動的なウェブアプリケーションスキャニング中に、スキャナは、アプリケーションのアタックサーフェスを発見するために、及び発見されたアタックベクトルについて多数のアタックを実行するために、該アプリケーションを扱うユーザのアクションを模倣する。スキャナは、該スキャナが検査しているアプリケーションのロジックを知らないため、かかる動作の一部が、AUT又はその環境にダメージを与えている可能性がある。
【０００５】
一例では、エンタープライズ・アプリケーションのスキャン中に、スキャナが「連絡先」ページを発見した場合に、該アプリケーションが様々な従業員に膨大なE-mailを送信する可能性がある。しかし、スキャナの観点からすれば、該検査は、単なる１つのHTTP（Hypertext Transfer protocol）POSTアタックベクトルに過ぎないものである。
【０００６】
別の例では、DoS（Denial of Service）アタックは、アプリケーションをハングアップさせ又は停止させるものとなる。侵入検査ソリューションは、これらの脆弱性の発見を所望するものであり、かかるアプリケーションを停止させることができるアタックを送出することにより該発見を行うものである。成功時には、アプリケーションが停止し又はハングアップし、これにより更に検査を行うことが出来なくなる。
【０００７】
スキャンの危険かつ破壊的な性質は、顧客がAUTに対してサンドボックスを実施する（sandboxing）ために大量の時間を費やすことに通ずるものとなり得る。これは、アプリケーションの内部的な複雑さ及びその機能の完全な知識の欠如に起因して成功しない可能性がある。各スキャンの後にアプリケーションをオリジナルの状態に戻す作業は、時間を要するものであり、そのプロセスでの誤りは、各スキャン間の矛盾に通じ、脆弱性レポートの消費者を混乱させるものとなる。更に、AUTの状態がセキュリティ検査によって崩壊させられた場合には、（例えば、AUTがクラッシュして応答しなくなり又はアプリケーションのロジックがアタックによって歪められることにより）該検査が時期尚早に失敗する可能性がある。かかる場合には、セキュリティ検査が実行される前にAUTが機能しなくなり、該AUTの重大な脆弱性を発見できない可能性がある。
【０００８】
したがって、本書で開示する方法の利点は、DoS問題をオンザフライで修正することを含むが、依然として該問題を検査ソリューションへレポートし、及びAUTの実行を動的に修正して該AUTが安全でないとみなされたアクションを実行しないようにする。該方法は、アタッカーがアプリケーションの問題を利用する態様を指摘する一方で、該アプリケーションを稼働したままにすることを確実にすることが可能である。他の有害な又は安全でない動作として、データベースレコードのワイプ（wiping）、データベースレコードの修正、アプリケーションのクロール及び監査中に生成された多数のレコードによるデータベースの汚染（poluting）、サーバ側ファイルシステムに対する予期しない操作、サーバ側リソース（例えば、利用可能なソケット）を枯渇させること等が挙げられる。
【０００９】
AUTは、リアルタイム修正環境で実行することができる。このため、該AUT内の機能の結果を変更し又は修正することができる。例えば、アプリケーションのAPI（Application Programming Interface）により、AUTの挙動をオンザフライで修正することができる。例えば、安全でない手続きが呼び出された場合に、リアルタイムモディファイア（modifier：修正手段）が、危険な動作を実際に実行することなく、該手続きの実行をエミュレートすることができる。実施形態によっては、リアルタイム修正環境は、AUTにより用いられるAPIにアクセスすることができる。リアルタイム修正ソリューションの実例は、Java及び.NETフレームワークを含む実施を容易化することができる。かかるフレームワークは、データベース、E-mail、及び通信サービスを開発者に提供するために使用することが可能である。
【００１０】
図１は、本発明の一実施形態による、安全でない実行を判定し修正することによりAUTの実行を修正することができるコンピュータシステムのブロック図である。該システムは、全体的に符号100で示されている。当業者には理解されるように、図１に示す機能ブロック及び装置は、回路を含むハードウェア要素、持続性マシン読み取り可能媒体に格納されたコンピュータコードを含むソフトウェア要素、又はハードウェア要素及びソフトウェア要素の組み合わせから構成することが可能なものである。更に、該構成は、図１に示すものには限定されず、任意の個数の機能ブロック及び装置を本発明の実施形態で使用することが可能である。当業者であれば、特定の電子装置のための設計検討に基づいて特定の機能ブロックを容易に画定することが可能である。
【００１１】
図１に示すように、該システム100はコンピューティング装置102を含み、該コンピューティング装置102は、ディスプレイ108等の提示装置、キーボード110、及び１つ以上の入力装置112（マウス、タッチスクリーン、又はキーボード等）にバス106を介して接続されたプロセッサ104を含むことが可能である。一実施形態では、該コンピューティング装置102は、汎用コンピューティング装置（例えば、デスクトップコンピュータ、ラップトップコンピュータ、及びサーバ等）である。該コンピューティング装置102はまた、１種類以上の持続性コンピュータ読み取り可能媒体（本発明の実施形態で使用される操作プログラムを含む様々な操作プログラムの実行中に使用することができるメモリ114等）を有することが可能である。該メモリ114は、リードオンリーメモリ（ROM）及びランダムアクセスメモリ（RAM）等を含むことが可能である。コンピューティング装置102はまた、本発明の実施形態で使用される操作プログラム及びデータを含む操作プログラム及びデータの長期記憶のためのストレージシステム116といった他の持続性コンピュータ読み取り可能媒体を含むことが可能である。
【００１２】
一実施形態では、コンピューティング装置102は、該コンピューティング装置102をサーバ120に接続するためのネットワークインタフェイスコントローラ（NIC）118を含む。コンピューティング装置102は、インターネット、ローカルエリアネットワーク（LAN）、ワイドエリアネットワーク（WAN）、又はその他のネットワーク構成等のネットワークを介してサーバ120と通信可能な状態で接続することが可能である。該サーバ120は、データを記憶し、通信をバッファリングし、及び該サーバ120の操作プログラムを格納するための記憶装置等の持続性コンピュータ読み取り可能媒体を有することが可能である。コンピューティング装置102とサーバ120との間の通信は、HTTP（Hyper-Text Transfer Protocol）又は別のAPI等のリクエスト−レスポンスプロトコルを使用して行うことが可能である。
【００１３】
サーバ120は、AUT124をホストするアプリケーションサーバとすることが可能である。サーバ120はまた、AUT124の実行を監視し及び／又は修正することができるリアルタイムモディファイア126を含む。実施形態によっては、該リアルタイムモディファイア126は、AUT124の実行環境として機能する。リアルタイムモディファイア126は、.NETフレームワーク、Java仮想マシン、又はその他の同様のエンジン等のソフトウェアフレームワークを使用して実施することが可能である。別の実施形態では、アスペクト指向プログラミング又はその他のソフトウェアを使用することが可能である。実施形態によっては、サーバは、コンピューティング装置500、ラップトップ、デスクトップコンピュータ、ワークステーション、又はその他のコンピューティング装置等のコンピューティング装置として実施することが可能である。
【００１４】
一実施形態では、Java仮想マシン手段（Java Virtual Machine instrumentation）が使用される。API呼出手段（API Called Instrument）を使用して、呼び出されたAPIを監視し及び／又は管理することが可能である。ここで、特定の１つのAPI又は一組のAPIが呼び出された場合、該手段は、コード及び変数等を置換して実行することが可能であり、及び／又はAUT124の実行を修正することが可能である。例えば、APIの一部が呼びされた場合に、リアルタイムモディファイアに関連するコードを実行して、望ましい経路の選択を容易化させることが可能である。同様の方法を.NET等の他のソフトウェアフレームワークで用いることが可能である。ここで、変更はメモリ内で行うことが可能である。この場合には、AUT124を直接修正する必要がない。
【００１５】
別の実施形態では、アスペクト指向プログラミング機能を用いることが可能である。監視すべきAPIを指定することが可能である。実行時に、プログラミングされた設定に基づいて変更をオンザフライで実施することが可能である。
【００１６】
コンピューティング装置102は、AUT124に対してセキュリティ検査を実行するスキャナ、ファジング、及び脆弱性テスタ等のセキュリティ検査モジュール128を含むことが可能である。一実施形態では、脆弱性テスタは、AUT124における既知の脆弱性を探索し、潜在的な暴露（potential exposure）をレポートする。別の実施形態では、侵入テスタ又はスキャナは、AUT124に関する通常の業務方針を利用する態様を探索するテストである。更に別の実施形態では、ファズテストは、無効な、予期しない、又はランダムなデータをAUTの入力に提供することを含む技術とすることが可能である。次いでAUT124をその問題について観察することが可能である。
【００１７】
セキュリティ検査モジュール128は、HTTPリクエストをネットワークを介してAUT124に送ることが可能であり、該HTTPリクエストは該AUT124の脆弱性の露呈を試みるべく構成される。該HTTPリクエストは、暗号化通信及びネットワークウェブサーバのセキュアな識別を提供するために、HTTPをSSL（Secure Sockets Layer）プロトコル及びTLS（Transport Layer Security）プロトコルと組み合わせたHTTPSリクエストを含むことが可能である。
【００１８】
AUT124によるHTTPリクエストの処理中に、該AUT124による内部処理をオブザーバ（図示せず）が観察することが可能である。例えば、該オブザーバは、AUT124により実行されるコード行、アクセスされるファイル、及び実行されるデータベースクエリ等を識別することが可能である。オブザーバ及びAUT124は両方とも、同一のHTTPチャネルを介してセキュリティ検査モジュール128と通信するよう構成することが可能である。
【００１９】
図２を参照して更に説明するように、セキュリティ検査モジュール128からサーバ120へ送られるリクエストの中には、AUT124からそのプログラミングに従ってレスポンスを引き出すために該AUT124をターゲットとするものが存在することが可能である。セキュリティ検査モジュール128からサーバ120へ送られる他のリクエストは、AUT124により実行される操作に特定のリクエストが与えた影響に関する更なる情報、又は、AUT124、オブザーバ、若しくはAUT124をホストしているサーバ120に関するその他の情報を取得するために、オブザーバをターゲットとすることが可能である。セキュリティ検査モジュール128は、アプリケーションリクエスト及びサービスリクエストに応じて受信したデータを使用して、脆弱性レポートを生成することが可能である。脆弱性レポートは、セキュリティ検査モジュール128により提供されるユーザインタフェイスを介してユーザに対して表示することが可能である。
【００２０】
上述のように、場合によっては、セキュリティ検査モジュール128は、コンピューティング装置102に通信可能な状態で接続されたAUT124についてセキュリティ検査を実行する。該テスト中に、リアルタイムモディファイア126は、AUT124の実行を監視することが可能であり、及びAUT124により実行される機能又はその一部が安全であるか否かを判定することが可能である。該リアルタイムモディファイア126は、AUT124により実行された機能が安全でないことを判定することが可能である。したがって、一実施形態では、リアルタイムモディファイア126は、安全でないとみなした機能部分を実行しないことによりAUT124の実行を修正することが可能である。一実施形態では、該部分は機能全体となる。別の実施形態では、該部分は機能の一部であることが可能である。
【００２１】
認識モジュール130は、AUT124により呼び出される機能が安全であるか否かを判定することが可能である。一実施形態では、機能及び／又はその一部により実行される処理の種類に基づいて、該機能及び／又はその一部を安全でないとみなすことが可能である。一実施形態では、機能の一部が望ましくないアクションを行う場合に該一部を安全でないとみなすことが可能である。該望ましくないアクションは、通信及び／又は記憶に関するものとすることが可能である。更に、該望ましくないアクションは、追加テストの実行を困難にする試験台（test bed）の修正に関するものとすることが可能である。特定の実施形態では、使用される処理の種類は、以下の少なくとも１つ以上を実行するよう構成される：データベースレコードの削除、別のデータベースレコードの修正、データベースの汚染、外向けメッセージの送信（例えば、E-mail、テキストメッセージ等）、サーバ120の１つ以上のリソースを枯渇させることなど（これら処理は安全でないとみなし得るものである）。一実施形態では、アタックに成功した結果としてサーバ120上のファイルの削除が生じ得る。別の実施形態では、アタックに成功した結果としてデータベースエントリの削除が生じ得る。更に、アプリケーションサーフェスの発見及びアタックの結果として外部E-mailボックス及び／又はテキストメッセージ電話（text messaging phone）へのスパム送信（spamming）が生じ得る。更に、安全でない機能の中には、AUTをダウンさせることが分かっている特定のアタックを扱い得るもの（例えば、Java環境でのparseDouble）がある。
【００２２】
別の実施形態では、機能は、該機能により呼び出されるAPIに基づいて安全でないとみなされる。この例では、呼び出すのが安全でないものとして該APIにフラグをセットすることが可能である。例示的なAPIとして、データベースの修正及び／又は外部環境への通信に関連するものが挙げられる。
【００２３】
リアルタイムモディファイア126は、安全でないとみなされた機能の一部を実行することなく該一部をエミュレートすることが可能である。一実施形態では、これは、AUT124がセキュリティ検査モジュール128に返すレスポンスを判定して該レスポンスを送信することにより達成することができる。このため、機能が、特定の人又はエンティティ（例えば、連絡先ページに利用可能なE-mailアドレスがある会社の社長）へE-mailを送信することを要求するものである場合、そのE-mailを制御する部分をその実行中にE-mailを送信しないよう修正すると共に、セキュリティ検査モジュール128へレスポンスを送信することが可能である。該レスポンスは、例えば、E-mailが送信されたことの確認を含むことが可能である。かかるエミュレーションは、安全でないとみなされた他の種類の処理についても実行することが可能であり、これは、安全でないとみなされた部分を実行することなく、予想される結果を返すことにより行われる。破壊的な操作の発生を阻止することにより、及び（例えば、高レベルコードが正しく機能し続けるように安全でない操作のアクションをシミュレートすることにより）AUTの残りの部分を完全な状態に維持することにより、セキュリティ検査下にあるAUTの安定性の確保に資することが可能となる。
【００２４】
別の実施形態では、リアルタイムモディファイア126は、機能のうち安全でないとみなされた部分を実行しない。実行せずに、リアルタイムモディファイア126は、該部分の実行を阻止する。実施形態によっては、これは、機能全体を阻止することにより達成することが可能である。別の実施形態では、これは、（例えば、I/O、ストレージ、又は外部通信に対するAPIコールがコールされないようにし及び／又は実行されないようにすることにより）当該コード部分が呼び出されないようにし又は実行されないようにすることにより達成することが可能である。
【００２５】
更に、別の実施形態では、リアルタイムモディファイア126及び／又はオブザーバアプリケーション（リアルタイムモディファイア126の一部として含めることが可能なもの）等のサーバ120の別の部分が、該部分に関する脆弱性をセキュリティ検査モジュール128にレポートすることが可能である。上述のように、セキュリティ検査は、侵入検査とすることが可能である。一実施形態では、安全でない機能が呼び出された際に、オブザーバが、該安全でない機能により生じ得る結果に注意して該結果を記録することが可能である。安全でない機能自体もまた脆弱性である場合には、そのことをレポートすることが可能である。更に、１つ以上の機能の活動が組み合わされて脆弱性を示すことがある。例えば、同じ機能に対する多数の呼び出しを使用して非常に多くのシステムリソースを消費することが可能である。このため、実施形態によっては、リアルタイムモディファイア126及び／又はオブザーバは、エミュレーションの一部として、サーバリソースの使用状況のエミュレーションを実行することが可能である。
【００２６】
図２は、本発明の一実施形態による、AUTの実行を修正することが可能な検査システム構成を示すブロック図である。該システム200は、スキャナ202、リアルタイムモディファイア204、AUT206、及びオブザーバ208を含むことが可能である。
【００２７】
該AUT206は、特に、JAVA又は.NETといった、適当なウェブベースのコンピュータ言語でエンコードすることが可能なものである。AUT206は、特に、Struts、Struts 2、ASP.NET MVC、Oracle WebLogic、及びSpring MVCといった、適当なソフトウェアフレームワーク内で動作することが可能である。該ソフトウェアフレームワークは、汎用的な機能を提供する一組の共通コードモジュールを含み、該共通コードモジュールは、特定の機能を提供するためのユーザコードによって選択的にオーバーライドし又は特殊化することが可能なものである。AUT206は、Java仮想マシン（JVM）、共通言語ランタイム（CLR）、及び／又はスキャナ202からのリクエストを処理するためのその他のラインタイム環境のうちの１つ以上のインスタンスを実行するよう構成することが可能である。ソフトウェアフレームワークの共通コードモジュール又はランタイム環境により提供されるプログラミング命令はコンテナコードと称することが可能である。AUT206に固有のカスタムプログラミング命令はユーザコードと称することが可能である。
【００２８】
検査中に、スキャナ202は、HTTPリクエストによりAUT206を調査し、そのHTTPレスポンス又はその欠如を評価して該AUTが入力を許容するURLの全てを探し出すことが可能である。レスポンスの欠如は、有用な情報、例えば、被検アプリケーションが機能しなかったこと及び／又は該アプリケーションをホストしているサーバが機能しなかったことを判定するための情報を提供することが可能である。本書で説明する実施形態がスキャナ202に関するものであったとしても、他のセキュリティ検査エンジン、モジュール、及び／又は技術を使用することが可能である。
【００２９】
AUT206は、スキャナ202とAUT206とのネットワークを介した通信を可能にするためのネットワークインタフェイス（図示せず）を含む。該ネットワークインタフェイスは、AUT206のアタックサーフェスを呈するものであり、該AUT206が一般的な用途に使用できるようになった際に該AUT206に対するアクセスを提供するために最終的に使用されることになるものと同じインタフェイスである。スキャナ202とAUT206との間のネットワークインタフェイスを介した通信は、スキャナ202からAUT206へ発行されたアプリケーション（例えばHTTPによる）リクエスト及びAUT206からスキャナ202へ発行されたHTTPレスポンスを介して実施することが可能である。AUT206をターゲットとしたリクエストは、アプリケーションリクエストと称することが可能であり、AUT206から受信したレスポンスは、アプリケーションレスポンスと称することが可能である。スキャナ202により生成されるアプリケーションリクエストは、例えば、AUT206によりもたらされる検査に応答すべく、該AUT206の潜在的な脆弱性を露呈させるよう構成することが可能である。
【００３０】
リアルタイムモディファイア204及び／又はオブザーバ208は、AUT206の実行環境内で動作することが可能であり、及びAUT206により実行される内部操作にアクセスすることが可能である。例えば、リアルタイムモディファイア204は、様々なプログラムポイントでJAVAクラス等の追加のコードをインジェクトすることによりAUT206のバイトコードを修正することが可能である。該インジェクトされたコードは、AUT206を観察するモニタとして働く。該インジェクトされたモニタコードは、AUT206内の戦略的なプログラムポイント、例えば、データベースの修正や外部の個人との通信といった安全でないとみなすことができる特定の操作を実行するアプリケーションプログラミングインタフェイス（API）コールに配置することが可能である。
【００３１】
スキャナ202とオブザーバ208との間の通信は、カスタムリクエスト及びレスポンスヘッダを使用することにより実施することが可能である。カスタムヘッダは、スキャナ202によりアプリケーションリクエストに追加することが可能であり、及びカスタムヘッダは、オブザーバ208によりアプリケーションレスポンスに追加することが可能である。このようにして、スキャナ202とオブザーバ208との間の通信の少なくとも一部をAUT206との通常の通信に便乗させることが可能である。単一の通信チャネルを使用することにより、専用の第２のチャネルをオープンすることに関する問題が排除され、及びHTTPヘッダの追加は典型的にはAUT206の通常動作に干渉しないものである。
【００３２】
一実施形態では、スキャナ202は、AUT206について検査を実行する。アプリケーションリクエストをAUT206へ送り、アプリケーションレスポンスを受信することが可能である。スキャナ202は、アプリケーションリクエストを送信し及びレスポンスを受信して、考え得るセキュリティ脆弱性領域（例えば、AUT206に入力を提供することができる場所）を見出すことが可能である。次いで、スキャナ202は、アタックベクトルを使用して該場所をアタックすることが可能である。該アタックベクトルは、AUT206に安全でない機能を実行させようとすることを含むことが可能である。
【００３３】
一例では、スキャナ202は、AUT206に安全でない機能を実行するよう求める。リアルタイムモディファイア204は、該安全でない機能又はその一部が呼び出されたことを検出することが可能である。このため、リアルタイムモディファイア204は、該安全でない部分が実行されるのを阻止するようにAUT206の実行を修正することが可能である。かかる修正の例が図３に一層詳細に示され及び上述されている。更に、既述のように、オブザーバ208は、安全でない部分に対する呼び出しを追跡して、テスト情報及び／又は分析をスキャナ202に提供することが可能である。更に、リアルタイムモディファイア204は、安全でない機能を実行することなく安全でない部分からのレスポンスをエミュレートすることが可能である。
【００３４】
オブザーバ208は、AUT206の検査を促進させるために情報／分析をスキャナ202に提供するために使用することが可能である。スキャナ202は、サービスリクエスト及びレスポンスを使用することによりオブザーバ208と通信することが可能である。該サービスリクエスト及びレスポンスは、例えばカスタムヘッダを使用して実施することが可能である。
【００３５】
実施形態によっては、リアルタイムモディファイア204を使用してAUT206の他の特徴を実行中に修正することも可能である。例えば、１つ以上の機能又はプログラムセグメントが動的にコンパイルされる場合に、AUT206の実行にデバッグ用コードを追加することが可能である。このため、オンザフライ・コンパイラがデバッグ情報を使用してコードをコンパイルすることが可能である。この方法の場合、オブザーバ208は、実行されたコードに関する詳細な情報にアクセスすることが可能である。該詳細な情報は、スキャナ202に提供することが可能である。スキャナ202は、そのAUT206の検査で前記デバッグ情報を使用することが可能である。
【００３６】
図３は、本発明の一実施形態による、安全性に基づいて修正されるAUTの動作の一例を示すブロック図である。リアルタイムモディファイア300はAUT302を実行することが可能である。該アプリケーションは、スキャナ等のセキュリティ検査エンジンにより検査することが可能である。AUT302は、セキュリティ検査エンジンとの間でメッセージを送受信することが可能である。更に、AUT302は、該通信を介して妥当性検査等の検査を提供することが可能である。該検査は、APIを介してセキュリティ検査エンジンへ提供することが可能である。
【００３７】
該検査中に、AUT302のコードを実行することが可能である。所与の機能又はその一部が実行された際に、特定の判定ポイントで、リアルタイムモディファイア300は、該機能の次の操作が安全であるか否かを判定する働きをすることが可能である。上述のように、API呼出手段またはそれと同様のツールを使用して、該機能により呼び出されたAPIを監視し及び／又は管理することが可能である。
【００３８】
特定の例では、コードが実行され、その動作が安全であるか否かをリアルタイムモディファイア300が判定する。一例では、リアルタイムモディファイア300は、該動作が安全でない動作304であると判定する。該動作が安全でないため、リアルタイムモディファイア300は、更に伝搬させることなく返すべく実行を変更する。実施形態によっては、リアルタイムモディファイア300は、安全でない動作を実行することなく該安全でない動作をエミュレートする（又は該安全でない動作をエミュレートするように予測値を返す）よう実行されるコードを挿入することが可能である。更に、リアルタイムモディファイア300は、安全でない動作が実行されることになっていた情報を有するレポートをスキャナへ提供することが可能である。別の例では、前記動作が安全な動作306であると判定することが可能である。該動作が安全であると判定されたため、リアルタイムモディファイア300は、前記コードがその処理のために伝搬し続けることを許可することが可能である。このため、APIをコールする場合に、関連する安全なAPI308をコールすることが可能となる。
【００３９】
図４は、本発明の一実施形態による、実行の安全性に基づきAUTの実行を修正するための方法のフローチャートである。方法400の実行をコンピューティングシステム100に関して以下で説明するが、方法400を実行するための他の適当な要素（例えば、コンピューティング装置500）を使用することが可能である。更に、方法400を実行するための要素は、多数の装置にわたって分散することが可能である。方法400は、記憶媒体520等のマシン読み取り可能記憶媒体に格納された実行可能命令という形で実施することが可能であり、及び／又は電子回路という形で実施することが可能である。
【００４０】
ステップ402で、サーバ120は、リアルタイムモディファイア126を用いてAUT124をホストすることが可能である。該サーバ120は、例えばネットワークを介して、他の装置及び／又はプログラムと通信することが可能である。一例では、セキュリティ検査モジュール128を使用してAUT124と通信することが可能である。
【００４１】
セキュリティ検査モジュール128は、AUT124についてセキュリティ検査を実行するためにコンピューティング装置102を使用して通信することが可能である。このため、ステップ404で、サーバ120は、コンピューティング装置102からの通信を受信することが可能であり、該コンピューティング装置102は、セキュリティ検査を実行するためにAUT124に通信可能な状態で接続されることが可能である。上述のように、セキュリティ検査は、単体検査、侵入検査、ファズテスト、脆弱性検査、ソフトウェアセキュリティ検査、ウェブサイトセキュリティ検査、及びそれらの組み合わせ等を含むことが可能である。
【００４２】
検査中に、AUT124は、様々なタスクを実行し、セキュリティ検査モジュール128からの通信を受信し、及び該セキュリティ検査モジュール128に応答することが可能である。一例では、該タスクの実行は、リアルタイムモディファイア126が安全でないと判定する可能性のあるタスクを実行する準備をAUT124が整えている状況に通じ得るものである。このため、ステップ406で、リアルタイムモディファイア126の認識モジュール130は、AUT124により実行されることになる機能の一部が安全でないことを該機能の一部に起因する活動の種類に基づいて判定することが可能である。一例では、該活動は、安全でないものとして検査者が予めフラグをセットする（pre-flagged）ことが可能である。別の例では、該活動は、検査者その他の者（例えば開発者）が安全でないものとしてフラグをセットした一組のAPIに基づいて、安全でないと判定することが可能である。該活動は、該活動が検査とは無関係のエンティティとの通信を伴うこと、該活動がデータベースの直接的な修正を伴うこと、該活動が既知の脆弱性を含むこと、又は該活動が望ましくないアクションを実行することを理由に、安全でないとみなすことが可能である。例示的なアクションとして、データベースの汚染、試験台を回復させることなく使用不能にすること、テストメッセージ及び／又はスパムE-mailの送信が挙げられる。
【００４３】
ステップ408で、リアルタイムモディファイア126は次いで、安全でない部分を実行しないようAUT124の実行を修正することが可能である。上述のように、該修正は、該部分を実行することなく直ちに返すこと、該部分を他のコードに置換すること、予想される結果を返すこと、及び安全でない動作を実行することなく該部分をエミュレートすること等を含むことが可能である。このため、場合によっては、リアルタイムモディファイア126は、該部分の１つ以上の機能をエミュレートしてセキュリティ検査に応答を提供することが可能である。更に、上述のように、サーバは、例えばオブザーバを使用して、セキュリティ検査に対し、該部分に起因する１つ以上の脆弱性を監視し及び／又はレポートすることが可能である。
【００４４】
図５は、本発明の一実施形態による、安全性に基づきセキュリティ検査のアクションに応じてAUTを修正することができるコンピューティング装置のブロック図である。該コンピューティング装置500は、例えば、プロセッサ510、及び実行されるコードの一部が安全であるか否かに基づいてAUTの実行を修正するための命令522,524,526を含むマシン読み取り可能記憶媒体520を含む。該コンピューティング装置500は、例えば、ノートブックコンピュータ、デスクトップコンピュータ、サーバ、ワークステーション、又はその他の任意のコンピューティング装置とすることが可能である。特定の実施形態では、コンピューティング装置500は、サーバ120の１つ以上の機能を実施するために使用することが可能である。
【００４５】
プロセッサ510は、少なくとも１つの中央処理装置（CPU）、少なくとも１つの半導体ベースのマイクロプロセッサ、少なくとも１つのグラフィクス処理装置（GPU）、マシン読み取り可能記憶媒体520に格納されている命令の読み出し及び実行に適した他のハードウェア装置、又はそれらの組み合わせとすることが可能である。例えば、プロセッサ510は、１チップ上に複数のコアを含むことが可能であり、複数のチップに渡って複数のコアを含むことが可能であり、複数のデバイスに渡って複数のコアを含むことが可能であり（例えば、コンピューティング装置500が複数ノードのデバイスを含む場合）、又はそれらの組み合わせとすることが可能である。プロセッサ510は、例えば方法400の場合のように、実行されるコードの安全性の判定に基づいてAUTの実行の修正を実施すべく、命令522,524,526をフェッチし、デコードし、及び実行することが可能である。命令の読み出し及び実行に替えて又はそれに加えて、プロセッサ510は、命令522,524,526の機能を実行するための複数の電子的な構成要素を含む、少なくとも１つの集積回路（IC）、その他の制御ロジック、その他の電子回路、又はそれらの組み合わせを含むことが可能である。
【００４６】
マシン読み取り可能記憶媒体520は、実行可能命令を収容し又は格納する、電子的、磁気的、光学的、又はその他の任意の物理的な記憶装置とすることが可能である。このため、マシン読み取り可能記憶媒体は、例えば、RAM（Random Access Memory）、EEPROM（Electrically Erasable Programmable Read-Only Memory）、ストレージドライブ、及びCD-ROM（Compact Disc Read Only Memory）等とすることが可能である。このため、マシン読み取り可能記憶媒体は、持続性のものとすることが可能である。本書で詳細に説明したように、マシン読み取り可能記憶媒体520には、方法400を実施するための一連の実行可能命令をエンコードすることが可能である。
【００４７】
プロセッサ510は、AUTをホストするための命令を実行することが可能である。実施形態によっては、AUTは、実行されるコードのデバッグ／観察を可能にするようセットされたフラグを用いてコンパイルすることが可能である。別の実施形態では、AUTは、デバッグ／観察を実行することができるランタイム環境で実行することが可能である。セキュリティ検査、例えば、侵入検査又はスキャンは、AUT上で実行することが可能である。
【００４８】
通信命令524は、セキュリティ検査と通信するために使用することが可能である。このため、コンピューティング装置500は、セキュリティ検査をホストしているコンピューティング装置からの通信を受信することが可能である。かかる通信は、それに応じて各部（例えば、機能、API、コードの各部など）を実行させるために使用することが可能である。
【００４９】
AUTの実行中に、認識命令526を実行して、コードの各部が安全であるか否かを判定することが可能である。該認識命令526は、例えばリアルタイムモディファイアにおいてAUTにより実行される機能の一部が安全でないことをプロセッサ510に判定させることが可能である。
【００５０】
一実施形態では、一部が安全でないことの判定は、該一部に関連する処理の種類（例えば、ファイル削除、外部通信など）に基づいて行われる。安全でない処理の例として、データベースレコードの削除、データベースレコードの修正、データベースの汚染、外向けメッセージの送信、及びコンピューティング装置500のリソースを枯渇させることのうちの少なくとも１つが挙げられる。別の実施形態では、一部が安全でないことの判定は、上述のように機能によりコールされたAPIに基づいて行うことが可能である。
【００５１】
修正命令522は、安全でないと判定された部分を実行しないようAUTの実行をリアルタイムモディファイアにより修正するために実行することが可能である。更に、実施形態によっては、リアルタイムモディファイアは、機能のうち安全でないとみなされた部分を実行することなく該機能をエミュレートすることが可能である。更に、コンピューティング装置500は、コードの安全でない部分に関係している可能性のある脆弱性を生成し追跡することが可能である。場合によっては、コンピューティング装置500は、該部分に関する１つ以上の脆弱性をセキュリティ検査にレポートすることが可能である。
【００５２】
上記方法を用いることにより、リアルタイムモディファイアは、ダメージを与えるコードを実行から排除する一方でオリジナルのアプリケーションロジックを完全な状態に維持することにより、動的なセキュリティスキャン又はその他のセキュリティ検査の過程で、AUTがそれ自体及び／又はそのパートナーを損傷させることを防止する。更に、この方法は、試験台の外部の世界との通信の試行を阻止することが可能である。更に、この方法は、アプリケーションの環境を完全な状態に維持することにより、該アプリケーションの状態及び環境の手動及び／又は自動的な追加のメンテナンスをなくすことが可能である。
【図１】
2015535997.tif 000003
【図２】
2015535997.tif 000004
【図３】
2015535997.tif 000005
【図４】
2015535997.tif 000006
【図５】
2015535997.tif 000007
【国際調査報告】
2015535997.tif 000008
2015535997.tif 000009