(57)【特許請求の範囲】
【請求項１】
コンピュータにより実施される、コンピュータ・ソフトウェア・アプリケーションをテストするための方法であって、
第２のコンピュータにおけるコンピュータ・ソフトウェア・アプリケーションによって使用されるデータチェック・ソフトウェアのコピーを実行するように、第１のコンピュータを設定することと、
前記第１のコンピュータにおいて前記データチェック・ソフトウェアの前記コピーを用いて、テストデータ・ペイロードに関連したセキュリティ脆弱性についてテストするように構成された前記テストデータ・ペイロードの第１のコピーを処理することと、
前記テストデータ・ペイロードの前記第１のコピーが、さらなる処理のために前記第１のコンピュータにおいて前記データチェック・ソフトウェアの前記コピーにより保証されることを判断することと、
前記テストデータ・ペイロードの前記第１のコピーが保証されると判断した場合に、前記テストデータ・ペイロードの第２のコピーを、コンピュータ・ネットワークを用いて前記第２のコンピュータにおける前記コンピュータ・ソフトウェア・アプリケーションに送ることと、
を含む方法。
【請求項２】
前記コンピュータ・ソフトウェア・アプリケーションによって使用される前記データチェック・ソフトウェアを識別することをさらに含む、請求項１に記載の方法。
【請求項３】
前記識別することは、前記データチェック・ソフトウェアがサニタイザ及びバリデータのいずれかであると判断することを含む、請求項２に記載の方法。
【請求項４】
前記識別することを実行するように、前記コンピュータ・ソフトウェア・アプリケーションを計装することをさらに含む、請求項２に記載の方法。
【請求項５】
前記テストデータ・ペイロードは、前記第１のコンピュータに格納される、請求項１から請求項４までのいずれか１項に記載の方法。
【請求項６】
前記テストデータ・ペイロードは、前記セキュリティ脆弱性を利用するように設計された悪意のあるペイロードを含む、請求項１から請求項５までのいずれか１項に記載の方法。
【請求項７】
前記テストデータ・ペイロードの前記第１のコピーが、さらなる処理のために前記第１のコンピュータにおいて前記データチェック・ソフトウェアの前記コピーにより保証されることを判断することは、前記テストデータ・ペイロードの前記第１のコピーが、前記第１のコンピュータにおいて前記データチェック・ソフトウェアの前記コピーにより処理された後に前記テストデータ・ペイロードに関連したセキュリティ脆弱性についてテストするように構成されていることを判断することを含む、請求項１から請求項６までのいずれか１項に記載の方法。
【請求項８】
前記コンピュータ・ソフトウェア・アプリケーションは、ウェブ・アプリケーションを含む、請求項１から請求項７までのいずれか１項に記載の方法。
【請求項９】
コンピュータ・ソフトウェア・アプリケーションをテストするためのシステムであって、
第２のコンピュータにおけるコンピュータ・ソフトウェア・アプリケーションによって使用されるデータチェック・ソフトウェアのコピーを実行するように、第１のコンピュータを設定し、
前記第１のコンピュータにおいて前記データチェック・ソフトウェアの前記コピーを用いて、テストデータ・ペイロードに関連したセキュリティ脆弱性についてテストするように構成された前記テストデータ・ペイロードの第１のコピーを処理し、
前記テストデータ・ペイロードの前記第１のコピーが、さらなる処理のために前記第１のコンピュータにおいて前記データチェック・ソフトウェアの前記コピーにより保証されることを判断する、
ように構成されたペイロード・テスタと、
前記ペイロード・テスタが前記テストデータ・ペイロードの前記第１のコピーが保証されると判断した場合に、前記テストデータ・ペイロードの第２のコピーを、コンピュータ・ネットワークを用いて前記第２のコンピュータにおける前記コンピュータ・ソフトウェア・アプリケーションに送るように構成されたアプリケーション・テスタと、
を含むシステム。
【請求項１０】
前記コンピュータ・ソフトウェア・アプリケーションによって使用される前記データチェック・ソフトウェアを識別するように構成されたエバリュエータをさらに含む、請求項９に記載のシステム。
【請求項１１】
前記データチェック・ソフトウェアは、サニタイザ及びバリデータのいずれかである、請求項１０に記載のシステム。
【請求項１２】
前記コンピュータ・ソフトウェア・アプリケーションが前記コンピュータ・ソフトウェア・アプリケーションによって使用される前記データチェック・ソフトウェアを識別するように計装される、請求項１０に記載のシステム。
【請求項１３】
前記テストデータ・ペイロードは、前記第１のコンピュータに格納される、請求項９から請求項１２までのいずれか１項に記載のシステム。
【請求項１４】
前記テストデータ・ペイロードは、前記セキュリティ脆弱性を利用するように設計された悪意のあるペイロードを含む、請求項９から請求項１３までのいずれか１項に記載のシステム。
【請求項１５】
前記ペイロード・テスタは、前記テストデータ・ペイロードの前記第１のコピーが、前記第１のコンピュータにおいて前記データチェック・ソフトウェアの前記コピーにより処理された後に前記テストデータ・ペイロードに関連したセキュリティ脆弱性についてテストするように構成されていることを判断するように構成されたものである、請求項９から請求項１４までのいずれか１項に記載のシステム。
【請求項１６】
前記コンピュータ・ソフトウェア・アプリケーションは、ウェブ・アプリケーションを含む、請求項９から請求項１５までのいずれか１項に記載のシステム。
【請求項１７】
コンピュータ・ソフトウェア・アプリケーションをテストするためのコンピュータ・プログラムであって、第１のコンピュータにおいて実行されたときに、
第２のコンピュータにおけるコンピュータ・ソフトウェア・アプリケーションによって使用されるデータチェック・ソフトウェアのコピーを実行するように、前記第１のコンピュータを設定し、
前記第１のコンピュータにおいて前記データチェック・ソフトウェアの前記コピーを用いて、テストデータ・ペイロードに関連したセキュリティ脆弱性についてテストするように構成された前記テストデータ・ペイロードの第１のコピーを処理し、
前記テストデータ・ペイロードの前記第１のコピーが、さらなる処理のために前記第１のコンピュータにおいて前記データチェック・ソフトウェアの前記コピーにより保証されることを判断し、
前記テストデータ・ペイロードの前記第１のコピーが保証されると判断した場合に、前記テストデータ・ペイロードの第２のコピーを、コンピュータ・ネットワークを用いて前記第２のコンピュータにおける前記コンピュータ・ソフトウェア・アプリケーションに送る、
ように前記第１のコンピュータを動作させるように構成された、コンピュータ・プログラム。
【請求項１８】
前記第１のコンピュータによって実行されたときに、前記コンピュータ・ソフトウェア・アプリケーションによって使用される前記データチェック・ソフトウェアを識別するように、前記第１のコンピュータを動作させるように構成された、請求項１７に記載のコンピュータ・プログラム。
【請求項１９】
前記データチェック・ソフトウェアは、サニタイザ及びバリデータのいずれかである、請求項１８に記載のコンピュータ・プログラム。
【請求項２０】
前記コンピュータ・ソフトウェア・アプリケーションが前記コンピュータ・ソフトウェア・アプリケーションによって使用される前記データチェック・ソフトウェアを識別するように計装される、請求項１８に記載のコンピュータ・プログラム。
【請求項２１】
前記テストデータ・ペイロードは、前記第１のコンピュータに格納される、請求項１７から請求項２０までのいずれか１項に記載のコンピュータ・プログラム。
【請求項２２】
前記テストデータ・ペイロードは、前記セキュリティ脆弱性を利用するように設計された悪意のあるペイロードを含む、請求項１７から請求項２１までのいずれか１項に記載のコンピュータ・プログラム。
【請求項２３】
前記第１のコンピュータによって実行されたときに、前記テストデータ・ペイロードの前記第１のコピーが、前記第１のコンピュータにおいて前記データチェック・ソフトウェアの前記コピーにより処理された後に前記テストデータ・ペイロードに関連したセキュリティ脆弱性についてテストするように構成されていることを判断するように、前記第１のコンピュータを動作させるように構成された、請求項１７から請求項２２までのいずれか１項に記載のコンピュータ・プログラム。
【請求項２４】
前記コンピュータ・ソフトウェア・アプリケーションは、ウェブ・アプリケーションを含む、請求項１７から請求項２３までのいずれか１項に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータ・ソフトウェアのテストに関する。
【背景技術】
【０００２】
動的解析ツールは、コンピュータ・ソフトウェア・アプリケーションをテストするためにコンピュータ・ソフトウェア開発者によって使用されることが多く、典型的には、まず、コンピュータ・ソフトウェア・アプリケーションを探索して、例えばデータをアプリケーションに提供できるインターフェースを含む、アプリケーションのインターフェースを見つけ、次にアプリケーションのインターフェースと対話を行って、そうした対話に対するアプリケーションの応答を監視することにより、コンピュータ・ソフトウェア・アプリケーションをテストする。１つのタイプの動的解析においては、既知の悪意のある特性を有するテストデータをアプリケーションに与え、次にアプリケーションの動作を観察することによって、セキュリティ脆弱性についてコンピュータ・ソフトウェア・アプリケーションをテストする。例えば、動的解析は、コンピュータ・ネットワークを介してＨＴＴＰ要求を別のコンピュータがホストするウェブ・アプリケーションに送る１つのコンピュータ上で動作している「ブラック・ボックス・テスタ（black-box tester）」を用いることによって、インターネットなどのコンピュータ・ネットワークにわたってアクセスされるウェブ・アプリケーションをテストするために用いることができる。ＨＴＴＰ要求は、ＳＱＬインジェクション（SQL injection）、クロスサイト・スクリプティング（cross-site scripting）及びコマンド・インジェクション（command injection）などのセキュリティ脆弱性（security vulnerability）についてテストするように設計されたテストデータ・ペイロードのライブラリから引き出される、悪意のあるテストデータを有するように構成される。
【０００３】
ブラック・ボックス・テスタは、可能性のある全てのテストデータ・ペイロードをコンピュータ・ソフトウェア・アプリケーションに送って、可能性のある全てのセキュリティ脆弱性についてテストすることができる。しかしながら、時間及び帯域幅の点で、コンピュータ・ネットワークを介して多くのＨＴＴＰ要求を送るコストは高いため、一般に、コンピュータ・ネットワークを介してウェブ・アプリケーションをテストする市販のブラック・ボックス・テスタでは、そのようなコストを低く抑えるために、テストされるＨＴＴＰパラメータ当たり、数十個のテストペイロードだけしか送らない。残念なことに、これは多くの場合、幾つかのセキュリティ脆弱性が検出されずにいることを意味する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
コンピュータ・ソフトウェア・アプリケーションをテストするための方法、システム及びコンピュータ・プログラムを提供する。
【課題を解決するための手段】
【０００５】
第１の態様によると、コンピュータ・ソフトウェア・アプリケーションをテストするための方法が提供され、この方法は、第２のコンピュータにおけるコンピュータ・ソフトウェア・アプリケーションによって使用されるデータチェック・ソフトウェアのコピーを実行するように、第１のコンピュータを構成することと、第１のコンピュータにおいてデータチェック・ソフトウェアを用いて、関連したセキュリティ脆弱性についてテストするように構成されたテストデータ・ペイロードの第１のコピーを処理することと、テストデータ・ペイロードの第１のコピーが、さらなる処理のために第１のコンピュータにおいてデータチェック・ソフトウェアによりエンドースされると判断することと、脅威を処理するために、テストデータ・ペイロードの第２のコピーを、コンピュータ・ネットワークを用いて第２のコンピュータにおけるコンピュータ・ソフトウェア・アプリケーションに送ることとを含む。
【０００６】
好ましくは、この方法は、コンピュータ・ソフトウェア・アプリケーションによって使用されるデータチェック・ソフトウェアを識別することをさらに含む。より好ましくは、識別することは、データチェック・ソフトウェアがサニタイザ及びバリデータのいずれかであると判断することを含む。さらにより好ましくは、この方法は、識別することを実行するようにコンピュータ・ソフトウェア・アプリケーションを装備することをさらに含む。
【０００７】
好ましくは、テストデータ・ペイロードは、第１のコンピュータに格納される。より好ましくは、テストデータ・ペイロードは、セキュリティ脆弱性を利用するように設計された悪意のあるペイロードを含む。さらにより好ましくは、判断することは、テストデータ・ペイロードの第１のコピーが、第１のコンピュータにおいてデータチェック・ソフトウェアにより処理された後にその関連したセキュリティ脆弱性についてテストするように構成可能であると判断することを含む。さらにより好ましくは、構成すること、処理すること、判断すること、及び送ることが実行され、コンピュータ・ソフトウェア・アプリケーションは、ウェブ・アプリケーションを含む。
【０００８】
第２の態様によると、コンピュータ・ソフトウェア・アプリケーションをテストするためのシステムが提供され、このシステムは、第２のコンピュータにおけるコンピュータ・ソフトウェア・アプリケーションによって使用されるデータチェック・ソフトウェアのコピーを実行するように、第１のコンピュータを構成し、第１のコンピュータにおいてデータチェック・ソフトウェアを用いて、関連したセキュリティ脆弱性についてテストするように構成可能なテストデータ・ペイロードの第１のコピーを処理し、テストデータ・ペイロードの第１のコピーが、さらなる処理のために第１のコンピュータにおいてデータチェック・ソフトウェアによりエンドースされると判断するように構成可能なペイロード・テスタと、脅威を処理するために、テストデータ・ペイロードの第２のコピーを、コンピュータ・ネットワークを用いて第２のコンピュータにおけるコンピュータ・ソフトウェア・アプリケーションに送るように構成可能なアプリケーション・テスタとを含む。
【０００９】
第３の態様によると、コンピュータ・ソフトウェア・アプリケーションをテストするためのコンピュータ・プログラム製品が提供され、このコンピュータ・プログラム製品は、非一時的コンピュータ可読ストレージ媒体と、コンピュータ可読ストレージ媒体内に具体化されたコンピュータ可読プログラム・コードとを含み、コンピュータ可読プログラム・コードは、第２のコンピュータにおけるコンピュータ・ソフトウェア・アプリケーションによって使用されるデータチェック・ソフトウェアのコピーを実行するように、第１のコンピュータを構成し、第１のコンピュータにおいて、データチェック・ソフトウェアを用いて、関連したセキュリティ脆弱性についてテストするように構成可能なテストデータ・ペイロードの第１のコピーを処理し、テストデータ・ペイロードの第１のコピーが、さらなる処理のために第１のコンピュータにおいてデータチェック・ソフトウェアによりエンドースされると判断し、脅威を処理するために、テストデータ・ペイロードの第２のコピーを、コンピュータ・ネットワークを用いて第２のコンピュータにおけるコンピュータ・ソフトウェア・アプリケーションに送るように構成可能である。
【００１０】
ここで、単なる例として、以下の図面を参照して、本発明の好ましい実施形態を説明する。
【図面の簡単な説明】
【００１１】
【図１】本発明の１つの実施形態に従って構成され、動作する、コンピュータ・アプリケーションをテストするためのシステムの簡単化された概念図である。
【図２】本発明の１つの実施形態に従って構成され、動作する、図１のシステムの動作の例示的な方法の簡単化されたフローチャート図である。
【図３】本発明の１つの実施形態に従って構成され、動作する、コンピューティング・システムの例示的なハードウェア実装の簡単化されたブロック図である。
【発明を実施するための形態】
【００１２】
ここで、１つ又は複数の実施形態の文脈内で本発明を説明するが、この説明は、本発明を全体として例証することを意図したものであり、本発明を示される実施形態に限定するものと解釈すべきではない。当業者であれば、種々の変更を思い付くことができ、それらの変更は、本明細書に具体的に示されないが、それにもかかわらず、本発明の範囲内にあることが認識されるであろう。
【００１３】
当業者により認識されるように、本発明の態様は、システム、方法又はコンピュータ・プログラム製品として具体化することができる。従って、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形態をとることができ、本明細書においては、これらは全て、一般的に「回路」、「モジュール」又は「システム」と呼ぶことがある。さらに、本発明の態様は、コンピュータ可読プログラム・コードが組み込まれた１つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログラム製品の形態をとることができる。
【００１４】
１つ又は複数のコンピュータ可読媒体のいずれの組み合わせを用いることもできる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子、磁気、光、電磁気、赤外線、又は半導体のシステム、装置、若しくはデバイス、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例（非網羅的なリスト）として、１つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光記憶装置、磁気記憶装置、又は上記のもののいずれかの適切な組み合わせが挙げられる。本文書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置若しくはデバイスによって又はこれらと関連して用いるためのプログラムを収容又は格納することができるいずれかの有形媒体とすることができる。
【００１５】
コンピュータ可読信号媒体は、コンピュータ可読プログラム・コードが、例えばベースバンド内に、又は搬送波の一部としてその中に具体化された、伝搬データ信号を含むことができる。このような伝搬信号は、これらに限定されるものではないが、電磁気、光又はこれらのいずれかの適切な組み合わせを含む、種々の異なる形態のいずれかを取ることができる。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、かつ、命令実行システム、装置若しくはデバイスによって又はこれらと関連して用いるためのプログラムを通信、伝搬、又は搬送することができる、いずれかのコンピュータ可読媒体とすることができる。
【００１６】
コンピュータ可読媒体上に具体化されたプログラム・コードは、これらに限定されるものではないが、無線、有線、光ファイバ・ケーブル、ＲＦ等、又は上記のもののいずれかの適切な組み合わせを含む、いずれかの適切な媒体を用いて伝送することができる。
【００１７】
本発明の態様のための動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋等のようなオブジェクト指向型プログラミング言語、及び「Ｃ」プログラミング言語又は同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、１つ又は複数のプログラミング言語のいずれかの組み合わせで記述することができる。プログラム・コードは、完全にユーザのコンピュータ上で実行される場合もあり、スタンドアロンのソフトウェア・パッケージとして、一部がユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。後者のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある（例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて）。
【００１８】
本発明の態様は、本発明の実施形態に記載されるような方法、装置（システム）及びコンピュータ・プログラム製品のフローチャート図及び／又はブロック図を参照して以下に説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実装できることが理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実施するための手段を作り出すようにすることができる。
【００１９】
これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装する命令を含む製品を製造するようにすることができる。
【００２０】
コンピュータ・プログラム命令はまた、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上にロードして、一連の動作ステップをコンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で行わせてコンピュータ実施のプロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実行するためのプロセスを提供するようにすることもできる。
【００２１】
ここで、本発明の１つの実施形態に従って構成され、動作する、コンピュータ・ソフトウェア・アプリケーションをテストするためのシステムの簡単化された概念図である、図１を参照する。図１のシステムにおいて、コンピュータ１０２によりホストされるコンピュータ・ソフトウェア・アプリケーション１００が示され、ここでコンピュータ・ソフトウェア・アプリケーション１００は、コンピュータ・ネットワークを介してアクセスされるように設計することができる。コンピュータ・ソフトウェア・アプリケーション１００は、例えば、Ｈｙｐｅｒｔｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ（ＨＴＭＬ）によってコード化されたウェブページを含む「ウェブ」アプリケーションとすることができ、コンピュータ１０２は、ウェブ・アプリケーション・サーバとして働く。コンピュータ・ソフトウェア・アプリケーション１００は、エバリュエータ（evaluator）１０４によって評価を行い、従来の「グラスボックス（glass box）」テスト技術を用いることなどによって、コンピュータ・ソフトウェア・アプリケーション１００によって使用されるデータチェック・ソフトウェアを識別することができ、「グラスボックス」テスト技術では、コンピュータ・ソフトウェア・アプリケーション１００は、そうしたデータチェック・ソフトウェアを識別するソフトウェア命令を装備している。データチェック・ソフトウェアは、例えば「サニタイザ（sanitizer）」とすることができ、サニタイザは、ユーザ提供入力を、典型的にはコンピュータ・ソフトウェア・アプリケーション１００によるさらなる処理のために入力文字列を出力文字列にマッピングするミューテーション基準の対象とすることによって、コンピュータ・ソフトウェア・アプリケーション１００によるさらなる処理のために入力をエンドースする。代替的に、データチェック・ソフトウェアは、「バリデータ（validator）」とすることができ、バリデータは、ユーザ提供入力を、典型的にはコンピュータ・ソフトウェア・アプリケーション１００により入力をさらに処理できるかどうかを示すブール値に入力文字列をマッピングする検証基準の対象とすることによって、コンピュータ・ソフトウェア・アプリケーション１００によるさらなる処理のために入力をエンドースする。そうしたデータチェック・ソフトウェアの幾つかの例として、入力パラメータについてのカスタム・バリデータが宣言的に定義されるフレームワーク構成ファイルが挙げられる。例えば、カリフォルニア州ロサンゼルス所在のＡｐａｃｈｅ  Ｓｏｆｔｗａｒｅ  Ｆｏｕｎｄａｔｉｏｎから市販されているＡｐａｃｈｅ  Ｓｔｒｕｔｓ  ２（商標）においては、ユーザは、構成ファイル内で、所定のパラメータについてのユーザ提供入力と照合される正規表現；サニタイザ及び／又はバリデータを含むものとして知られる市販のセキュリティ・ライブラリ；入力として文字列を受け取り、出力として文字列を返す、又は入力として文字列を受け取り、ブール値を返す、又は複数のソースから要求を受信するデータフロー・ボトルネックである、静的方法などのサニタイザ又はバリデータの特性を有する方法；Ｊａｖａにおけるｊａｖａ．ｕｔｉｌ．ｒｅｇｅｘパッケージ（Ｊａｖａ及び全てのＪａｖａベースの商標及びロゴは、Ｏｒａｃｌｅ及び／又は系列会社の商標及び登録商標である）などの正規表現ライブラリを指定することができる。
【００２２】
エバリュエータ１０４は、コンピュータ・ソフトウェア・アプリケーション１００によって使用されるデータチェック・ソフトウェアの記述を、コンピュータ１０８におけるペイロード・テスタ１０６に提供することができ、選択的に、データチェック・ソフトウェア自体のコピーをペイロード・テスタ１０６に提供することもできる。ペイロード・テスタ１０６は、コンピュータ１０８を設定してコンピュータ・ソフトウェア・アプリケーション１００によって使用されるデータチェック・ソフトウェアのコピー１１０を実行するように構成することができる。ペイロード・テスタ１０６は、テストデータ・ペイロードのコピーを処理のためにデータチェック・ソフトウェアのコピー１１０に提供することによって、１つ又は複数のテストデータ・ペイロードのコピーを処理することができる。テストデータ・ペイロードを所定のテストデータ・ペイロードのライブラリ１１２に入れてコンピュータ１０８に格納することができ、所定のテストデータ・ペイロードは、各テストデータ・ペイロードが、セキュリティ脆弱性を利用するように設計された悪意のあるペイロードを含む場合などに、ＳＱＬインジェクション、クロスサイト・スクリプティング及びコマンド・インジェクションなどの１つ又は複数の既知のセキュリティ脆弱性についてテストするように構成することができる。ペイロード・テスタ１０６は、データチェック・ソフトウェアのコピー１１０により処理される各テストデータ・ペイロード・コピーが、さらなる処理のためにデータチェック・ソフトウェアのコピー１１０によりエンドースされるかどうかを判断するように構成することができる。テストデータ・ペイロード・コピーは、データチェック・ソフトウェアによる処理中にミューテーションを経ることがあるので、処理されたテストデータ・ペイロード・コピーがその悪意のある特性を十分に保持していると判断することなどによって、データチェック・ソフトウェアのコピー１１０による処理の後に、テストデータ・ペイロード・コピーがその関連したセキュリティ脆弱性についてテストするように構成されたままであるとペイロード・テスタ１０６が判断した場合に、いずれのテストデータ・ペイロード・コピーもエンドースするように、ペイロード・テスタ１０６を構成することもできる。従って、例えば、データチェック・ソフトウェアがバリデータである場合には、ペイロード・テスタ１０６は、データチェック・ソフトウェアのコピー１１０により処理されるテストデータ・ペイロード・コピーがさらなる処理のために許容可能であることを、データチェック・ソフトウェアにより判断できるかどうかを決定する。同様に、データチェック・ソフトウェアがサニタイザである場合には、ペイロード・テスタ１０６は、データチェック・ソフトウェアのコピー１１０により処理されるテストデータ・ペイロード・コピーのミューテート・バージョンが、テストデータ・ペイロードと関連したセキュリティ脆弱性についてテストできるかどうかを決定することができる。
【００２３】
データチェック・ソフトウェアのコピー１１０による処理の後、上述のようにさらに処理するためにエンドースされるいずれのテストデータ・ペイロード・コピーについても、処理のために、テストデータ・ペイロードのコピーをコンピュータ・ネットワーク１１６を介してコンピュータ１０２におけるコンピュータ・ソフトウェア・アプリケーション１００に送るように、コンピュータ１０８におけるアプリケーション・テスタ１１４を構成することができる。逆に、データチェック・ソフトウェアのコピー１１０による処理の後、上述のようにさらに処理するためにエンドースされないいずれのテストデータ・ペイロード・コピーについても、アプリケーション・テスタ１１４は、処理のために、テストデータ・ペイロードのコピーを、コンピュータ・ネットワーク１１６を介してコンピュータ１０２におけるコンピュータ・ソフトウェア・アプリケーション１００に送ることはできない。このように、アプリケーション・テスタ１１４は、単に、ライブラリ１１２内の可能性のある全てのテストデータ・ペイロードを、コンピュータ・ネットワーク１１６を介してコンピュータ・ソフトウェア・アプリケーション１００に送って可能性のある全てのセキュリティ脆弱性をテストするのではなく、また、任意に減少させたテストデータ・ペイロードのセットをコンピュータ・ネットワーク１１６を介してコンピュータ・ソフトウェア・アプリケーション１００に送るのでもなく、コンピュータ・ソフトウェア・アプリケーション１００におけるセキュリティ脆弱性を明らかにする可能性が最も大きいテストデータ・ペイロードだけを送ることができる。
【００２４】
図１に示される要素のいずれも、コンピュータ・ハードウェアにおいて、及び／又は従来技術による非一時的コンピュータ可読媒体に具体化されたコンピュータ・ソフトウェアにおいて実装することができる。
【００２５】
ここで、本発明の１つの実施形態に従って動作する、図１のシステムの動作の例示的な方法の簡単化されたフローチャート図である、図２を参照する。図２の方法において、第１のコンピュータにおけるコンピュータ・ソフトウェア・アプリケーションによって使用されるデータチェック・ソフトウェアを識別することができる（ステップ２００）。第２のコンピュータは、識別されたデータチェック・ソフトウェアのコピーを実行するように構成することができる（ステップ２０２）。第２のコンピュータに格納された１つ又は複数のテストデータ・ペイロード・コピーを、処理のために第２のコンピュータにおける識別されたデータチェック・ソフトウェアのコピーに与えることができ（ステップ２０４）、テストデータ・ペイロードは、１つ又は複数の既知のセキュリティ脆弱性についてテストするように構成することができる。処理されたテストデータ・ペイロード・コピーが、さらなる処理のためにエンドースされた場合には（ステップ２０６）、テストデータ・ペイロードのコピーを、処理のために、コンピュータ・ネットワークを介して第１のコンピュータにおけるコンピュータ・ソフトウェア・アプリケーションに送ることができ（ステップ２０８）、そうでない場合には、テストデータ・ペイロードのコピーを、処理のために、コンピュータ・ネットワークを介して第１のコンピュータにおけるコンピュータ・ソフトウェア・アプリケーションに送ることはできない（ステップ２０８）。
【００２６】
図１のシステム及び図２の方法を、以下の例の文脈において示すことができ、ここでエバリュエータ１０４は、ＩＢＭ  ＡｐｐＳｃａｎを用いて実装することができる（ＡｐｐＳｃａｎは、インターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である）。例えばコンピュータ１０２において、エバリュエータ１０４によって検出されるものとしてサニタイザ及びバリデータを識別するように、コンピュータ１０２によってホストされるコンピュータ・ソフトウェア・アプリケーション１００を装備することができる。エバリュエータ１０４は、識別されたサニタイザ及びバリデータを、ニューヨーク州アーモンク所在のＩＢＭコーポレーションから市販されているＩＢＭ  ＡｐｐＳｃａｎ  Ｅｎｔｅｒｐｒｉｓｅ  Ｅｄｉｔｉｏｎを用いて実装することができるペイロード・テスタ１０６に報告する。ペイロード・テスタ１０６は、識別されたサニタイザ及びバリデータのコピーを実行するように、コンピュータ１０８を構成することができる。ペイロード・テスタ１０６は、以下のテストデータ・ペイロードのコピー
【表１】
0006338073.tif 000002
を以下のサニタイザ
【表２】
0006338073.tif 000003
などのコンピュータ１０８上で実行されている識別されたサニタイザのコピーに与え、このサニタイザは、テストデータ・ペイロード・コピーを
【表３】
0006338073.tif 000004
にミューテートさせる。
【００２７】
テストデータ・ペイロードは、クロスサイト・スクリプティング（ＸＳＳ）脆弱性についてテストするように構成することができる。ミューテーションが、サニタイザのコピーによる処理の後にセキュリティ脆弱性についてテストするように構成されたままであることを、ペイロード・テスタ１０６が判断すると、アプリケーション・テスタ１１４は、処理のために、テストデータ・ペイロードのコピーを、コンピュータ・ネットワーク１１６を介してコンピュータ１０２におけるコンピュータ・ソフトウェア・アプリケーション１００に送ることができる。
【００２８】
ペイロード・テスタ１０６はまた、以下のテストデータ・ペイロードのコピー
【表４】
0006338073.tif 000005
を、コンピュータ１０８上で実行されている識別されたバリデータのコピーにも与える。テストデータ・ペイロードは同様に、クロスサイト・スクリプティング（ＸＳＳ）脆弱性についてテストするように構成することができる。バリデータは、テストデータ・ペイロード・コピーを、さらなる処理のためにテストデータ・ペイロードを利用できないことをバリデータの文脈において示すブール値「偽」にマッピングするので、ペイロード・テスタ１０６は、バリデータのコピーによる処理後にセキュリティ脆弱性についてテストするために、テストデータ・ペイロードを用いることができないと判断することがある。従って、アプリケーション・テスタ１１４は、テストデータ・ペイロード・コピーを、処理のために、コンピュータ・ネットワーク１１６を介してコンピュータ１０２におけるコンピュータ・ソフトウェア・アプリケーション１００に送ることはできない。
【００２９】
ここで図３を参照すると、ブロック図３００は、本発明の１つの実施形態に説明されるような、本発明の１つ又は複数のコンポーネント／手段（例えば、図１〜図２との関連で説明されるコンポーネント／手段）を実装できるコンピュータ・システムの例示的なハードウェア実装を示す。
【００３０】
図示されるように、少なくとも１つのリソースへのアクセスを制御するための技術は、コンピュータ・バス３１８又は代替的な接続構成を介して結合されたプロセッサ３１０、メモリ３１２、Ｉ／Ｏデバイス３１４、及びネットワーク・インターフェース３１６によって実装することができる。
【００３１】
本明細書で用いられる場合、用語「プロセッサ」は、例えば、ＣＰＵ（中央演算処理ユニット）及び／又は他の処理回路を含むものなど、任意の処理デバイスを含むように意図されること認識されたい。さらに、用語「プロセッサ」は、１つより多い処理デバイスを指すことができること、及び、処理デバイスと関連した種々の要素を他の処理デバイスにより共有できることも理解されたい。
【００３２】
本明細書で用いられる場合、用語「メモリ」は、例えば、ＲＡＭ、ＲＯＭ、固定メモリ・デバイス（例えばハード・ドライブ）、取り外し可能メモリ・デバイス（例えば、ディスケット）、フラッシュ・メモリ等のような、プロセッサ又はＣＰＵと関連したメモリを含むことを意図している。そうしたメモリは、コンピュータ可読ストレージ媒体と考えることができる。
【００３３】
さらに、本明細書で用いられる場合、語句「入力／出力デバイス」又は「Ｉ／Ｏデバイス」は、例えば、データを処理ユニットに入力するための１つ又は複数の入力デバイス（例えば、キーボード、マウス、スキャナ等）、及び／又は処理ユニットと関連した結果を提示するための１つ又は複数の出力デバイス（例えば、スピーカ、ディスプレイ、プリンタ等）を含むことを意図している。
【００３４】
図中のフローチャート及びブロック図は、本発明の種々の実施形態に記載されるような、システム、方法及びコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能及び動作を示す。これに関して、フローチャート及びブロック図中の各ブロックは、モジュール、セグメント、又はコードの部分を表すことができ、これは、指定された論理機能を実施するための１つ又は複数の実行可能命令を含む。また、幾つかの代替的な実施において、ブロック内に示された機能は、図中に示された順序とは異なる順序で行い得ることにも留意されたい。例えば、連続して示される２つのブロックを、実際には、実質的に同時に実行することができ、又は場合により、関与する機能に応じて、ブロックを逆の順番で実行することもできる。また、ブロック図及び／又はフローチャート図中の各プロック、並びにブロック図及び／又はフローチャート図中のブロックの組み合わせは、指定された機能又は動作を実行する専用のハードウェア・ベースのシステム、又は専用のハードウェアとコンピュータ命令の組み合わせによって実施できることにも留意されたい。
【００３５】
上述の要素のいずれも、磁気又は光ストレージ媒体上に格納された、又はコンピュータ・ハードウェア内に埋め込まれたコンピュータ・プログラム命令の形態のような、コンピュータ可読媒体内に具体化されたコンピュータ・プログラム製品として実装することができ、かつ、コンピュータによって実行すること又は他の方法でコンピュータにアクセスすることができることが認識されるであろう。
【００３６】
本明細書での方法及び装置は、特定のコンピュータ・ハードウェア又はソフトウェアに関連して説明された場合も又は説明されなかった場合もあるが、本明細書で説明される方法及び装置は、従来の技術を用いてコンピュータ・ハードウェア又はソフトウェアで容易に実装できることが認識される。
【００３７】
本発明が、１つ又は複数の特定の実施形態を参照して説明されたが、この説明は、全体として本発明を例証することを意図したものであり、本発明を示される実施形態に限定するものと解釈すべきではない。当業者であれば、種々の変更を思い付くことができ、それらの変更は、本明細書に具体的に示されないが、それにも関わらず、本発明の範囲内にあることが認識されるであろう。
【符号の説明】
【００３８】
１００：コンピュータ・ソフトウェア・アプリケーション
１０２、１０８：コンピュータ
１０４：エバリュエータ
１０６：ペイロード・テスタ
１１０：データチェック・ソフトウェアのコピー
１１２：ペイロード・ライブラリ
１１４：アプリケーション・テスタ
１１６：コンピュータ・ネットワーク
【図１】
0006338073.tif 000006
【図２】
0006338073.tif 000007
【図３】
0006338073.tif 000008