(57)【要約】【課題】サーバ・セキュリティ検証の方法を提供する。【解決手段】本方法は、各脆弱性に対する脆弱性の存在に関する指摘を含みサーバで生成された（２０４）受信レポートに関連付けられた公開鍵を取得するステップと；公開鍵を用いて受信レポートを解読するステップ（２１０）と；プロセッサを用い、解読されたレポートに基づいてサーバ側セキュリティのレベルを判定するステップ（２１２）と；判定されたサーバ側セキュリティのレベルに対応して、クライアントでブラウザを再設定するステップ（３１６）と；を含む。【選択図】図２
2015534681.tif 000002
【特許請求の範囲】
【請求項１】
サーバ・セキュリティ検証の方法であって、
一つ以上の脆弱性の各々に対する脆弱性の存在に関する指摘を含みサーバで生成された（２０４）受信レポートに関連付けられた公開鍵を取得するステップと、
前記公開鍵を用いて前記受信レポートを解読するステップ（２１０）と、
プロセッサを用い、前記解読されたレポートに基づいてサーバ側セキュリティのレベルを判定するステップ（２１２）と、
前記判定されたサーバ側セキュリティのレベルに対応して、前記クライアントでブラウザを再設定するステップ（３１６）と、
を含む方法。
【請求項２】
前記判定されたサーバ側セキュリティのレベルに基づいて特定の脆弱性のスキャンを強化または軽減するように、前記クライアントでスキャニング・モジュールを設定するステップと、
前記スキャニング・モジュールを用い、前記サーバの脆弱性をスキャンするステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記レポートで前記サーバに存在しないと指摘された脆弱性のスキャンを省略し、前記レポートで前記サーバに存在すると指摘された脆弱性のスキャンを増加するように、前記スキャニング・モジュールを設定するステップをさらに含む、請求項２に記載の方法。
【請求項４】
サーバ側セキュリティのレベルを判定する前記ステップが、
前記解読されたレポート中に開示された各脆弱性に関連付けられた重大度スコアを合計するステップと、
前記合計された重大度スコアを、最大許容脆弱性重大度を表す閾値と比較するステップと、
をさらに含む、請求項１に記載の方法。
【請求項５】
サーバ側セキュリティのレベルを判定する前記ステップが、
前記解読されたレポート中に開示された脆弱性の数をカウントするステップと、
前記脆弱性の数を、最大許容脆弱性カウントを表す閾値と比較するステップと、
をさらに含む、請求項１に記載の方法。
【請求項６】
サーバ・セキュリティ検証の方法であって、
サーバに位置するスキャニング・モジュールを用い、前記サーバの一つ以上の脆弱性をスキャンするステップ（２０２）と、
前記スキャンの結果に基づいて、前記一つ以上の脆弱性の各々に対する脆弱性の存在に関する指摘を含む、サーバ側セキュリティの暗号化レポートを生成するステップであって、前記暗号化は秘密鍵を用いて実施される、前記生成するステップ（２０４）と、
公開鍵を用い、要求しているクライアントで前記暗号化レポートのコピーを解読するステップ（２１０）と、
プロセッサを用い、前記解読されたレポートに基づいてサーバ側セキュリティのレベルを判定するステップ（２１２）と、
前記クライアントに位置するスキャニング・モジュールを用いて前記サーバの脆弱性をスキャンするステップ（３１４）と、
を含む方法。
【請求項７】
前記判定されたサーバ側セキュリティのレベルに基づいて特定の脆弱性のスキャンを増加または軽減するように、前記クライアントに位置する前記スキャニング・モジュールを設定するステップをさらに含む、請求項６に記載の方法。
【請求項８】
前記レポートで前記サーバに存在しないと指摘された脆弱性のスキャンを省略し、前記レポートで前記サーバに存在すると指摘された脆弱性のスキャンを増加するように、前記スキャニング・モジュールを設定するステップをさらに含む、請求項７に記載の方法。
【請求項９】
サーバ側セキュリティのレベルを判定する前記ステップが、
前記解読されたレポート中に開示された各脆弱性に関連付けられた重大度スコアを合計するステップと、
前記合計された重大度スコアを、最大許容脆弱性重大度を表す閾値と比較するステップと、
をさらに含む、請求項６に記載の方法。
【請求項１０】
サーバ側セキュリティのレベルを判定する前記ステップが、
前記解読されたレポート中に開示された脆弱性の数をカウントするステップと、
前記脆弱性の数を、最大許容脆弱性カウントを表す閾値と比較するステップと、
をさらに含む、請求項６に記載の方法。
【請求項１１】
サーバで生成された受信レポートに関連付けられた公開鍵を取得し、前記公開鍵を用いて前記受信レポートを解読し、前記解読されたレポートに基づいてサーバ側セキュリティのレベルを判定するよう構成されたレポート確認モジュール（１０６）と、
前記判定されたサーバ側セキュリティのレベルに対応して、ブラウザを再設定するよう構成されたプロセッサ（１０２）と、
を含むクライアント・セキュリティ・モジュール。
【請求項１２】
前記受信レポートに基づいて前記サーバの脆弱性をスキャンするよう構成され、前記判定されたサーバ側セキュリティのレベルに基づいて特定の脆弱性のスキャンを強化または軽減するようさらに構成されたスキャニング・モジュールをさらに含む、請求項１１に記載のクライアント・セキュリティ・モジュール。
【請求項１３】
前記スキャニング・モジュールが、前記レポートで前記サーバに存在しないと指摘された脆弱性のスキャンを省略し、前記レポートで前記サーバに存在すると指摘された脆弱性のスキャンを増加するようさらに構成される、請求項１２に記載のクライアント・セキュリティ・モジュール。
【請求項１４】
前記レポート確認モジュールが、前記解読されたレポート中に開示された各脆弱性に関連付けられた重大度スコアを合計し、前記合計された重大度スコアを、最大許容脆弱性重大度を表す閾値と比較するようさらに構成される、請求項１１に記載のクライアント・セキュリティ・モジュール。
【請求項１５】
前記レポート確認モジュールが、前記解読されたレポート中に開示された脆弱性の数をカウントし、前記脆弱性の数を、最大許容脆弱性カウントを表す閾値と比較するようさらに構成される、請求項１１に記載のクライアント・セキュリティ・モジュール。
【請求項１６】
サーバの一つ以上の脆弱性をスキャンするよう構成されたスキャナ（１１８）と、
前記スキャナによって提供された結果に基づいて、サーバ側セキュリティの暗号化レポートを生成するよう構成されたレポート・ゼネレータ（１１６）と、
前記暗号化レポートを、要求しているクライアントに送信するよう構成されたトランスミッタと、
を含むサーバ・セキュリティ・モジュール（１１０）、および
サーバで生成された受信レポートを解読し、プロセッサを用い、前記解読されたレポートに基づいてサーバ側セキュリティのレベルを判定するよう構成されたレポート確認モジュール（１０６）と、
前記サーバの脆弱性をスキャンするよう構成されたスキャニング・モジュール（１０８）であって、前記スキャニングは、前記判定されたサーバ側セキュリティのレベルに基づいて特定の脆弱性のスキャンを強化または軽減するよう構成される、前記スキャニング・モジュール（１０８）と、
を含むクライアント・セキュリティ・モジュール（１００）、
を含むセキュリティ検証システム。
【請求項１７】
前記スキャニング・モジュールが、前記レポートで前記サーバに存在しないと指摘された脆弱性のスキャンを省略するようさらに構成される、請求項１６に記載のセキュリティ検証システム。
【請求項１８】
前記スキャニング・モジュールが、前記レポートで前記サーバに存在すると指摘された脆弱性のスキャンを増加するようさらに構成される、請求項１６に記載のセキュリティ検証システム。
【請求項１９】
前記レポート確認モジュールが、前記解読されたレポート中に開示された各脆弱性に関連付けられた重大度スコアを合計し、前記合計された重大度スコアを、最大許容脆弱性重大度を表す閾値と比較するようさらに構成される、請求項１６に記載のセキュリティ検証システム。
【請求項２０】
前記レポート確認モジュールが、前記解読されたレポート中に開示された脆弱性の数をカウントし、前記脆弱性の数を、最大許容脆弱性カウントを表す閾値と比較するようさらに構成される、請求項１６に記載のセキュリティ検証システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はウェブのセキュリティ保証に関し、さらに具体的には、サーバ側アプリケーションの保証に関する。
【背景技術】
【０００２】
ウェブ・アプリケーション、特に商用アプリケーションはセキュリティ攻撃のターゲットになっている。ウェブ・アプリケーションが脆弱な場合、その脆弱性の性質の如何によって、攻撃者が、例えば、（例を挙げると、クロスサイト・スクリプティングまたはクロスアプリケーション・リクエスト・フォージェリ・ペイロードを使って）そのウェブ・アプリケーションの他のユーザを悪用するスクリプトを差し込む、もしくはユーザのデータを盗む、またはその両方を行う、あるいは（例えば、ログ偽造または命令実行ペイロードを使って）ウェブ・アプリケーションのサーバ側を乱用することが可能である。ウェブ・アプリケーションまたはウェブ・サービスの消費者は、手動でもしくは自動スキャニング・ツールを使って、クライアント側のアプリケーションを時々検査することが可能であるが、通常、消費者はウェブ・アプリケーションのサーバ側へのアクセスを持たない。
【０００３】
このため、ウェブ・アプリケーションまたはサービスのユーザは、サーバ側の脆弱性から自分を守るいかなる方法がないままである。たとえ、ユーザがクライアント側でスキャニング・ツールを作動させ脆弱性が見付からなかったとしても、サーバ側が、一部または全ての場合において適切なサニタイジング／確認を適用し損ねるなど安全性を欠くやり方でその受信データを依然として処理していることがあり得る。このことは、サーバ側が、セキュリティ施行に関し概ね的確であるが、それでもなお少数のとらえがたいまたは発見困難な脆弱性をかかえている場合について特に言える。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ウェブサイトにおけるユーザの信用を向上するため、諸ソリューションが開発されてきた。第三者の精査者が、当該サーバ・アプリケーションがスキャンされ安全であると認められたことを表す「信頼マーク」をウェブサイトのクライアント側に組み込む。しかしながら、外部精査者のサーバ側の脆弱性を顕在化させる能力には限界があるという本質的な問題は残る。かかる脆弱性の一つの典型的な例が、いつまでも無くならないクロスサイト・スクリプティングである。そのペイロードは、すぐに反映されるわけではないが、将来のユーザがこれを読み出すようにと要求するのに備えて、バックエンド・データベース中に潜伏する。
【課題を解決するための手段】
【０００５】
サーバ・セキュリティ検証の方法が提示され、本方法は、一つ以上の脆弱性の各々に対する脆弱性の存在に関する指摘を含みサーバで生成された受信レポートに関連付けられた公開鍵を取得するステップと；公開鍵を用いて受信レポートを解読するステップと；プロセッサを用い、解読されたレポートに基づいてサーバ側セキュリティのレベルを判定するステップと；判定されたサーバ側セキュリティのレベルに対応して、クライアントでブラウザを再設定するステップと；を含む。
【０００６】
サーバ・セキュリティ検証のさらなる方法が提示され、本方法は、一つ以上の脆弱性の各々に対する脆弱性の存在に関する指摘を含みサーバで生成された受信レポートに関連付けられた公開鍵をクライアントで取得するステップと；公開鍵を用いて受信レポートを解読するステップと；プロセッサを用い、解読されたレポートに基づいてサーバ側セキュリティのレベルを判定するステップと；クライアントに位置するスキャニング・モジュールを用いてサーバの脆弱性をスキャンするステップであって、該スキャニング・モジュールが、判定されたサーバ側セキュリティのレベルに基づいて特定の脆弱性のスキャンを強化または軽減するよう構成される、該スキャンするステップと；判定されたサーバ側セキュリティのレベルに対応して、クライアントでブラウザを再設定するステップと；を含む。
【０００７】
サーバ・セキュリティ検証のさらなる方法が提示され、本方法は、サーバに位置するスキャニング・モジュールを用い、サーバの一つ以上の脆弱性をスキャンするステップと；前記スキャンの結果に基づいて、前記一つ以上の脆弱性の各々に対する脆弱性の存在に関する指摘を含む、サーバ側セキュリティの暗号化レポートを生成するステップであって、前記暗号化は秘密鍵を用いて実施される、該生成するステップと；公開鍵を用い、要求しているクライアントで暗号化レポートのコピーを解読するステップと；プロセッサを用い、解読されたレポートに基づいてサーバ側セキュリティのレベルを判定するステップと；クライアントに位置するスキャニング・モジュールを用いてサーバの脆弱性をスキャンするステップと；を含む。
【０００８】
サーバ・セキュリティ検証のさらなる方法が提示され、本方法は、サーバに位置するスキャニング・モジュールを用い、サーバの一つ以上の脆弱性をスキャンするステップと；前記スキャンの結果に基づいて、前記一つ以上の脆弱性の各々に対する脆弱性の存在に関する指摘を含む、サーバ側セキュリティの暗号化レポートを生成するステップであって、前記暗号化は秘密鍵を用いて実施される、該生成するステップと；暗号化レポートを、要求しているクライアントに送信するステップと；公開鍵を用い、暗号化レポートを解読するステップと；プロセッサを用い、解読されたレポートに基づいてサーバ側セキュリティのレベルを判定するステップと；判定されたサーバ側セキュリティのレベルに基づいて特定の脆弱性のスキャンを増加または軽減するように、クライアントに位置するスキャニング・モジュールを設定するステップと；クライアントに位置するスキャニング・モジュールを用いてサーバの脆弱性をスキャンするステップと；を含む。
【０００９】
クライアント・セキュリティ・モジュールが提示され、本モジュールは、サーバで生成された受信レポートに関連付けられた公開鍵を取得し、その公開鍵を用いて受信レポートを解読し、解読されたレポートに基づいてサーバ側セキュリティのレベルを判定するよう構成されたレポート確認（ｖａｌｉｄａｔｉｏｎ）モジュールと；判定されたサーバ側セキュリティのレベルに対応して、ブラウザを再設定するよう構成されたプロセッサと；を含む。
【００１０】
さらなるクライアント・セキュリティ・モジュールが提示され、本モジュールは、サーバで生成されサーバにおける一つ以上の脆弱性の存在を示す受信レポートに関連付けられた公開鍵を取得し、その公開鍵を用いて受信レポートを解読し、解読されたレポートに基づいてサーバ側セキュリティのレベルを判定するよう構成されたレポート確認モジュールと；受信レポートに基づいてサーバの脆弱性をスキャンするよう構成されたスキャニング・モジュールであって、判定されたサーバ側セキュリティのレベルに基づいて特定の脆弱性のスキャンを強化または軽減する、該スキャニング・モジュールと；判定されたサーバ側セキュリティのレベルおよびスキャニング・モジュールの結果内容に対応して、ブラウザを再設定するよう構成されたプロセッサと；を含む。
【００１１】
サーバ・セキュリティ・モジュールおよびクライアント・セキュリティ・モジュールを含むセキュリティ検証システムが提示される。サーバ・セキュリティ・モジュールは、サーバの一つ以上の脆弱性をスキャンするよう構成されたスキャナと；前記スキャナによって提供された結果に基づいて、サーバ側セキュリティの暗号化レポートを生成するよう構成されたレポート・ゼネレータと；暗号化レポートを、要求しているクライアントに送信するよう構成されたトランスミッタと；を含む。クライアント・セキュリティ・モジュールは、サーバで生成された受信レポートを解読し、プロセッサを用い、解読されたレポートに基づいてサーバ側セキュリティのレベルを判定するよう構成されたレポート確認モジュールと；サーバの脆弱性をスキャンするよう構成されたスキャニング・モジュールであって、前記スキャニングは、判定されたサーバ側セキュリティのレベルに基づいて特定の脆弱性のスキャンを強化または軽減するよう構成される、該スキャニング・モジュールと：を含む。
【００１２】
サーバ・セキュリティ・モジュールおよびクライアント・セキュリティ・モジュールを含むさらなるセキュリティ検証システムが提示される。サーバ・セキュリティ・モジュールは、サーバの一つ以上の脆弱性をスキャンするよう構成されたスキャナと；前記一つ以上の脆弱性の各々に対する脆弱性の存在に関する指摘を含む、サーバ側セキュリティの秘密鍵暗号化レポートをプロセッサを用いて生成するよう構成され、該秘密鍵に対応する公開鍵を発行するようさらに構成されたレポート・ゼネレータと；要求しているクライアントが、サーバ側セキュリティのレベルを判定するため公開鍵を用いて暗号化レポートにアクセスできるように、暗号化レポートを該クライアントに送信するよう構成されたトランスミッタと；を含む。クライアント・セキュリティ・モジュールは、サーバで生成された受信レポートに関連付けられた公開鍵を取得し、公開鍵を用いて受信レポートを解読し、プロセッサを用い、解読されたレポートに基づいてサーバ側セキュリティのレベルを判定するよう構成されたレポート確認モジュールと；サーバの脆弱性をスキャンするよう構成されたスキャニング・モジュールであって、前記スキャニングは、判定されたサーバ側セキュリティのレベルに基づいて特定の脆弱性のスキャンを強化または軽減するよう構成される、該スキャニング・モジュールと；を含む。
【００１３】
これらのおよび他の特徴および利点は、以下の例示的な実施形態の詳細な説明を、添付の図面と併せ読めば明らかになろう。
【００１４】
本開示は、添付の図面を参照しながら、以下の好適な実施形態の説明において詳細を提示する。
【図面の簡単な説明】
【００１５】
【図１】本発明の原理による、セキュリティ分析を実施するクライアントおよびサーバのブロック図である。
【図２】本発明の原理による、サーバ側セキュリティのレベルを判定する方法のブロック／流れ図である。
【図３】本発明の原理による、クライアント側スキャナを設定する方法のブロック／流れ図である。
【発明を実施するための形態】
【００１６】
本発明の原理は、サーバ側スキャンからクライアント側にロバスト性および信頼性をもって情報を伝える能力を含め、ウェブ・アプリケーションの全面的な保証を提供する。サーバ側アプリケーションはスキャンを実施し、レポートが第三者の攻撃者でなく適正なサーバによって実際に配送されたことをクライアントが確信できるように、クライアントが公開鍵暗号化を用いて利用することが可能なレポートを生成する。
【００１７】
サーバ側保証に関する情報は、クライアント側でブラウザ・プラグインを使って、拒絶するかまたは信頼可能と判断することが可能である。クライアント側は、レポートに基づいて当該サイトがどのくらい安全かのオンライン・アセスメントをさらに生成することができ、該レポート中の情報に基づいてそのウェブサイトに対するクライアント側でのガイド付きスキャンをさらに開始することができる。
【００１８】
ここで諸図面を参照する。同一の参照符号は同一または類似のエレメントを表している。最初に図１を見ると、クライアント１００およびサーバ１１０を含む例示的なネットワークが示されている。クライアント１００は、例えばインターネットまたは何らかの他の適切な通信媒体を使って、サーバ１１０上のサービスまたはウェブサイトにアクセスする。クライアントは、例えばウェブ・ブラウザなどを、格納し実行するよう構成されたプロセッサ１０２およびメモリ１０４を含む。同様に、サーバ１１０は、プロセッサ１１２およびメモリ１１４を含み、これらはクライアント１００からの要求を受信し応答を提供する。
【００１９】
サーバ１１０は、ローカル・システムおよびコンテンツにセキュリティ・スキャンを実施するローカル・スキャナ１１８をさらに含む。スキャナ１１８は、サーバ１１０においてクロスサイト・スクリプティングなどの脆弱性を探知するよう構成されており、このような脆弱性は、クライアント側スキャナ１０８によるなど第三者のスキャンによって見付けることは困難であろう。スキャナ１１８は、サーバ１１０全体をスキャンすることもできるし、あるいはサーバ１１０内のウェブ・アプリケーションまたはサービスを選択することもできる。
【００２０】
サーバ１１０は、メモリ１１４に格納されるレポートを生成するレポート・ゼネレータ１１６を含む。レポートは、例えば公開され自由に利用可能な対応する公開鍵を有する秘密鍵に従って暗号化される。メモリ１１４中に他のレポートが存在する場合、新規レポートは、既存のレポートに取って代わるか、既存レポートに併合するか、または追加することが可能である。
【００２１】
クライアント１００がサーバ１１０にアクセスするときに、クライアントはメモリ１１４中に格納されたレポートのコピーを要求することができる。レポートが転送された後、クライアント１００は、レポート・バリデータ１０６を使って、該レポートを解読し、サーバ１１０を信頼可能と判断するか、もしくはサーバを拒絶することができる。バリデータ１０６は、当該サイトがどのくらい安全かのアセスメントを生成し、必要に応じ、スキャナ１０８をさらにトリガして、サーバ１１０のクライアント側でのスキャンを行うことができる。レポート・バリデータ１０６は、例えば、ウェブ・ブラウザまたはウェブ・ブラウザ・プラグインの一部として形成すればよい。レポート・バリデータ１０６がレポートを開けない場合、例えばキャッシュ・ポイズニングを使った攻撃者による偽造攻撃など、を示す警告を生成することが可能である。開くことができれば、レポートはクライアント側ユーザに利用できるようになり、ユーザはこれによりサーバ１１０のセキュリティ状態を正当に評価することができる。
【００２２】
信頼可能な通信チャネル（例えば、公開鍵認証）を用い、クライアント１００にサーバ側セキュリティ・レポートをエクスポートすることによって、エンド・ユーザが、サーバ１１０または特定のウェブ・アプリケーションもしくはそれらが在るサーバとやり取りするかどうかを決めることが可能になる。これは、人手によるレポートのスキャンによって直接に、または、例えばブラウザ・プラグイン中に組み込まれた自動アセスメント・ポリシーを使って行うことができる。さらに、サーバ側レポートからの情報が、サーバ１１０のクライアント側でのスキャンをガイド／特定化することが可能である。例えば、サーバ側はクロスサイト・スクリプティング攻撃に対し脆弱でないことがレポートに示されていれば、クライアント側スキャナ１０８が、かかるペイロードを試す必要はない。同様に、レポートが、サーバ１１０の特定のモジュールでの構造化照会言語（ＳＱＬ：ｓｔｒｕｃｔｕｒｅｄ  ｑｕｅｒｙ  ｌａｎｇｕａｇｅ）注入の脆弱性を示している場合、クライアント側スキャナ１０８は、当初に予定された予算部分より大きな額を、この脆弱性を明らかにする試みに費やすよう構成することができる。加えて、サーバ側のスキャンとクライアント側のスキャンとを切り離すことによって効率が向上する。サーバ１１０の分析を一回行っておけば、クライアント１００の各々が、モジュール方式でシステム全体（クライアント１００およびサーバ１１０）のセキュリティ状態を査定することができる。
【００２３】
当業者には当然のことながら、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化することができる。したがって、本発明の態様は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、あるいは、ソフトウェア態様およびハードウェア態様を組み合わせた実施形態の形を取ることができ、これらは一般に本明細書では全て「回路」、「モジュール」、または「システム」と称することがある。さらに、本発明の態様は、コンピュータ可読プログラム・コードが具現化されている一つ以上のコンピュータ可読媒体（群）中に具現化されたコンピュータ・プログラム製品の形を取ることも可能である。
【００２４】
一つ以上のコンピュータ可読媒体（群）の任意の組み合わせを用いることができる。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外的、または半導体の、システム、装置、またはデバイス、あるいはこれらの任意の適切な組み合わせであり得る。コンピュータ可読ストレージ媒体のさらに具体的な例（非包括的リスト）には、一つ以上の配線を有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、読み取り専用メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、消去およびプログラム可能な読み取り専用メモリ（ＥＰＲＯＭ：ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙまたはフラッシュ・メモリ）、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、光ストレージ・デバイス、磁気ストレージ・デバイス、または前述の任意の適切な組み合わせが含まれよう。本明細書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムを、包含または格納できる任意の有形媒体であり得る。
【００２５】
コンピュータ可読信号媒体には、例えばベースバンド中にまたは搬送波の一部として具現化されたコンピュータ可読プログラム・コードを有する、伝播データ信号を含めることができる。かかる伝播信号は、以下に限らないが、電磁気的、光学的、またはこれらの任意の適切な組み合わせを含め、任意のさまざまな形態を取ることが可能である。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではないが、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムの通信、伝播、または伝送が可能な任意のコンピュータ可読媒体であり得る。
【００２６】
コンピュータ可読媒体上に具現化されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバ・ケーブル、ＲＦなど、または前述の任意の適した組み合わせを含め、任意の適切な媒体を用いて送信することができる。本発明の態様のオペレーションを実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および、“Ｃ”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組み合わせで記述することができる。このプログラム・コードは、スタンドアロン・ソフトウェア・パッケージとしてユーザのコンピュータで専ら実行することも、ユーザのコンピュータで部分的に実行することもでき、一部をユーザのコンピュータで一部を遠隔コンピュータで実行することもでき、あるいは遠隔のコンピュータまたはサーバで専ら実行することもできる。後者の場合は、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）または広域ネットワーク（ＷＡＮ：ｗｉｄｅａｒｅａ ｎｅｔｗｏｒｋ）を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することもでき、あるいは（例えばインターネット・サービス・プロバイダを使いインターネットを介し）外部のコンピュータへの接続を行うこともできる。
【００２７】
本発明の実施形態による方法、装置（システム）およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら、本発明の態様が以下に説明される。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロック、および、フローチャート図もしくはブロック図またはその両方中のブロックの組み合わせは、コンピュータ・プログラム命令によって実装することが可能である。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに提供し、そのコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群／動作群を実装するための手段を生成するようにすることができる。
【００２８】
また、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに対し特定の仕方で機能するよう命令することができるコンピュータ可読媒体に格納し、そのコンピュータ可読媒体に格納された命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に特定されている機能／動作を実装する命令群を包含する製造品を作り出せるようにすることができる。さらに、コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードし、そのコンピュータ上、他のプログラム可能装置上、または他のデバイス上で一連のオペレーション・ステップを実行させて、コンピュータ実装のプロセスを作り出し、当該コンピュータ上もしくは他のプログラム可能装置上で実行される命令が、フローチャートもしくはブロック図またはその両方のブロックもしくはブロック群中に特定されている機能群／動作群を実装するためのプロセスを提供するようにすることも可能である。
【００２９】
図面のフローチャートおよびブロック図は、本発明のさまざまな実施形態によるシステム、方法、およびコンピュータ・プログラム製品から可能となる実装のアーキテクチャ、機能性、およびオペレーションを示している。この点に関し、フローチャートまたはブロック図中の各ブロックは、特定の論理機能（群）を実装するための一つ以上の実行可能命令を含む、モジュール、セグメント、またはコードの部分を表し得る。また、一部の別の実装においては、ブロック中に記載された機能が、図面に記載された順序から外れて行われ得ることに留意すべきである。例えば、連続して示された２つのブロックが、関与する機能性に応じて、実際にはほぼ同時に実行されることがあり、時にはこれらのブロックが逆の順序で実行されることもあり得る。さらに、ブロック図もしくはフローチャート図またはその両方の各ブロック、およびブロック図もしくはフローチャート図またはその両方中のブロックの組み合わせは、特定の機能または動作を実施する特殊用途ハードウェア・ベースのシステム、または特殊用途ハードウェアとコンピュータ命令との組み合わせによって実装可能なことにも留意すべきである。
【００３０】
ここで図２を参照すると、サーバ側セキュリティのクライアント側での確認の方法が示されている。ブロック２０２で、サーバ側スキャナ１１８は、指定のサービスおよびウェブ・アプリケーションを含めたサーバ１１０のセキュリティ脆弱性をスキャンする。ブロック２０４で、レポート・ゼネレータ１１６は、スキャナ１１８の検知事項を詳記したレポートを生成する。このレポートは、人間が読めるようにすることも、または、例えば、用いられた特定のサーバ側スキャナ１１８に関連付けられた、コンピュータ可読フォーマットにより書式設定することも可能である。ブロック２０６で、レポート・ゼネレータ１１６は、秘密鍵を使ってレポートを暗号化し、そのレポートをメモリ１１４に格納する。
【００３１】
以下は、レポート・ゼネレータ１１６の実際の実装によって生成されたスキャン・レポートの一例である。
【００３２】
＃１）ＦｒｉｋｉＳｅｒｖｌｅｔ．ｊａｖａ：２３０  ＰａｔｈＴｒａｖｅｒｓａｌ
【００３３】
ＦｒｉｋｉＳｅｒｖｌｅｔ．ｊａｖａの２０９行目で、アプリケーションが、信頼できない値を読み込み、２３０行目で、その値を使ってファイル・オペレーションのパスを決める。
【００３４】
ＦｒｉｋｉＳｅｒｖｌｅｔ．ｊａｖａ：２０９［ｉｎｉｔ］  ｇｅｔＡｔｔｒｉｂｕｔｅを呼び出す
【００３５】
−＞２３０  ＜ｉｎｉｔ＞を呼び出す
【００３６】
＃２）ＦｒｉｋｉＳｅｒｖｌｅｔ．ｊａｖａ：７１  ＰａｔｈＴｒａｖｅｒｓａｌ
【００３７】
ＦｒｉｋｉＳｅｒｖｌｅｔ．ｊａｖａの２０９行目で、アプリケーションが、信頼できない値を読み込み、７１行目で、その値を使ってファイル・オペレーションのパスを決める。
【００３８】
ＦｒｉｋｉＳｅｒｖｌｅｔ．ｊａｖａ：２０９［ｉｎｉｔ］  ｇｅｔＡｔｔｒｉｂｕｔｅを呼び出す
【００３９】
−＞２３１
【００４０】
−＞１７６［ｓｅｔＲｅｄｉｒｅｃｔ］
【００４１】
−＞１８０
【００４２】
−＞１８７［ｓｅｔＢａｓｅＤｉｒ］
【００４３】
−＞１９０
【００４４】
−＞２０２
【００４５】
−＞６１［ｓｅｔＰｏｌｉｃｙ］
【００４６】
−＞６２
【００４７】
−＞６３
【００４８】
−＞６９［ｒｅｓｅｔＰｏｌｉｃｙ］
【００４９】
−＞７１  ＜ｉｎｉｔ＞を呼び出す
【００５０】
＃３）  ＦｒｉｋｉＳｅｒｖｌｅｔ．ｊａｖａ：１９４  ＰａｔｈＴｒａｖｅｒｓａｌ
【００５１】
ＦｒｉｋｉＳｅｒｖｌｅｔ．ｊａｖａの４０１行目でで、アプリケーションが、信頼できないパラメータ値を読み込み、ＦｉｌｅＵｔｉｌｓ．ｊａｖａの１８行目で、その値を使ってファイル・オペレーションのパスを決める。
【００５２】
ＦｒｉｋｉＳｅｒｖｌｅｔ．ｊａｖａ：４０１［ｕｎｃｏｎｆｉｇｕｒｅｄ］  ｇｅｔＰａｒａｍｅｔｅｒを呼び出す
【００５３】
−＞４０４
【００５４】
−＞１８７［ｓｅｔＢａｓｅＤｉｒ］
【００５５】
−＞１９４
【００５６】
−＞  ＦｉｌｅＵｔｉｌｓ．ｊａｖａ：１７［ｅｎｓｕｒｅＤｉｒｅｃｔｏｒｙ］
【００５７】
−＞  １８  ＜ｉｎｉｔ＞を呼び出す
【００５８】
上記のセットの各々は、プログラム中の特定の場所および潜在的脆弱性の種類を特定し、脆弱性がどの程度重大かを判定するために使用可能な文脈情報を提供する。
【００５９】
ブロック２０８で、クライアント１００は、サーバ１１０からのレポートのコピーを要求する。この要求は、特定のサービスまたはアプリケーションに向けたものでもよく、サーバ１１０全体に向けたものでもよい。レポートがクライアント１００に送信された後、ブロック２１０で、そのレポートがレポート・バリデータ１０６によって解読される。ブロック２１２で、レポート・バリデータ１０６は、解読されたレポートに基づいてサーバ側セキュリティを査定する。
【００６０】
ブロック２１０での解読は、例えば、公開鍵認証に従って行われ、レポート・バリデータ１０６は、該レポートを暗号化するのに使われた秘密鍵に関連付けられた公開鍵を取得する。公開鍵は、サーバ側スキャナ１１８のプロバイダまたは第三者プロバイダがサーバ１１０に格納すればよい。
【００６１】
ここで図３を参照すると、サーバ側スキャン・レポートの受信に基づいてさらなるスキャンを実施する方法が示されている。ブロック３０２は、図２の方法を実施し、サーバ１１０にアクセスして、サーバ側スキャナ１１８によって生成されたレポートを取り出す。ブロック３０４はレポートが開けるかどうかを判定する。開けない場合、ブロック３０６が、ブロック３１４でのクライアント側スキャナ１０８によるスキャンに進む前に、デフォルトの設定を用いてユーザに対し警報を発する。レポートを開くことができる場合、ブロック３０８は、サーバ側スキャナ１１８によってチェックされた脆弱性の各々を評価する。
【００６２】
かかる脆弱性の各々に対し、ブロック３１０は、サーバ側スキャナ１１８が脆弱性を検知したかどうかを判定する。サーバ１１０が或る特定の攻撃に対して脆弱でなかった場合、ブロック３１２は、その脆弱性のチェックを省略するようにクライアント側スキャナ１０８を設定する。上記と逆に、レポートが、サーバ１１０が当該攻撃に対し脆弱であったと示している場合、ブロック３１３は、その脆弱性を明らかにすることに追加のリソースを集中するようにクライアント側スキャナ１０８を設定する。これは、所与の検知事項が誤判定のこともあるので行われる。或る脆弱性が事実がどうかを検査することによって、エンド・ユーザが多くの誤った事項を検討する手間を省き、問題の本質に対する洞察およびそれを再現するステップを提供する。サーバ側スキャナ１１８によってチェックされた各脆弱性に対し上記の設定を実施してから、ブロック３１４は、スキャナ１０８を使ってサーバ１１０のクライアント側でのスキャンを開始する。ブロック３１６は、受信レポートおよびローカル・スキャンの結果内容に基づいて、サーバ１１０の使用を続けるかどうかを決定する。前述したように、この決定はユーザによる人手によって行うこともでき、またはセキュリティ・ポリシーに従って自動的に実施することもできる。
【００６３】
例えば、ブロック３１６は、サーバの脆弱性の数または重大度が閾値数を超えていると判定すればよく、その結果、サーバ１１０へのクライアントのアクセスを自動的に制限または全面停止してもよい。このために、各種の脆弱性を様々の段階の重大度スコアに関連付け、それらスコアの合計を閾値と比較することができる。あるいは、クライアント１００は、ハイリスクのサーバ１１０にアクセスしようとするユーザに対しさらなる警告を与え、特に、脆弱性があると分かっているサービスへアクセスしようとしていることをいずれもユーザに通知することが可能である。これは、ユーザに潜在的リスクを知らせ、ユーザが、情報に基づいて決定を行うこと、あるいは、暗号化できるようにするまたは機密性のより低い情報を用いるなど、リスク軽減処置を取ることを可能にする。複数の閾値を用いて、脆弱性の重大度の種々の範囲を定め、ユーザが、サーバ１１０を使用するかどうか、およびどのような修正対策を取るかに関してきめの細かい選択を行うことを可能にできる。
【００６４】
ブロック３１６の修正対策には、例えば、ＪａｖａＳｃｒｉｐｔ（Ｒ）を無効にすること、アプリケーションの実行を阻止すること、およびユーザに進行させるかどうか問い合わせることなどを含めればよい。これらのステップは、ユーザの介入で実施してもよいし、ユーザの介入なしで実施してもよいし、あるいは、前述のように、脆弱性の特定の種類および重大度に特定の処置を関連付けている一連のポリシーに従って自動的に実施させることも可能である。さらに、ブラウザ・プラグインは、一部のリンクが導くページが潜在的に脆弱であると分かっていれば、それらのリンクを無効にしたり、または、ユーザがそのような特定のリンクを訪れようとしたとき警告を発したりすることができる。別の可能な修正対策には、フラッシュ・コンポーネントの実行の阻止または制限がある。
【００６５】
なお、セキュリティ脆弱性に対するサーバ側ウェブ・アプリケーションを保証するためのシステムおよび方法の好適な実施形態（これら実施形態は、限定でなく例示を意図している）について説明してきたが、当業者は、上記の教示を踏まえてこれらに改変および変形を加えることが可能である。したがって、当然ながら、開示された特定の実施形態に変更を加えることができ、それらの変更は添付の特許請求の範囲に示された本発明の範囲内である。特許法によって要求される詳細さおよび特殊性をもって、本発明の諸態様を上記に説明してきたが、請求され、特許証による保護を要求される事項は、添付の特許請求の範囲に記載されている。
【図１】
2015534681.tif 000003
【図２】
2015534681.tif 000004
【図３】
2015534681.tif 000005
【手続補正書】
【提出日】平成27年3月27日(2015.3.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
サーバと通信可能なクライアントが実行するサーバ・セキュリティ検証の方法であって、
一つ以上の脆弱性の各々に対する脆弱性の存在に関する指摘を含みサーバで生成された受信レポートに関連付けられた公開鍵を取得するステップと、
前記公開鍵を用いて前記受信レポートを解読するステップと、
前記解読されたレポートに基づいてサーバ側セキュリティのレベルを判定するステップと、
前記判定されたサーバ側セキュリティのレベルに対応して、前記クライアントでブラウザを再設定するステップと、
を含む方法。
【請求項２】
前記判定されたサーバ側セキュリティのレベルに基づいて特定の脆弱性のスキャンを強化または軽減するように、前記クライアントでスキャニング・モジュールを設定するステップと、
前記スキャニング・モジュールを用い、前記サーバの脆弱性をスキャンするステップと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記レポートで前記サーバに存在しないと指摘された脆弱性のスキャンを省略し、前記レポートで前記サーバに存在すると指摘された脆弱性のスキャンを増加するように、前記スキャニング・モジュールを設定するステップをさらに含む、請求項２に記載の方法。
【請求項４】
サーバ側セキュリティのレベルを判定する前記ステップが、
前記解読されたレポート中に開示された各脆弱性に関連付けられた重大度スコアを合計するステップと、
前記合計された重大度スコアを、最大許容脆弱性重大度を表す閾値と比較するステップと、
をさらに含む、請求項１〜３のいずれかに記載の方法。
【請求項５】
サーバ側セキュリティのレベルを判定する前記ステップが、
前記解読されたレポート中に開示された脆弱性の数をカウントするステップと、
前記脆弱性の数を、最大許容脆弱性カウントを表す閾値と比較するステップと、
をさらに含む、請求項１〜４のいずれかに記載の方法。
【請求項６】
互いに通信可能なサーバとクライアントとが実行するサーバ・セキュリティ検証の方法であって、
前記サーバに位置するスキャニング・モジュールを用い、前記サーバの一つ以上の脆弱性をスキャンするステップと、
前記スキャンの結果に基づいて、前記一つ以上の脆弱性の各々に対する脆弱性の存在に関する指摘を含む、サーバ側セキュリティの暗号化レポートを生成するステップであって、前記暗号化は秘密鍵を用いて実施される、前記生成するステップと、
公開鍵を用い、要求している前記クライアントで前記暗号化レポートのコピーを解読するステップと、
前記クライアントが、前記解読されたレポートに基づいてサーバ側セキュリティのレベルを判定するステップと、
前記クライアントに位置するスキャニング・モジュールを用いて前記サーバの脆弱性をスキャンするステップと、
を含む方法。
【請求項７】
前記判定されたサーバ側セキュリティのレベルに基づいて特定の脆弱性のスキャンを増加または軽減するように、前記クライアントに位置する前記スキャニング・モジュールを設定するステップをさらに含む、請求項６に記載の方法。
【請求項８】
前記レポートで前記サーバに存在しないと指摘された脆弱性のスキャンを省略し、前記レポートで前記サーバに存在すると指摘された脆弱性のスキャンを増加するように、前記スキャニング・モジュールを設定するステップをさらに含む、請求項７に記載の方法。
【請求項９】
サーバ側セキュリティのレベルを判定する前記ステップが、
前記解読されたレポート中に開示された各脆弱性に関連付けられた重大度スコアを合計するステップと、
前記合計された重大度スコアを、最大許容脆弱性重大度を表す閾値と比較するステップと、
をさらに含む、請求項６〜８のいずれかに記載の方法。
【請求項１０】
サーバ側セキュリティのレベルを判定する前記ステップが、
前記解読されたレポート中に開示された脆弱性の数をカウントするステップと、
前記脆弱性の数を、最大許容脆弱性カウントを表す閾値と比較するステップと、
をさらに含む、請求項６〜９のいずれかに記載の方法。
【請求項１１】
サーバと通信可能なクライアントが備えるクライアント・セキュリティ・モジュールであり、
サーバで生成された受信レポートに関連付けられた公開鍵を取得し、前記公開鍵を用いて前記受信レポートを解読し、前記解読されたレポートに基づいてサーバ側セキュリティのレベルを判定するよう構成されたレポート確認モジュールと、
前記判定されたサーバ側セキュリティのレベルに対応して、ブラウザを再設定するよう構成されたプロセッサと、
を含むクライアント・セキュリティ・モジュール。
【請求項１２】
前記受信レポートに基づいて前記サーバの脆弱性をスキャンするよう構成され、前記判定されたサーバ側セキュリティのレベルに基づいて特定の脆弱性のスキャンを強化または軽減するようさらに構成されたスキャニング・モジュールをさらに含む、請求項１１に記載のクライアント・セキュリティ・モジュール。
【請求項１３】
前記スキャニング・モジュールが、前記レポートで前記サーバに存在しないと指摘された脆弱性のスキャンを省略し、前記レポートで前記サーバに存在すると指摘された脆弱性のスキャンを増加するようさらに構成される、請求項１２に記載のクライアント・セキュリティ・モジュール。
【請求項１４】
前記レポート確認モジュールが、前記解読されたレポート中に開示された各脆弱性に関連付けられた重大度スコアを合計し、前記合計された重大度スコアを、最大許容脆弱性重大度を表す閾値と比較するようさらに構成される、請求項１１〜１３のいずれかに記載のクライアント・セキュリティ・モジュール。
【請求項１５】
前記レポート確認モジュールが、前記解読されたレポート中に開示された脆弱性の数をカウントし、前記脆弱性の数を、最大許容脆弱性カウントを表す閾値と比較するようさらに構成される、請求項１１〜１４のいずれかに記載のクライアント・セキュリティ・モジュール。
【請求項１６】
互いに通信可能なサーバ・セキュリティ・モジュール及びクライアント・セキュリティ・モジュールを備えるセキュリティ検証システムであり、
前記サーバ・セキュリティ・モジュールは、
サーバの一つ以上の脆弱性をスキャンするよう構成されたスキャナと、
前記スキャナによって提供された結果に基づいて、サーバ側セキュリティの暗号化レポートを生成するよう構成されたレポート・ゼネレータと、
前記暗号化レポートを、要求しているクライアントに送信するよう構成されたトランスミッタと、
を備え、
前記クライアント・セキュリティ・モジュールは、
サーバで生成された受信レポートを解読し、プロセッサを用い、前記解読されたレポートに基づいてサーバ側セキュリティのレベルを判定するよう構成されたレポート確認モジュールと、
前記サーバの脆弱性をスキャンするよう構成されたスキャニング・モジュールであって、前記スキャニングは、前記判定されたサーバ側セキュリティのレベルに基づいて特定の脆弱性のスキャンを強化または軽減するよう構成される、前記スキャニング・モジュールと、
を備える、
セキュリティ検証システム。
【請求項１７】
前記スキャニング・モジュールが、前記レポートで前記サーバに存在しないと指摘された脆弱性のスキャンを省略するようさらに構成される、請求項１６に記載のセキュリティ検証システム。
【請求項１８】
前記スキャニング・モジュールが、前記レポートで前記サーバに存在すると指摘された脆弱性のスキャンを増加するようさらに構成される、請求項１６に記載のセキュリティ検証システム。
【請求項１９】
前記レポート確認モジュールが、前記解読されたレポート中に開示された各脆弱性に関連付けられた重大度スコアを合計し、前記合計された重大度スコアを、最大許容脆弱性重大度を表す閾値と比較するようさらに構成される、請求項１６〜１８のいずれかに記載のセキュリティ検証システム。
【請求項２０】
前記レポート確認モジュールが、前記解読されたレポート中に開示された脆弱性の数をカウントし、前記脆弱性の数を、最大許容脆弱性カウントを表す閾値と比較するようさらに構成される、請求項１６〜１９のいずれかに記載のセキュリティ検証システム。
【国際調査報告】
2015534681.tif 000006