(57)【特許請求の範囲】
【請求項１】
データ処理ネットワーク内のプロキシ・サーバにおいてセキュリティの侵害が検出されることに応じてアラートを生成するためのネットワーク・セキュリティ・システムであって、
ディストリビュータ・コンポーネントであって、
クライアント・デバイスからのリソースの要求を傍受するためのインターセプタ・コンポーネント、ならびに
傍受された要求の複製を生成し、前記傍受された要求を第１の種類のプロキシ・サーバに転送し、前記傍受された要求の前記複製を第２の種類のプロキシ・サーバに転送するためのデュプリケータ・コンポーネントであって、前記第１の種類のプロキシ・サーバおよび前記第２の種類のプロキシ・サーバが、同一でないプロキシ・サーバの種類である、前記デュプリケータ・コンポーネントを含む、前記ディストリビュータ・コンポーネントと、
コンパレータ・コンポーネントであって、
前記第１の種類のプロキシ・サーバおよび前記第２の種類のプロキシ・サーバからの出力を受信するためのインターセプタ・コンポーネント、
前記第１の種類のプロキシ・サーバの前記出力を前記第２の種類のプロキシ・サーバの前記出力と比較するための比較コンポーネント、
前記出力を比較することに応じて、前記第１の種類のプロキシ・サーバの前記出力と前記第２の種類のプロキシ・サーバの前記出力とが異なるかどうかを判定する判定コンポーネントであって、前記第１の種類のプロキシ・サーバおよび前記第２の種類のプロキシ・サーバからの前記出力が異なっていないと判定するデターミナ・コンポーネントと、前記第１の種類のプロキシ・サーバまたは前記第２の種類のプロキシ・サーバの一方からの前記出力を要求されたリソースを取り出すためにサーバにルーティングするためのルーティング・コンポーネントとを含む、判定コンポーネント、ならびに
前記出力の違いを判定することに応じてアラートを生成するためのアラート・ジェネレータ・コンポーネントを含む、
ネットワーク・セキュリティ・システム。
【請求項２】
アラートが生成されたことを検出し、前記第１の種類のプロキシ・サーバおよび前記第２の種類のプロキシ・サーバの一方または両方からの前記出力を阻止する前記コンパレータ・コンポーネントの出力ブロッカをさらに含む請求項１に記載のシステム。
【請求項３】
前記出力のそれぞれの中の実行されるアクションを検出し、さらに、実行される前記アクションの一方または両方が異なるアクションであると判定するデターミナ・コンポーネントをさらに含む請求項１に記載のシステム。
【請求項４】
実行される前記アクションのうちの１つが、前記第１の種類のウェブ・プロキシ・サーバおよび前記第２の種類のウェブ・プロキシ・サーバの一方もしくは両方または前記サーバにおいて処理エラーを引き起こすと判定するデターミナ・コンポーネントをさらに含む請求項３に記載のシステム。
【請求項５】
前記処理エラーがセキュリティの侵害であると判定するデターミナ・コンポーネントをさらに含む請求項４に記載のシステム。
【請求項６】
データ処理ネットワーク内のプロキシ・サーバにおいてセキュリティの侵害が検出されることに応じてアラートを生成するためのネットワーク・セキュリティ・システムであって、
ディストリビュータ・コンポーネントであって、
サーバからの要求されたリソースを傍受するためのインターセプタ・コンポーネント、ならびに
傍受された要求されたリソースの複製を生成し、前記傍受された要求されたリソースを第１の種類のプロキシ・サーバに転送し、前記傍受された要求されたリソースの前記複製を第２の種類のプロキシ・サーバに転送するデュプリケータ・コンポーネントであって、前記第１の種類のプロキシ・サーバおよび前記第２の種類のプロキシ・サーバが、同一でないプロキシ・サーバである、前記デュプリケータ・コンポーネントを含む、前記ディストリビュータ・コンポーネントと、
コンパレータ・コンポーネントであって、
前記第１の種類のプロキシ・サーバおよび前記第２の種類のプロキシ・サーバからの出力を受信するためのインターセプタ・コンポーネント、
前記第１の種類のプロキシ・サーバの前記出力を前記第２の種類のプロキシ・サーバの前記出力と比較するための比較コンポーネント、
前記出力を比較することに応じて、前記第１の種類のプロキシ・サーバの前記出力と前記第２の種類のプロキシ・サーバの前記出力とが異なるかどうかを判定するための判定コンポーネント、ならびに
前記出力の違いを判定することに応じてアラートを生成するためのアラート・ジェネレータ・コンポーネントを含む、
ネットワーク・セキュリティ・システム。
【請求項７】
アラートが生成されたことを検出し、前記第１の種類のプロキシ・サーバおよび前記第２の種類のプロキシ・サーバの一方または両方からの前記出力を阻止する前記コンパレータ・コンポーネントの出力ブロッカをさらに含む請求項６に記載のシステム。
【請求項８】
前記第１の種類のプロキシ・サーバおよび前記第２の種類のプロキシ・サーバからの前記出力が異なっていないと判定し、前記第１の種類のプロキシ・サーバまたは前記第２の種類のプロキシ・サーバの一方からの前記出力をクライアント・デバイスにルーティングするデターミナ・コンポーネントをさらに含む請求項６または７に記載のシステム。
【請求項９】
前記出力のそれぞれの中の実行されるアクションを検出し、さらに、実行される前記アクションの一方または両方が異なるアクションであると判定するデターミナ・コンポーネントをさらに含む請求項８に記載のシステム。
【請求項１０】
実行される前記アクションのうちの１つが、前記第１の種類のウェブ・プロキシ・サーバおよび前記第２の種類のウェブ・プロキシ・サーバの一方もしくは両方または前記クライアント・デバイスにおいて処理エラーを引き起こすと判定するデターミナ・コンポーネントをさらに含む請求項９に記載のシステム。
【請求項１１】
前記処理エラーがセキュリティの侵害であると判定するデターミナ・コンポーネントをさらに含む請求項１０に記載のシステム。
【請求項１２】
データ処理ネットワーク内のプロキシ・サーバにおいてセキュリティの侵害が検出されることに応じてアラートを生成するための方法であって、
クライアント・デバイスからのリソースの要求を傍受するステップと、
傍受された要求の複製を生成し、前記傍受された要求を第１の種類のプロキシ・サーバに転送し、前記傍受された要求の前記複製を第２の種類のプロキシ・サーバに転送するステップであって、前記第１の種類のプロキシ・サーバおよび前記第２の種類のプロキシ・サーバが、同一でないプロキシ・サーバの種類である、前記転送するステップと、
前記第１の種類のプロキシ・サーバおよび前記第２の種類のプロキシ・サーバからの出力を傍受するステップと、
前記第１の種類のプロキシ・サーバの前記出力を前記第２の種類のプロキシ・サーバの前記出力と比較するステップと、
前記出力を比較するステップに応じて、前記第１の種類のプロキシ・サーバの前記出力と前記第２の種類のプロキシ・サーバの前記出力とが異なるかどうかを判定するステップであって、前記第１の種類のプロキシ・サーバおよび前記第２の種類のプロキシ・サーバからの前記出力が異なっていないと判定するステップと、前記第１の種類のプロキシ・サーバまたは前記第２の種類のプロキシ・サーバの一方からの前記出力を要求されたリソースを取り出すためにサーバにルーティングするステップとを含む、ステップと、
前記出力の違いを判定するステップに応じてアラートを生成するステップ
を含む、方法。
【請求項１３】
データ処理ネットワーク内のプロキシ・サーバにおいてセキュリティの侵害が検出されることに応じてアラートを生成するための方法であって、
サーバからの要求されたリソースを傍受するステップと、
傍受された要求されたリソースの複製を生成し、前記傍受された要求されたリソースを第１の種類のプロキシ・サーバに転送し、前記傍受された要求されたリソースの前記複製を第２の種類のプロキシ・サーバに転送するステップであって、前記第１の種類のプロキシ・サーバおよび前記第２の種類のプロキシ・サーバが、同一でないプロキシ・サーバである、前記転送するステップと、
前記第１の種類のプロキシ・サーバおよび前記第２の種類のプロキシ・サーバからの出力を傍受するステップと、
前記第１の種類のプロキシ・サーバの前記出力を前記第２の種類のプロキシ・サーバの前記出力と比較するステップと、
前記出力を比較するステップに応じて、前記第１の種類のプロキシ・サーバの前記出力と前記第２の種類のプロキシ・サーバの前記出力とが異なるかどうかを判定するステップと、
前記出力の違いを判定するステップに応じてアラートを生成するステップ
を含む、方法。
【請求項１４】
請求項１２〜１３のいずれか一項に記載の方法の各ステップをコンピュータに実行させるコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク・セキュリティの分野に関し、特に、本発明は、データ処理ネットワークにおいてセキュリティの脆弱性を検出するためのシステム、方法、およびコンピュータ・プログラムに関する。
【背景技術】
【０００２】
ウェブ・プロキシ・サーバは、ネットワークにおいてサーバのリソースを要求するクライアント・デバイスからの要求の仲介役として働くサーバである。概して、クライアント・デバイスは、ネットワーク上でリソースの要求を送信し、ウェブ・プロキシ・サーバに接続することによって始まる。ウェブ・プロキシ・サーバは、要求を評価し、いくつかの機能を実行し、要求されたリソースを取り出し、そのリソースを要求元のクライアントに送り返す。ウェブ・プロキシ・サーバは、いくつかの機能、例えば、プロキシ・サーバの下流のクライアント・デバイスが匿名性を維持することを可能にすること、同じコンテンツの複数回のダウンロードを避けるためのキャッシュなどの技術を用いてリソースへのアクセスを高速化すること、インターネット・リソースへのアクセスを監査すること、要求元のクライアントへの配信の前に、送信するコンテンツをマルウェアに関してスキャンすること、外に出て行くコンテンツを情報漏洩防止（data loss prevention）のためにスキャンすること、ならびにその他のアクセスおよび管理タスクを実行し得る。
【０００３】
プロキシ・サーバ、特に、ウェブ・プロキシ・サーバは、攻撃に対して脆弱である。多くの場合、攻撃者は、上述の機能の一部を実行するコンポーネントの設計およびソース・コードの脆弱性を探す。脆弱性は、ソフトウェア・コンポーネントの挙動を変更するために利用され、潜在的に、プロキシ・サーバ自体またはプロキシ・サーバが一部をなすより大きなネットワーク・システム内のデータの機密性、完全性、または可用性、あるいはそれらすべてを脅かす可能性がある。
【０００４】
概して、この種の脆弱性を利用した攻撃は、ウェブ・プロキシ・サーバを保護するための１つまたは複数の専門のコンポーネントを使用することによって軽減される。これらのコンポーネントは、ファイアウォール、侵入検出システム、ウェブ・アプリケーション・ファイアウォール、およびウイルス・スキャナを含む可能性がある。ウェブ・プロキシ・サーバの典型的な脆弱性は、攻撃者がウェブ・プロキシ・サーバを掌握し、ウェブ・プロキシ・サーバをネットワーク・システムの「下流の」コンポーネントに対する攻撃の「踏み台（launch pad）」として使用することを可能にする結果となり得る注意深く巧妙に作られたメッセージを攻撃者がコンポーネントに送信することを可能にする。そのような攻撃の影響は、システム全体の中で情報の機密性、完全性、または可用性を損なうことである可能性がある。
【０００５】
ウェブ・プロキシ・ソフトウェアの供給業者は、それらの供給業者の製品に脆弱性を持ち込むことを防ぐためにあらゆる努力をしており、概して、欠陥のあるコードを置き換えるかまたは補足するソフトウェア「パッチ」をリリースすることによって、特定される任意の問題を改善しようと速やかに行動する。しかし、この手法は、いくつかの理由で十分でないことが分かっている。
・  多くの場合、脆弱性は、製造業者がパッチを作成し、配布し得るよりも早く利用される
・  知られている脆弱性を利用するための手段が、（インターネット上で）頻繁に公開され、その結果、広範囲に広まった攻撃が、自身ではほとんどスキルまたは知識を持たない攻撃者によって行われ得る
・  ウェブ・プロキシのパッチを適用されたコピーがテストされる間に、パッチを適用するプロセスが、頻繁に引き延ばされる。これが、プロセスにさらなるコストおよび複雑性を付け加え、多くの大規模な商用システムが、かなり長い時間「パッチ未適用」のままになる。情報保証（information assurance）を担うイギリスの政府機関（ＣＥＳＧ）は、公共部門のＩＴシステムに対する成功した攻撃の大部分（７０％から８０％）が、すべてのコンポーネントが正しくパッチを適用されていれば防止され得たと見積もる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
長年にわたってそのような専門のコンポーネントの設計でなされた技術的な進歩にもかかわらず、ウェブ・プロキシ・サーバに対する成功した攻撃は今でも続いており、こうした攻撃が、大規模な商用の情報処理システムにおけるリスクの主要な源の１つである。
【課題を解決するための手段】
【０００７】
第１の態様から見て、本発明は、データ処理ネットワーク内のプロキシ・サーバにおいてセキュリティの侵害が検出されることに応じてアラートを生成するためのネットワーク・セキュリティ・システムであって、ディストリビュータ（distributor）コンポーネントであって、クライアント・デバイスからのリソースの要求を傍受するためのインターセプタ（interceptor）コンポーネント、ならびに傍受された要求の複製を生成し、傍受された要求を第１の種類のプロキシ・サーバに転送し、傍受された要求の複製を第２の種類のプロキシ・サーバに転送するためのデュプリケータ（duplicator）コンポーネントであって、第１の種類のプロキシ・サーバおよび第２の種類のプロキシ・サーバが、同一でないプロキシ・サーバの種類である、デュプリケータ・コンポーネントを含む、ディストリビュータ・コンポーネントと、コンパレータ（comparator）コンポーネントであって、第１の種類のプロキシ・サーバおよび第２の種類のプロキシ・サーバからの出力を傍受するためのインターセプタ・コンポーネント、第１の種類のプロキシ・サーバの出力を第２の種類のプロキシ・サーバの出力と比較するための比較コンポーネント、出力を比較することに応じて、第１の種類のプロキシ・サーバの出力と第２の種類のプロキシ・サーバの出力とが異なるかどうかを判定する判定コンポーネント、ならびに出力の違いを判定することに応じてアラートを生成するためのアラート・ジェネレータ・コンポーネントを含む、コンパレータ・コンポーネントとを含む、ネットワーク・セキュリティ・システムを提供する。
【０００８】
好ましくは、本発明は、アラートが生成されたことを検出し、第１の種類のプロキシ・サーバおよび第２の種類のプロキシ・サーバの一方または両方からの出力を阻止するコンパレータ・コンポーネントの出力ブロッカをさらに含むシステムを提供する。
【０００９】
好ましくは、本発明は、第１の種類のプロキシ・サーバおよび第２の種類のプロキシ・サーバからの出力が異なっていないと判定するデターミナ（determiner）コンポーネントと、第１の種類のプロキシ・サーバまたは第２の種類のプロキシ・サーバの一方からの出力を、要求されたリソースを取り出すためにサーバにルーティングするためのルーティング・コンポーネントとをさらに含むシステムを提供する。
【００１０】
好ましくは、本発明は、出力のそれぞれの中の実行されるアクションを検出し、さらに、実行されるアクションの一方または両方が異なるアクションであると判定するデターミナ・コンポーネントをさらに含むシステムを提供する。
【００１１】
好ましくは、本発明は、実行されるアクションのうちの１つが、第１の種類のウェブ・プロキシ・サーバおよび第２の種類のウェブ・プロキシ・サーバの一方もしくは両方またはサーバにおいて処理エラーを引き起こすと判定するデターミナ・コンポーネントをさらに含むシステムを提供する。
【００１２】
好ましくは、本発明は、処理エラーがセキュリティの侵害であると判定するデターミナ・コンポーネントをさらに含むシステムを提供する。
【００１３】
第２の態様から見て、本発明は、データ処理ネットワーク内のプロキシ・サーバにおいてセキュリティの侵害が検出されることに応じてアラートを生成するためのネットワーク・セキュリティ・システムであって、ディストリビュータ・コンポーネントであって、サーバからの要求されたリソースを傍受するためのインターセプタ・コンポーネント、ならびに傍受された要求されたリソースの複製を生成し、傍受された要求されたリソースを第１の種類のプロキシ・サーバに転送し、傍受された要求されたリソースの複製を第２の種類のプロキシ・サーバに転送するデュプリケータ・コンポーネントであって、第１の種類のプロキシ・サーバおよび第２の種類のプロキシ・サーバが、同一でないプロキシ・サーバである、デュプリケータ・コンポーネントを含む、ディストリビュータ・コンポーネント、コンパレータ・コンポーネントであって、第１の種類のプロキシ・サーバおよび第２の種類のプロキシ・サーバからの出力を傍受するための傍受コンポーネント、第１の種類のプロキシ・サーバの出力を第２の種類のプロキシ・サーバの出力と比較するための比較コンポーネント、出力を比較することに応じて、第１の種類のプロキシ・サーバの出力と第２の種類のプロキシ・サーバの出力とが異なるかどうかを判定するための判定コンポーネント、ならびに出力の違いを判定することに応じてアラートを生成するためのアラート・ジェネレータ・コンポーネントを含む、コンパレータ・コンポーネントを含む、ネットワーク・セキュリティ・システムを提供する。
【００１４】
好ましくは、本発明は、アラートが生成されたことを検出し、第１の種類のプロキシ・サーバおよび第２の種類のプロキシ・サーバの一方または両方からの出力を阻止するコンパレータ・コンポーネントの出力ブロッカをさらに含むシステムを提供する。
【００１５】
好ましくは、本発明は、第１の種類のプロキシ・サーバおよび第２の種類のプロキシ・サーバからの出力が異なっていないと判定し、第１の種類のプロキシ・サーバまたは第２の種類のプロキシ・サーバの一方からの出力をクライアント・デバイスにルーティングするデターミナ・コンポーネントをさらに含むシステムを提供する。
【００１６】
好ましくは、本発明は、出力のそれぞれの中の実行されるアクションを検出し、さらに、実行されるアクションの一方または両方が異なるアクションであると判定するデターミナ・コンポーネントをさらに含むシステムを提供する。
【００１７】
好ましくは、本発明は、実行されるアクションのうちの１つが、第１の種類のウェブ・プロキシ・サーバおよび第２の種類のウェブ・プロキシ・サーバの一方もしくは両方またはクライアント・デバイスにおいて処理エラーを引き起こすと判定するデターミナ・コンポーネントをさらに含むシステムを提供する。
【００１８】
好ましくは、本発明は、処理エラーがセキュリティの侵害であると判定するデターミナ・コンポーネントをさらに含むシステムを提供する。
【００１９】
第３の態様から見て、本発明は、データ処理ネットワーク内のプロキシ・サーバにおいてセキュリティの侵害が検出されることに応じてアラートを生成するための方法であって、クライアント・デバイスからのリソースの要求を傍受するステップと、傍受された要求の複製を生成し、傍受された要求を第１の種類のプロキシ・サーバに転送し、傍受された要求の複製を第２の種類のプロキシ・サーバに転送するステップであって、第１の種類のプロキシ・サーバおよび第２の種類のプロキシ・サーバが、同一でないプロキシ・サーバの種類である、転送するステップと、第１の種類のプロキシ・サーバおよび第２の種類のプロキシ・サーバからの出力を傍受するステップと、第１の種類のプロキシ・サーバの出力を第２の種類のプロキシ・サーバの出力と比較するステップと、出力を比較するステップに応じて、第１の種類のプロキシ・サーバの出力と第２の種類のプロキシ・サーバの出力とが異なるかどうかを判定するステップと、出力の違いを判定するステップに応じてアラートを生成するステップとを含む、方法を提供する。
【００２０】
第４の態様から見て、本発明は、データ処理ネットワークのプロキシ・サーバにおいてセキュリティの侵害が検出されることに応じてアラートを生成するための方法であって、サーバからの要求されたリソースを傍受するステップと、傍受された要求されたリソースの複製を生成し、傍受された要求されたリソースを第１の種類のプロキシ・サーバに転送し、傍受された要求されたリソースの複製を第２の種類のプロキシ・サーバに転送するステップであって、第１の種類のプロキシ・サーバおよび第２の種類のプロキシ・サーバが、同一でないプロキシ・サーバである、転送するステップと、第１の種類のプロキシ・サーバおよび第２の種類のプロキシ・サーバからの出力を傍受するステップと、第１の種類のプロキシ・サーバの出力を第２の種類のプロキシ・サーバの出力と比較するステップと、出力を比較するステップに応じて、第１の種類のプロキシ・サーバの出力と第２の種類のプロキシ・サーバの出力とが異なるかどうかを判定するステップと、出力の違いを判定するステップに応じてアラートを生成するステップとを含む、方法を提供する。
【００２１】
第５の態様から見て、本発明は、コンピュータ・システムにロードされ、実行されるときに、上述の方法のすべてのステップを実行するコンピュータ・プログラム・コードを含むコンピュータ・プログラムを提供する。
【００２２】
ここで、本発明の好ましい実施形態が、単に例として、添付の図面を参照して説明される。
【図面の簡単な説明】
【００２３】
【図１】本発明の好ましい実施形態による、本発明が実装され得るネットワーク・セキュリティ・システムを示すブロック図である。
【図２】当技術分野で知られているプロキシ・サーバのコンポーネントを示すブロック図である。
【図３】本発明の好ましい実施形態による、複数のクライアント・デバイスからディストリビュータ・コンポーネントおよびコンパレータ・コンポーネントへのリソースの要求のプロセス・フローを示すブロック図である。
【図４】本発明の好ましい実施形態による、図４のリソースの要求がサーバによって満たされ、ディストリビュータ・コンポーネントおよびコンパレータ・コンポーネントに伝達されるプロセス・フローを示すブロック図である。
【図５】図３および４のディストリビュータ・コンポーネントの下位コンポーネントを示すブロック図である。
【図６】図３および４のコンパレータ・コンポーネントの下位コンポーネントを示すブロック図である。
【図７】本発明の好ましい実施形態による、ディストリビュータ・コンポーネントおよびコンパレータ・コンポーネントによるＨＴＴＰ要求のプロセス・フローを示す流れ図である。
【図８】本発明の好ましい実施形態による、ディストリビュータ・コンポーネントおよびコンパレータ・コンポーネントによる取り出された要求のプロセス・フローを示す流れ図である。
【発明を実施するための形態】
【００２４】
本発明の態様が、本発明の実施形態による方法、システム、およびコンピュータ・プログラム製品の流れ図またはブロック図あるいはその両方を参照して以下で説明される。流れ図またはブロック図あるいはその両方の各ブロック、および流れ図またはブロック図あるいはその両方のブロックの組み合わせは、コンピュータ・プログラム命令によって実装され得ることが理解されるであろう。これらのコンピュータ・プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサによって実行される命令が、流れ図またはブロック図あるいはその両方の１つのブロックまたは複数のブロックで規定された機能／動作を実施するための手段をもたらすように、汎用コンピュータ、専用コンピュータ、または機械を生産するためのその他のプログラム可能なデータ処理装置のプロセッサに与えられる可能性がある。
【００２５】
これらのコンピュータ・プログラム命令は、コンピュータ可読媒体に記憶された命令が、流れ図またはブロック図あるいはその両方の１つのブロックまたは複数のブロックで規定された機能／動作を実施する命令を含む製品をもたらすように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに特定の方法で機能するように指示することができるコンピュータ可読媒体に記憶される可能性もある。
【００２６】
コンピュータ・プログラム命令は、コンピュータまたはその他のプログラム可能な装置で実行される命令が、流れ図またはブロック図あるいはその両方の１つのブロックまたは複数のブロックで規定された機能／動作を実施するためのプロセスを提供するように、コンピュータで実施されるプロセスを生成するために一連の動作のステップがコンピュータ、その他のプログラム可能な装置、またはその他のデバイスで実行されるようにするために、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスにロードされる可能性もある。
【００２７】
図１を参照すると、本発明の好ましい実施形態が実装され得る、知られているネットワーク化されたセキュリティ・システム１００の簡略化された例が、示されている。図１のネットワーク・セキュリティ・システムは、クライアント・デバイス１０５、サーバ１１５、ネットワーク１２０、およびウェブ・プロキシ・サーバ１１０を含む。
【００２８】
クライアント・デバイス１０５の例は、パーソナル・コンピュータ・システム、シン・クライアント、ハンドヘルドまたはラップトップ・デバイス、モバイル・デバイス、セット・トップ・ボックス、プログラム可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ・システムなどを含むがこれらに限定されない。
【００２９】
クライアント・デバイス１０５は、ウェブ・ブラウザ、またはネットワーク１２０を介してリソースの要求を送信および受信するのに好適であるその他の種類のソフトウェアを用いてネットワーク１２０を介してリソースの要求を送信する。
【００３０】
ネットワーク１２０の例はインターネットであるが、第１のデバイスが第２のデバイスにリソースの要求／通信を送信する任意のその他の種類のネットワーク１２０は好適である可能性がある。
【００３１】
概して、クライアント・デバイス１０５は、サーバにハイパーテキスト転送プロトコル（ＨＴＴＰ）要求メッセージを送る。概して、ＨＴＴＰ要求メッセージは、リソースの要求を含む。リソースは、ＵＲＬによって特定され得る情報またはデータのチャンクとして定義される。よくある種類のリソースは、ファイルであるが、リソースは、動的に生成された問い合わせ結果、ＣＧＩスクリプトの出力、ドキュメント、画像または音楽ファイルなどである可能性もある。
【００３２】
サーバ１１５は、ＨＴＴＰ要求メッセージを受信し、要求されたリソースをクライアント・デバイス１０５に送り返すか、またはクライアントの要求を満たすことができる別のサーバ１１５に要求を送信するかのどちらかである。要求されたリソースは、ステータス情報、メッセージの長さなどの追加的な情報を含む応答メッセージの形態で送り返される。サーバ１１５は、クライアント・デバイス１０５からの要求を記憶し、満たすことができる任意の種類のサーバ１１５である可能性がある。
【００３３】
ウェブ・プロキシ・サーバ１１０は、クライアント・デバイス１０５からサーバ１１５への、およびサーバ１１５がクライアント・デバイス１０５に送り返すためにリソースを取り出すときにはその逆（リバース・プロキシ・モード）のリソースの要求を傍受する。概して、クライアント・デバイス１０５は、１つまたは複数のサーバ１１５のファイル、接続、ウェブ・ページ、またはその他の種類のリソースなどのリソースを要求するサーバ１１５に要求を送信する。要求は、ウェブ・プロキシ・サーバ１１０によって傍受され、ウェブ・プロキシ・サーバ１１０は、要求されたリソースを１つまたは複数のサーバ１１５から取り出す前に、受信された要求を評価する。
【００３４】
ウェブ・プロキシ・サーバ１１０は、多くの異なる種類の機能を実行し得る。ウェブ・プロキシ・サーバ１１０によって実行される主なタスクの一部は、以下のものである。
・  クライアント・マシンのＩＰアドレスを匿名のままに保つことなどのセキュリティ機能を提供すること
・  リソースをキャッシュすること
・  外に出て行くリソースおよび中に入ってくるリソースをウイルスに関してスキャンすること
【００３５】
しかし、当業者は、ウェブ・プロキシ・サーバが実行し得る多くのその他の種類の機能が存在し、上述の機能は例示を目的とするに過ぎず、保護の範囲を限定するように意図されていないことを認めるであろう。
【００３６】
クライアント・デバイス１０５からウェブ・プロキシ・サーバ１１０を通ってサーバ１１５までのプロセス・フローの簡略化された例が、以下で与えられる。
・  従業員Ａが、クライアント・デバイス１０５でウェブ・ブラウザを起動し、ＵＲＬ  ｗｗｗ．ＩＢＭ．ｃｏｍを打ち込む。
・  リソースが、ウェブ・プロキシ・サーバ１１０にルーティングされ、ウェブ・プロキシ・サーバ１１０が、要求のＩＰアドレスを管理者によって定義されたアクセス制御と付き合わせる。
・  ＩＰアドレスが禁じられていないと判定される場合、ウェブ・プロキシ・サーバ１１０が、リソースを記憶するサーバ１１５に要求メッセージを送信することによって要求を実行する。
・  ウェブ・プロキシ・サーバ１１５が、要求されたリソースを受信し、リソースのコピーをそのウェブ・プロキシ・サーバ１１５のキャッシュに記憶する。
・  プロキシ・サーバが、要求されたリソースを要求元のクライアント・デバイス１０５に送信する。
【００３７】
ウェブ・プロキシ・サーバ１１０の典型的なコンポーネントが、図２に示されており、管理者コンソール２００ａ、２００ｂ、ロード・バランサ２１０ａ、２１０ｂ、キャッシュ・プロキシ２０５ａ、２０５ｂ、ディスパッチャ・コンポーネント２１５ａ、２１５ｂ、およびコンテンツ・ルーティング・コンポーネント２２０ａ、２２０ｂを含む。当業者は、保護の範囲から逸脱することなく、その他の下位コンポーネントがウェブ・プロキシ・サーバ１１０に組み込まれる可能性があるか、またはその他の下位コンポーネントがウェブ・プロキシ・サーバ１１０とインターフェースをとる可能性があることを認めるであろう。
【００３８】
管理者コンソール２００ａ、２００ｂは、ウェブ・プロキシ・サーバ１１０ａ、１１０ｂおよびその下位コンポーネントを構成し、保守し、制御するためのインターフェースを管理者に提供する。
【００３９】
キャッシュ・プロキシ２０５ａ、２０５ｂは、同じコンテンツの複数回のダウンロードを避けるために配置される。受動的なキャッシュかまたは能動的なキャッシュかのどちらかが、配置される。キャッシュ・プロキシ２０５ａ、２０５ｂは、１つまたは複数のバックエンドのコンテンツ・サーバ１１５のための存在点（point-of-presence）ノードを提供することによって帯域幅の使用を減らし、ウェブサイトの速度および信頼性を高める。キャッシュ・プロキシ２０５ａ、２０５ｂは、静的なコンテンツと、例えば、ＩＢＭのＷｅｂＳｐｈｅｒｅ  Ａｐｐｌｉｃａｔｉｏｎ  Ｓｅｒｖｅｒによって動的に生成されたコンテンツとをキャッシュし、提供することができる。
【００４０】
キャッシュ・プロキシ２０５ａ、２０５ｂは、リバース・プロキシ・サーバ１１０またはフォワード・プロキシ・サーバ１１０の役割で構成され、インターネットなどの外部ネットワーク１２０のための存在点かまたは内部ネットワーク（図示せず）のための存在点かのどちらかを提供する可能性がある。
【００４１】
キャッシュ・プロキシ２０５ａ、２０５ｂは、クライアント・デバイス１０５からのデータ要求を傍受し、要求された情報を（１つまたは複数の）サーバ１１５から取得し、そのコンテンツをクライアント・デバイス１０５に返す。要求は、サーバに記憶されたドキュメントを求めるものであり、ハイパーテキスト転送プロトコル（ＨＴＴＰ）を用いて配信されるのが最も普通である。しかし、当業者は、プロキシ・サーバがファイル転送プロトコル（ＦＴＰ）およびＧｏｐｈｅｒなどのその他のプロトコルを扱うように構成され得ることを認めるであろう。
【００４２】
キャッシュ・プロキシ２０５ａ、２０５ｂは、キャッシュ可能なコンテンツを要求元のクライアント・デバイス１０５に配信する前にローカル・キャッシュに記憶する。キャッシュ可能なコンテンツの例は、静的なウェブ・ページと、動的に生成されるがまれにしか変わらない情報を含み得るＪａｖａ（Ｒ）Ｓｅｒｖｅｒ  Ｐａｇｅｓファイルとを含む可能性がある。Ｊａｖａ（Ｒ）およびすべてのＪａｖａ（Ｒ）に基づく商標およびロゴは、オラクルまたはその系列会社、あるいはその両方の商標または登録商標である。キャッシュは、プロキシ・サーバ１１０が同じコンテンツをローカル・キャッシュから直接配信することによって同じコンテンツの後続の要求を満たすことを可能にし、同じコンテンツをローカル・キャッシュから直接配信することは、そのコンテンツをコンテンツのホストから再び取得するよりもずっと速い。
【００４３】
ロード・バランサ２１０ａ、２１０ｂは、ネットワーク・トラフィック・フローを導くエッジ・オブ・ネットワーク（edge-of-network）システムを生成し、混雑を和らげ、さまざまなその他のサービスおよびシステムに対する負荷を分散させる。ロード・バランサ２１０ａ、２１０ｂは、サイト選択、ワークロード管理、セッション・アフィニティ（session affinity）、および透過的フェイルオーバを提供する。
【００４４】
ロード・バランサ２１０ａ、２１０ｂは、クライアント・デバイス１０５からのデータ要求を傍受し、現在要求を満たすことができるサーバ１１５に各要求を転送する。言い換えると、そのロード・バランサ２１０ａ、２１０ｂは、同じ種類の要求に奉仕するサーバ１１５の定義された組の間に到着する要求の負荷を平衡させる。
【００４５】
コンテンツに基づくルーティング・コンポーネント２２０ａ、２２０ｂは、キャッシュ・プロキシ２０５ａ、２０５ｂと一緒に、ＨＴＴＰおよびＨＴＴＰＳ要求がＵＲＬまたはその他の管理者によって決定された特徴に基づいて配信されることを可能にし、すべてのサーバ１１５に同一のコンテンツを記憶する必要をなくす。
【００４６】
各ウェブ・プロキシ・サーバ１１０は、上述のコンポーネントの組み合わせを含み得る。しかし、上述のコンポーネントのそれぞれは、異なる方法で動作する可能性がある。これは、自動車に似ている−−自動車は、車体、車輪、エンジン、ハンドル、およびシフト・レバーなどを含む。異なる自動車製造業者は、すべて、上述の仕様で自動車を製造するが、部品のそれぞれは、自動車製造業者がそれらの製造業者の自動車を互いに区別することを可能にする独自の方法で設計され、製造され、例えば、自動車Ａは、シャーシの空力特性などに基づいて自動車Ｂよりも燃費がよい。したがって、ウェブ・プロキシ・サーバ１１０が異なるベンダーによって設計／製造される場合（「タイプＡ」ウェブ・プロキシ・サーバおよび「タイプＢ」ウェブ・プロキシ・サーバ）、概して、「タイプＡ」および「タイプＢ」ウェブ・プロキシ・サーバは、所与の種類のセキュリティ攻撃に応じて異なる挙動をし得る。例えば、「タイプＡ」ウェブ・プロキシ・サーバのベンダーは、「タイプＡ」のセキュリティの脆弱性を修正するための「セキュリティ・パッチ」をリリースした可能性がある。しかし、「タイプＢ」ウェブ・プロキシ・サーバのベンダーは「セキュリティ・パッチ」をリリースしなかった可能性があり、したがって、「タイプＢ」ウェブ・プロキシ・サーバにはまだ脆弱性が存在する。セキュリティ・パッチを作成することは、多くの日数を要し、ウェブ・プロキシ・サーバ１１０およびネットワーク・セキュリティ・システム１００全体をセキュリティ攻撃に対して脆弱なままにする可能性がある。
【００４７】
本発明の好ましい実施形態によれば、ウェブ・プロキシ・サーバ１１０を保護し、パッチ適用プロセスをより簡単でより信頼できるようにするために、図３、４、５、および６を参照すると、ディストリビュータ・コンポーネント３００およびコンパレータ・コンポーネント３０５が、ネットワーク・セキュリティ・システム１００に組み込まれる。ディストリビュータ・コンポーネント３００は、クライアント・デバイス１０５からのリソースの要求またはサーバ１１５からの要求されたリソースを、これらの要求がウェブ・プロキシ・サーバ１１０への経路上にあるときに傍受する。好ましい実施形態においては、少なくとも２つの同一でないウェブ・プロキシ・サーバ１１０ａ、１１０ｂが、配置される。用語「同一でない」は、本明細書全体を通じて、異なる種類のウェブ・プロキシ・サーバを意味する、つまり、「同じでない」または「同一」でないことを意味するために使用される。これは、異なる製造業者、異なるベンダーからのウェブ・プロキシ・サーバ１１０、またはサーバ１１５上に存在する異なるバージョンのソフトウェアを意味する可能性がある。
【００４８】
ディストリビュータ・コンポーネント３００は、傍受された要求を少なくとも２つの同一でないウェブ・プロキシ・サーバ１１０ａ、１１０ｂにルーティングし、ウェブ・プロキシ・サーバ１１０ａ、１１０ｂは、受信された要求を通常の方法で処理し続ける。
【００４９】
コンパレータ・コンポーネント３０５は、２つの同一でないウェブ・プロキシ・サーバ１１０ａ、１１０ｂからの出力を分析する。コンパレータ・コンポーネント３０５およびディストリビュータ・コンポーネント３００は、クライアント・デバイス１０５、サーバ１１５、およびウェブ・プロキシ・サーバ１１０とインタラクションおよび通信して、ネットワーク・セキュリティを高め、望まれていないセキュリティ攻撃を阻止する。
【００５０】
好ましい実施形態においては、中に入ってくるメッセージ、すなわち、クライアント・デバイス１０５からウェブ・プロキシ・サーバ１１０ａ、１１０ｂに送信されるメッセージに関して、ディストリビュータ・コンポーネント３００が、ウェブ・プロキシ・サーバ１１０ａ、１１０ｂの「上流の」ネットワーク・セキュリティ・システム１００に導入される。「上流の」によって、ディストリビュータ・コンポーネント３００がネットワーク・セキュリティ・システム１００内で１つまたは複数の要求元のクライアント・デバイス１０５と少なくとも２つの同一でないウェブ・プロキシ・サーバ１１０ａ、１１０ｂとの間に置かれることが意味される。
【００５１】
好ましい実施形態においては、中に入ってくるメッセージ、すなわち、クライアント・デバイス１０５からウェブ・プロキシ・サーバ１１０ａ、１１０ｂに送信されるメッセージに関して、コンパレータ・コンポーネント３０５が、ウェブ・プロキシ・サーバ１１０ａ、１１０ｂの「下流の」ネットワーク・セキュリティ・システム１００に導入される。「下流の」によって、コンパレータ・コンポーネント３０５がネットワーク・セキュリティ・システム１００内で２つ以上のウェブ・プロキシ・サーバ１１０ａ、１１０ｂとリソースの要求を満たす１つまたは複数のサーバ１１５との間に置かれることが意味される。
【００５２】
好ましい実施形態において、外に出て行くメッセージ、つまり、サーバ１１５から少なくとも２つのウェブ・プロキシ・サーバ１１０ａ、１１０ｂに送信されるメッセージに関して、要求元のクライアント・デバイス１０５への外に出て行く配信のために、ディストリビュータ・コンポーネント３００が、ウェブ・プロキシ・サーバ１１０ａ、１１０ｂの「上流の」ネットワーク・セキュリティ・システム１００に導入される。「上流の」によって、ディストリビュータ・コンポーネント３００がサーバ１１５からの２つ以上のウェブ・プロキシ・サーバ１１０ａ、１１０ｂへの送信の要求を受信することが意味される。
【００５３】
好ましい実施形態において、外に出て行くメッセージ、つまり、サーバ１１５から少なくとも２つのウェブ・プロキシ・サーバ１１０ａ、１１０ｂに送信されるメッセージに関して、コンパレータ・コンポーネント３０５が、ウェブ・プロキシ・サーバ１１０ａ、１１０ｂの「下流の」ネットワーク・セキュリティ・アーキテクチャに導入される。「下流の」によって、コンパレータ・コンポーネント３０５がネットワーク１２０内で２つ以上のウェブ・プロキシ・サーバ１１０ａ、１１０ｂと１つまたは複数の要求元のクライアント・デバイス１０５との間に置かれることが意味される。
【００５４】
コンパレータ・コンポーネント３０５およびディストリビュータ・コンポーネント３００は、同じサーバに存在する別々のコンポーネントである可能性があり、または代替的に、別々のコンポーネントは、同じもしくは地理的に散らばった地域内の別々のサーバに存在する可能性がある。代替的に、コンパレータ・コンポーネント３０５およびディストリビュータ・コンポーネント３００は、１つのソフトウェア・コンポーネントとして、および同じサーバに存在するものとして実装される、つまり、クライアント・デバイス１０５およびサーバ１１５からの要求を傍受するディストリビュータ・コンポーネント３００および同一でないウェブ・プロキシ・サーバ１１０ａ、１１０ｂからの出力を傍受するコンパレータ・コンポーネント３０５である可能性がある。当業者は、本発明の範囲を逸脱することなくその他の種類の構成が可能であることを認めるであろう。
【００５５】
図５および図７を参照すると、ディストリビュータ・コンポーネント３００は、要求元のクライアント・デバイス１０５からのＨＴＴＰ要求を処理するために互いにインターフェースをとり、インタラクションするいくつかの下位コンポーネントを含む。下位コンポーネントは、要求元のクライアント・デバイス１０５からの要求を傍受し、受信するためのインターセプタ・コンポーネント５０５と、受信された要求のコピーを生成するためのデュプリケータ・コンポーネント５１０と、受信された要求のコピーに一意識別子を割り振るためのトラッカ（tracker）・コンポーネント５１５と、受信された要求のコピーのそれぞれを同一でない「タイプＡ」ウェブ・プロキシ・サーバ１１０ａおよび「タイプＢ」ウェブ・プロキシ・サーバ１１０ｂに転送するためのトランスミッタ・コンポーネント５２０とを含む。
【００５６】
プロセスは、インターセプタ・コンポーネント５０５が要求元のクライアント・デバイス１０５からＨＴＴＰ要求を受信することで始まる（ステップ６００）。受信されたＨＴＴＰ要求の簡略化された例が、以下に示される。
HTTP Request
GET /index.html HTTP/1.1
Host: www.IBM.com
【００５７】
典型的な攻撃は、標準的なHTTP GetまたはPostコマンドを用いてＵＲＬの要求を行うが、標的のプログラムが、実行可能命令である可能性がある既存のメモリの値をデータが上書きするようにしてメモリにデータを記憶させるのに十分なデータを含めることである。このようにして、攻撃者は、ウェブ・サーバの挙動を修正し、潜在的に、そのウェブ・サーバに障害を引き起こすか、またはそのウェブ・サーバに攻撃者によって供給された命令を強制的に実行させることができる。
【００５８】
これは、バッファ・オーバーフロー状態と呼ばれ、バッファ・オーバーフロー状態は、プログラムがバッファにそのバッファが保持することができるよりも多くのデータを入れようとするとき、またはプログラムが指定されたアドレス空間の外のメモリ領域にデータを入れようとするときに存在する。この場合、バッファは、文字列から整数の配列まで任意のものを含むように割り当てられるメモリの連続的なセクションである。割り当てられたメモリのブロックの境界の外に書き込むことは、データを破壊するか、プログラムをクラッシュさせるか、または悪意のあるコードの実行を引き起こす可能性がある。
【００５９】
脆弱性の基本は、不適切なデータ・サイズを調べることである。データは、ＵＲＬ要求内で文字列によって示される。概して、不適切な文字列の長さを調べることは、ワイドまたはマルチバイト文字列が標準の文字列と取り違えられるときに行われる。
【００６０】
以下の例は、データを保持するためのバッファ空間を割り当てるために頻繁に使用されるＣプログラミング言語のソース・コードを示す。バッファは、Ｃのルーチン「malloc」を用いて動的に割り当てられる。
【００６１】
以下の例は、コメントの付された誤ったmallocの呼び出しのいずれかが使用されるならば、悪用されることになる。
例示的コード
#include <stdio.h>
#include <strings.h>
#include <wchar.h>
int main() {
wchar_t wideString[] = L" The spazzyorange tiger jumped " \
"over the tawny jaguar.";
wchar_t *newString;
printf("Strlen() output: %d\nWcslen()output: %d\n",
strlen(wideString), wcslen(wideString));
/* 以下は、「ワイド文字列」として定義された文字列の長さを見つけようとすることが不適切であるため間違っている //
newString = (wchar_t *)malloc(strlen(wideString));
*/
/* 以下の文字列は、ワイド文字が１バイト長でないので間違っている //
newString = (wchar_t *)malloc(wcslen(wideString));
*/
/* 正しい! */
newString = (wchar_t *)malloc(wcslen(wideString) *
sizeof(wchar_t));
/* ... */
}
【００６２】
printf()ステートメントからの出力は、以下のようになる。
Strlen() output: 0
Wcslen() output: 53
Source: https://www.owasp.org/index.php/Improper_string_length_checkingavailable under the creative commons license.
【００６３】
ディストリビュータ・コンポーネント３００のデュプリケータ・コンポーネント５１０が、受信されたＨＴＴＰ要求のコピーを生成する（ステップ６０５）。
【００６４】
トラッカ・コンポーネント５１５は、受信された要求および受信された要求のコピーに一意識別子を付加する。一意識別子は、コンパレータ・コンポーネント３０５が、受信された要求および複製の要求を正しく認識することができるように、セキュリティ・ネットワークによって要求（元の要求および複製の要求）を追跡するために使用される。
【００６５】
トランスミッタ・コンポーネント５２０が、受信された要求を「タイプＡ」ウェブ・プロキシ・サーバ１１０ａに送信し、複製の要求を第２のウェブ・プロキシ・サーバを通って「タイプＢ」ウェブ・プロキシ・サーバ１１０ｂに送信する（ステップ６１０）。当業者は、選択された２つのウェブ・プロキシ・サーバ１１０ａ、１１０ｂが同一でない、つまり、異なる種類である限り、受信された要求または複製の要求がどのウェブ・プロキシ・サーバ１１０ａ、１１０ｂに送信されるかは問題でないことを認識するであろう。
【００６６】
両方のウェブ・プロキシ・サーバ１１０ａ、１１０ｂが、リソースのＨＴＴＰ要求を受信し、要求の処理に取りかかる。２つのウェブ・プロキシ・サーバ１１０ａ、１１０ｂが同一でなく、異なる方法で動作するので、以下の筋書きが起こり得る。
【００６７】
「タイプＡ」ウェブ・プロキシ・サーバ１１０ａが、受信された要求の処理に取りかかる。この例において、「タイプＡ」ウェブ・プロキシ・サーバ１１０ａは、受信された要求に含まれるデータのサイズまたは種類を正しく測定せず、上述のコード・スニペットの例の無効なメソッドのうちの１つを用いてメモリ空間を割り当てる。結果として、「タイプＡ」ウェブ・プロキシ・サーバ１１０ａは、コード命令がユーザ・データによって上書きされることを許すバッファ・オーバーフローに見舞われる。結果は、攻撃者によって供給される命令に依存するが、概して、データがネットワーク・セキュリティ・システム１００の残りに転送されず、その代わりに、「タイプＡ」ウェブ・プロキシ・サーバ１１０ａの制御がユーザに返され、つまり、ユーザが、事実上、システム管理者として「タイプＡ」ウェブ・プロキシ・サーバ１１０ａに「ログイン」した。
【００６８】
「タイプＢ」ウェブ・プロキシ・サーバ１１０ｂは、複製の要求を受信し、要求の処理に取りかかる。この例において、「タイプＢ」ウェブ・プロキシは、受信されたＵＲＬ要求内のデータのサイズを確かめ、メモリを正しく割り当てる。
【００６９】
結果として、「タイプＢ」ウェブ・プロキシ・サーバ１１０ｂは、受信された要求を以下によって処理する。
・  ユーザにエラー・メッセージを返し、いかなるデータもシステムの残りに転送しないか、または
・  ユーザによって供給されたデータをそれが有効な長さになるまで切り捨て、残りのデータのみをネットワーク・セキュリティ・システム１００の残りに転送するか、または
・  受信された要求内のデータに十分なメモリを割り当て、データによるコード命令の上書きを避ける。
【００７０】
図６および図７を参照すると、コンパレータ・コンポーネント３０５が、ウェブ・プロキシ・サーバ１１０ａ、１１０ｂからの出力を傍受するためのインターセプタ・コンポーネント５２５を含む（ステップ６１５）。インターセプタ・コンポーネント５０５は、「タイプＡ」ウェブ・プロキシ・サーバ１１０ａからの出力（バッファ・オーバーフロー−  上書きされたデータ）および「タイプＢ」ウェブ・プロキシ・サーバ１１０ｂからの出力（正しい出力）を受信する。
【００７１】
比較コンポーネント５３０が、受信された出力のそれぞれを解析し、比較する。比較コンポーネント５３０は、デターミナ・コンポーネント５４０とインターフェースをとる。デターミナ・コンポーネント５４０は、規則のデータベース５４５と組んで、２つの出力の間に「違い」があるかどうかを判定する（ステップ６２０）。違いがないと判定される場合、ルーティング・コンポーネント５５０が、要求を満たすために適切なサーバ１１５にＨＴＴＰ要求（受信された要求または受信された要求のコピー）を転送する。デターミナ・コンポーネント５４０が「タイプＡ」の出力と「タイプＢ」の出力との間の違いを検出する場合、ウェブ・プロキシ・サーバ１１０ａ、１１０ｂの両方からの出力の実行を阻止する（ステップ６３０）ためにアラート・ジェネレータ・コンポーネント５３５によってアラートが生成される（ステップ６２５）。
【００７２】
別の実施形態において、デターミナ・コンポーネント５４０およびデータベース５４５は、デターミナ・コンポーネント５４０が特定の種類のウェブ・プロキシ・サーバ１１０ａ、１１０ｂからの「予測される」出力を検出することを可能にするさらなる論理を含む。したがって、デターミナ・コンポーネント５４０がウェブ・プロキシ・サーバ１１０ａ、１１０ｂからのどの出力がサーバ１１５に転送され得るか、およびウェブ・プロキシ・サーバ１１０ａ、１１０ｂからのどの出力が阻止されるべきかを検出することを可能にする。
【００７３】
コンパレータ・コンポーネント３０５およびディストリビュータ・コンポーネント３００は、逆方向でも動作する（図４および図８）。サーバ１１５がリソースの要求を満たすと、要求されたリソースを含む応答メッセージが、ネットワーク１２０上でディストリビュータ・コンポーネント３００およびその下位コンポーネント５０５から５１５に送り返される（ステップ７００）。ディストリビュータ・コンポーネント３００が、応答メッセージのコピーの作成に取りかかり（ステップ７０５）、応答メッセージおよび応答メッセージのコピーに一意識別子を付加する。受信された応答メッセージおよび応答メッセージのコピーは、処理のために同一でないウェブ・プロキシ・サーバ１１０ａ、１１０ｂに送信される。
【００７４】
同一でないウェブ・プロキシ・サーバ１１０ａ、１１０ｂの出力が、処理のためにコンパレータ・コンポーネント３０５に送信される（ステップ７１０）。コンパレータ・コンポーネント３０５およびその下位コンポーネント５２５から５６０が、「タイプＡ」ウェブ・プロキシ・サーバおよび「タイプＢ」ウェブ・プロキシ・サーバからの出力を受信する（ステップ７１５）。比較コンポーネント５３０は、出力の両方を互いに比較する。比較コンポーネント５３０が、（規則のデータベース５４５と共に）デターミナ・コンポーネント５４０とインターフェースをとり、２つの出力の間に「違い」があるかどうかを判定する（ステップ７３０）。違いがないと判定される場合、デターミナ・コンポーネント５４０は、要求されたリソースを含む応答メッセージを要求元のクライアント・デバイス１０５に送信するためにルーティング・コンポーネント５５０に送信する。デターミナ・コンポーネント５４０が２つの出力の間の違いを検出する場合、両方のウェブ・プロキシ・サーバ１１０ａ、１１０ｂからの出力の実行を阻止する（ステップ７３０）ためにアラートが生成される（ステップ７２５）。
【００７５】
アラートは、コンパレータ・コンポーネント３０５のアラート・ジェネレータ・コンポーネント５３５によって生成される。アラートが、悪意のある攻撃が検出されたので（１つまたは複数の）ウェブ・プロキシ・サーバ１１０ａ、１１０ｂの出力のうちの一方または両方を阻止するように出力ブロッカ・コンポーネント５５５に注意を促すだけでなく、分類エンジン５６０が、ウェブ・プロキシ・サーバ１１０ａ、１１０ｂが実行しようとしていたアクションおよびなぜこれが悪意のある攻撃と判定されたのかを詳述するレポートが生成され得るように、アラート・ジェネレータ・コンポーネント５３５とインタラクションして攻撃の種類を分類する。攻撃の種類は、例えば、ＳＱＬインジェクション攻撃、セキュリティの不適切な設定、またはバッファ・オーバーフロー攻撃である可能性がある。
【００７６】
当業者は、本発明の好ましい実施形態が２つの同一でないウェブ・プロキシ・サーバを用い、出力を比較する観点で説明されたが、３つ以上の同一でないウェブ・プロキシ・サーバが本発明の範囲を逸脱することなく使用され得ることを認めるであろう。
【００７７】
当業者に理解されるように、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化され得る。したがって、本発明の態様は、すべてハードウェアの実施形態、すべてソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、またはすべてが概して本明細書において「回路」、「モジュール」、もしくは「システム」と呼ばれることがあるソフトウェアの態様とハードウェアの態様とを組み合わせる実施形態の形態をとる可能性がある。さらに、本発明の態様は、コンピュータ可読プログラム・コードを具現化する１つまたは複数のコンピュータ可読媒体で具現化されたコンピュータ・プログラム製品の形態をとる可能性がある。
【００７８】
１つまたは複数のコンピュータ可読媒体の任意の組み合わせが、利用される可能性がある。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読ストレージ媒体である可能性がある。コンピュータ可読ストレージ媒体は、例えば、電子、磁気、光、電磁、赤外線、または半導体システム、装置、もしくはデバイス、またはこれらの任意の好適な組み合わせである可能性があるがこれらに限定されない。コンピュータ可読ストレージ媒体のより詳細な例（非網羅的なリスト）は、以下、すなわち、１つもしくは複数の配線を有する電気的な接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラマブル読み出し専用メモリ（ＥＰＲＯＭもしくはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光ストレージ・デバイス、磁気ストレージ・デバイス、またはこれらの任意の好適な組み合わせを含む。本明細書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置、もしくはデバイスによって、または命令実行システム、装置、もしくはデバイスに関連して使用するためのプログラムを含むまたは記憶することができる任意の有形の媒体である可能性がある。
【００７９】
コンピュータ可読信号媒体は、例えば、ベースバンドで、または搬送波の一部としてコンピュータ可読プログラム・コードを具現化する伝播されるデータ信号を含み得る。そのような伝播される信号は、電磁的、光学的、またはこれらの任意の好適な組み合わせを含むがこれらに限定されないさまざまな形態のうちの任意の形態をとり得る。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、命令実行システム、装置、もしくはデバイスによって、または命令実行システム、装置、もしくはデバイスに関連して使用するためのプログラムを伝達、伝播、または搬送することができる任意のコンピュータ可読媒体である可能性がある。
【００８０】
コンピュータ可読媒体上に具現化されるプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦなど、またはこれらの任意の好適な組み合わせを含むがこれらに限定されない任意の適切な媒体を用いて送信される可能性がある。
【００８１】
本発明の態様の動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語と、「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語とを含む１つまたは複数のプログラミング言語の任意の組み合わせで記述され得る。プログラム・コードは、すべてユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとしてユーザのコンピュータ上で部分的に、ユーザのコンピュータ上で部分的にかつ遠隔のコンピュータ上で部分的に、またはすべて遠隔のコンピュータもしくはサーバ上で実行され得る。最後の筋書きでは、遠隔のコンピュータが、ローカル・エリア・ネットワーク（ＬＡＮ）もしくは広域ネットワーク（ＷＡＮ）を含む任意の種類のネットワークを介してユーザのコンピュータに接続され得るか、または外部コンピュータへの接続が（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）行われ得る。
【図１】
0006271002.tif 000002
【図２】
0006271002.tif 000003
【図３】
0006271002.tif 000004
【図４】
0006271002.tif 000005
【図５】
0006271002.tif 000006
【図６】
0006271002.tif 000007
【図７】
0006271002.tif 000008
【図８】
0006271002.tif 000009