(57)【特許請求の範囲】
【請求項１】
プロセッサ読取り可能記憶媒体であって、
サーバコンピューティング装置において、クライアントコンピューティング装置に位置するバイナリファイル中のセキュリティの脆弱性に関するビットパターンを含むバイナリ署名を受信し、
前記サーバコンピューティング装置においてセキュリティパッチを受信し、
前記サーバコンピューティング装置によって、前記バイナリ署名に基づいて前記サーバコンピューティング装置から遠隔にある前記クライアントコンピュータに位置する脆弱性のあるバイナリファイルを識別し、および、
前記サーバコンピューティング装置から、前記セキュリティパッチで前記クライアントコンピューティング装置に位置する前記脆弱性のあるバイナリファイルを更新するように構成されたプロセッサ実行可能命令を備え、
前記脆弱性のあるバイナリファイルの識別は、前記バイナリ署名の前記ビットパターンを、前記クライアントコンピューティング装置に位置する複数のバイナリファイルの複数のビットパターンと比較することを含み、
前記脆弱性のあるバイナリファイルの更新は、前記クライアントコンピューティング装置に位置する前記脆弱性のあるバイナリファイルのビットパターンが、前記バイナリ署名の前記ビットパターンに一致する場合に行うことを特徴とするプロセッサ読取り可能記憶媒体。
【請求項２】
前記クライアントコンピューティング装置に位置する前記脆弱性のあるバイナリファイルを更新することは、前記サーバコンピューティング装置から前記クライアントコンピューティング装置に前記セキュリティパッチをインストールすることを含むことを特徴とする請求項１に記載のプロセッサ読取り可能記憶媒体。
【請求項３】
前記受信は、脆弱性のあるファイルを識別するバイナリ署名と、前記脆弱性のあるファイルを修正するように構成されたセキュリティパッチとを前記クライアントコンピューティング装置に配布するように構成された配布サーバから、前記バイナリ署名と前記セキュリティパッチを受信することを含むことを特徴とする請求項１に記載のプロセッサ読取り可能記憶媒体。
【請求項４】
請求項１に記載のプロセッサ読取り可能記憶媒体を備えることを特徴とするサーバ。
【請求項５】
プロセッサ読取り可能記憶媒体であって、
バイナリファイル中のセキュリティの脆弱性を識別するバイナリ署名であって、１つまたは複数のクライアントコンピューティング装置に位置するバイナリファイル中のセキュリティの脆弱性に関するビットパターンを含むバイナリ署名を受信し、
前記バイナリファイル中の前記セキュリティの脆弱性を修正するように構成されたセキュリティパッチを受信し、および、
前記バイナリ署名および前記セキュリティパッチを複数のサーバに配布して、前記複数のサーバの各々が、
前記バイナリ署名に基いて、各サーバから遠隔にある各クライアントコンピューティング装置に位置する脆弱性のあるバイナリファイルを識別し、
前記セキュリティパッチで、前記各クライアントコンピューティング装置に位置する前記脆弱性のあるバイナリファイルを更新することを可能にするように構成されたプロセッサ実行可能命令を備え、
各サーバは、前記バイナリ署名の前記ビットパターンを、前記各クライアントコンピューティング装置に位置する複数のバイナリファイルの複数のビットパターンと比較することによって、前記各クライアントコンピューティング装置に位置する前記脆弱性のあるバイナリファイルを識別し、前記脆弱性のあるバイナリファイルのビットパターンが前記バイナリ署名の前記ビットパターンと一致する場合に前記脆弱性のあるバイナリファイルを更新することを特徴とするプロセッサ読取り可能記憶媒体。
【請求項６】
前記配布は、
前記セキュリティの脆弱性と前記利用可能なパッチとに関する通知を前記複数のサーバそれぞれに送信すること、
前記バイナリ署名および前記セキュリティパッチの送信を求める要求を受信すること、および、
前記要求に応答して前記バイナリ署名および前記セキュリティパッチを送信すること
を含むことを特徴とする請求項５に記載のプロセッサ読取り可能記憶媒体。
【請求項７】
請求項５に記載のプロセッサ読取り可能記憶媒体を備えることを特徴とする配布サーバ。
【請求項８】
プロセッサ読取り可能記憶媒体であって、
サーバから、バイナリファイル中のセキュリティの脆弱性に関するビットパターンを含むバイナリ署名を受信し、
前記バイナリ署名の前記ビットパターンを、クライアントコンピュータに位置する複数のバイナリファイルの複数のビットパターンと比較し、
前記クライアントコンピュータに位置するバイナリファイルのビットパターンが、前記バイナリ署名の前記ビットパターンと一致する場合に、セキュリティパッチを求める要求を前記クライアントコンピュータから前記サーバに送信し、
前記サーバから前記セキュリティパッチを受信し、および、
前記セキュリティパッチで前記バイナリファイルを、前記クライアントコンピュータ上で更新するように構成されたプロセッサ実行可能命令を備え
ることを特徴とするプロセッサ読取り可能記憶媒体。
【請求項９】
請求項８に記載のプロセッサ読取り可能記憶媒体を備えることを特徴とするクライアントコンピュータ。
【請求項１０】
サーバからクライアントコンピュータにおいて、バイナリファイル中のセキュリティの脆弱性に関するビットパターンを含むバイナリ署名を受信すること、
前記バイナリ署名の前記ビットパターンを、前記クライアントコンピュータ上の複数のバイナリファイルの複数のビットパターンと比較して、脆弱性のあるバイナリファイルを前記クライアントコンピュータ上で探すこと、
前記クライアントコンピュータ上のバイナリファイルのビットパターンが、前記バイナリ署名の前記ビットパターンと一致する場合に、前記サーバにセキュリティパッチを要求すること、
前記クライアントコンピュータからの前記セキュリティパッチを求める前記要求に応答して、前記サーバから前記クライアントコンピュータにおいて前記セキュリティパッチを受信すること、および、
前記サーバから受信した前記セキュリティパッチで前記脆弱性のあるバイナリファイルを修正すること
を備えることを特徴とする方法。
【請求項１１】
前記修正することは、前記セキュリティパッチを前記クライアントコンピュータにインストールすることを含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記バイナリファイルは、
オペレーティングシステム、
アプリケーションプログラムファイル、および、
データファイル
からなるグループから選択されることを特徴とする請求項１０に記載の方法。
【請求項１３】
前記クライアントコンピュータの記憶媒体は、
ハードディスク、
磁気フロッピー（登録商標）ディスク、
光ディスク、
フラッシュメモリカード、
電気的に消去可能なプログラム可能読み取り専用メモリ、および、
ネットワーク接続ストレージ
からなるグループから選択されることを特徴とする請求項１０に記載の方法。
【請求項１４】
スキャン／パッチサーバが、配布サーバから、バイナリファイル中のセキュリティの脆弱性に関するビットパターンを含むバイナリ署名およびセキュリティパッチを受信すること、
前記スキャン／パッチサーバが、前記バイナリ署名の前記ビットパターンを、クライアントコンピュータ上の複数のバイナリファイルの複数のビットパターンと比較して、脆弱性のあるバイナリファイルを前記クライアントコンピュータ上で探すこと、および
前記クライアントコンピュータ上のバイナリファイルのビットパターンが、前記バイナリ署名の前記ビットパターンと一致する場合に、前記スキャン／パッチサーバが、前記セキュリティパッチで前記クライアントコンピュータ上の前記脆弱性のあるバイナリファイルを修正すること
を備えることを特徴とする方法。
【請求項１５】
クライアントコンピュータにおいて、サーバから、バイナリファイル中のセキュリティの脆弱性に関するビットパターンを含むバイナリ署名を受信する手段と、
前記バイナリ署名の前記ビットパターンを、前記クライアントコンピュータに位置する複数のバイナリファイルの複数のビットパターンと比較して、前記クライアントコンピュータに位置する脆弱性のあるバイナリファイルを探す手段と、
前記クライアントコンピュータ上のバイナリファイルのビットパターンが、前記バイナリ署名の前記ビットパターンと一致する場合に、前記サーバにセキュリティパッチを要求する手段と、
前記セキュリティパッチを求める前記要求に応答して、前記サーバから前記セキュリティパッチを受信する手段と、
前記サーバから受信した前記セキュリティパッチで前記脆弱性のあるバイナリファイルを修正する手段と
を備えることを特徴とするクライアントコンピュータ。
【請求項１６】
配布サーバから、バイナリファイル中のセキュリティの脆弱性に関するビットパターンを含むバイナリ署名とセキュリティパッチを受信する手段と、
クライアントコンピュータをスキャンして、前記バイナリ署名の前記ビットパターンを、前記クライアントコンピュータ上の複数のバイナリファイルの複数のビットパターンと比較する手段と、
前記クライアントコンピュータ上のバイナリファイルのビットパターンが前記バイナリ署名の前記ビットパターンと一致する場合に、前記セキュリティパッチで前記クライアントコンピュータ上の脆弱性のあるバイナリファイルを修正する手段と
を備えることを特徴とするスキャン／パッチサーバ。
【請求項１７】
コンピュータであって、
複数のバイナリファイルを含むバイナリ情報を保持するように構成された記憶媒体と、
サーバから、バイナリファイル中のセキュリティの脆弱性に関するビットパターンを含むバイナリ署名を受信し、前記記憶媒体に保持された前記バイナリ情報をスキャンして、前記バイナリ署名の前記ビットパターンを前記バイナリ情報の前記複数のバイナリファイルの複数のビットパターンと比較するように構成されたスキャンモジュールと、
前記バイナリ情報の前記バイナリファイルのビットパターンが前記バイナリ署名のビットパターンと一致する場合に、前記サーバにセキュリティパッチを要求し、前記サーバからの前記セキュリティパッチをインストールするように構成されたパッチモジュールと
を備えることを特徴とするコンピュータ。
【請求項１８】
前記バイナリ情報は、
オペレーティングシステム、
アプリケーションプログラムファイル、および、
データファイル
からなるグループから選択されることを特徴とする請求項１７に記載のコンピュータ。
【請求項１９】
コンピュータであって、
複数のバイナリファイルを保持するように構成された記憶媒体と、
バイナリファイル中のセキュリティの脆弱性に関するビットパターンを含むバイナリ署名をサーバから受信し、前記記憶媒体に保持された前記複数のバイナリファイルをスキャンして、前記バイナリ署名の前記ビットパターンを前記複数のバイナリファイルの複数のビットパターンと比較するように構成されたセキュリティパッチモジュールとを備え、
前記セキュリティパッチモジュールは、前記バイナリファイルのビットパターンが前記バイナリ署名の前記ビットパターンと一致する場合に、前記サーバにセキュリティパッチを要求し、前記セキュリティパッチを、前記バイナリ署名の前記ビットパターンと一致するビットパターンを含むバイナリファイルに適用するようにさらに構成されることを特徴とするコンピュータ。
【請求項２０】
データベースと、
バイナリファイル中のセキュリティの脆弱性に関するビットパターンを含むバイナリ署名と、セキュリティパッチを受信し、前記バイナリ署名と前記セキュリティパッチを前記データベースに記憶し、前記バイナリ署名と前記セキュリティパッチを複数のサーバに配布するように構成された配布モジュールと
を備え、
前記バイナリ署名の配布は、前記複数のサーバのそれぞれが、
前記複数のサーバから遠隔にある各クライアントコンピュータ上に位置する脆弱性のあるバイナリファイルを前記バイナリ署名に基いて識別し、
前記セキュリティパッチで、前記各クライアントコンピュータ上に位置する前記脆弱性のあるバイナリファイルを更新することを可能にし、
前記複数のサーバのそれぞれは、前記バイナリ署名の前記ビットパターンを前記各クライアントコンピュータ上に位置する複数のバイナリファイルの複数のビットパターンと比較することによって前記脆弱性のあるバイナリファイルを識別し、前記脆弱性のあるバイナリファイルのビットパターンが前記バイナリ署名の前記ビットパターンと一致する場合に前記脆弱性のあるバイナリファイルを更新することを特徴とする配布サーバ。
【請求項２１】
前記配布モジュールは、前記バイナリ署名と前記セキュリティパッチを求める要求をサーバから受信し、前記要求に応答して前記バイナリ署名と前記セキュリティパッチを前記サーバに配布するように構成されることを特徴とする請求項２０に記載の配布サーバ。
【請求項２２】
サーバであって、
バイナリファイル中のセキュリティ上の脆弱性に関連付けられたビットパターンを含むバイナリ署名と、
前記バイナリファイル中の前記セキュリティ上の脆弱性を修正するように構成されたセキュリティパッチと、
記憶媒体として実装され、前記バイナリ署名と前記セキュリティパッチを記憶するように構成されたデータベースと、
前記サーバから遠隔にあるクライアントコンピュータ上の複数のバイナリファイルをスキャンし、前記バイナリ署名の前記ビットパターンを前記複数のバイナリファイルの複数のビットパターンをと比較して、前記バイナリファイルのビットパターンが前記バイナリ署名の前記ビットパターンと一致する場合に、前記セキュリティパッチで前記クライアントコンピュータ上の前記バイナリファイルを更新するように構成されたスキャンモジュールと
を備えることを特徴とするサーバ。
【請求項２３】
前記スキャンモジュールは、配布サーバから前記バイナリ署名と前記セキュリティパッチを受信し、前記バイナリ署名と前記セキュリティパッチを前記データベースに記憶するように構成されることを特徴とする請求項２２に記載のサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般的には、ファイルのパッチに関し、より詳細には、分散した異種のコンピューティング環境において脆弱性のあるバイナリプログラムファイルのセキュリティパッチを提供する、自動的、包括的、確実な、および回帰をしない（regression-free）方法に関する。
【背景技術】
【０００２】
ソフトウェア開発は、継続的なプロセスであり、これにより、公衆に最初に発売されたソフトウェア製品を、ソフトウェア開発者／ベンダからの改訂を通じて継続的に更新することができる。ソフトウェアの改訂は、典型的には、ユーザのコンピュータにインストールするためにベンダからダウンロードされる、またはベンダから注文される、いわゆる「サービスパック」としてソフトウェアベンダから分配される。サービスパックは、典型的には、製品が最初に発売されて以降、または前回のサービスパックの発売以降に、プログラムコードに発見された問題（すなわち「バグ」）を修復するプログラムの修正（例えば、オペレーティングシステム、アプリケーションプログラムなどの）を含む。
【０００３】
プログラムバグの修正を含む他に、サービスパックは、プログラムファイルに発見された脆弱性を修復するために開発されたセキュリティパッチも含むことができる。ソフトウェア製品の発売後に発見されたプログラムの脆弱性は、ハッカーあるいはウィルスによる攻撃という重大なセキュリティ上の脅威を、世界規模で呈する恐れがある。従って、脆弱性が発見されると、脆弱性のあるソフトウェアを有するコンピュータにセキュリティバッチを迅速かつ広範に配布し、インストールすることが最重要事項となる。理論的には、そのような迅速で広範なセキュリティパッチの配布を実現するためにサービスパックを使用することは、効果的である。例えば、ソフトウェアベンダが脆弱性を発見し、セキュリティパッチを開発する場合は、パッチを、ベンダのウェブサイトの最新のサービスパックに掲載して、ユーザが直ちにダウンロードし、インストールできるようにすることができる。このパッチをインストールすれば、発見された脆弱性を利用しようとする大半のハッカーとウィルスを妨げることができる。しかし、システム管理者とその他のソフトウェア製品ユーザは、現在、セキュリティパッチにアクセスし、インストールすることに関して、いくつかの欠点および／または問題に直面している。これら問題は、典型的には、パッチを開発したベンダが意図するよりも、パッチの配布が大幅に低下する結果となる。その結果、世界中の多くのコンピュータの脆弱性は、パッチで修復されないままになり、このようなコンピュータが大きな危険性にさらされる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
セキュリティパッチにアクセスし、インストールすることに伴う問題点の１つは、コンピュータが既知の脆弱性を有するソフトウェアを実行しているかどうかを検出する現在の方法は、そのコンピュータがアクティブに使用され、およびそのコンピュータの関与を必要とする。例えば、現在利用できる方法は、コンピュータ上の特定バージョンのソフトウェア製品を（例えば、セキュリティパッチを用いて）、更新する必要があるかどうかを判定することができる。しかし、この判定には、コンピュータでアクティブに実行されているソフトウェア製品のみが含まれる。コンピュータでアクティブに実行されていない補助的なオペレーティングシステムおよびアプリケーションは考慮されず、従って、認識されず、修復されないままになるセキュリティ上の脆弱性を有する可能性がある。コンピュータでアクティブに実行されている製品について、ユーザは、利用可能な更新のリストを調べ、インストールする更新を選択することができる。更新の中には、既知のセキュリティ上の脆弱性からコンピュータを保護するために設計された極めて重要な更新もある。各種の更新は、ユーザがコンピュータを再起動しなければインストールが完了しない。加えて、ユーザが更新をアクティブに選択し、インストールしなければならない。こうした理由およびその他の理由のため、セキュリティパッチにアクセスし、インストールするための現在の方法は、効果的であるとは言えない。
【０００５】
セキュリティパッチにアクセスし、インストールする際の別の問題点は、セキュリティパッチがコンピュータで必要であるか否かを知ることである。時には、ユーザが、自身のコンピュータが脆弱なソフトウェアを実行していることを知ることが難しい場合がある。さらに、コンピュータが既知の脆弱性を持つソフトウェアを実行しているどうかを検出する現在の方法は、脆弱性があることが知られているソフトウェア製品の特定の構成を検出できない場合がある。例えば、一部のソフトウェア製品の共用バージョンは、他の製品の一部として配布される場合がある。従って、ある製品の共用バージョンは、その製品の完全バージョンと同じ脆弱性を含む可能性があるにも関わらず、共用バージョンは、セキュリティパッチによる更新を必要としない製品として認識されない場合がある。従って、セキュリティ上の脆弱性があることが分かっているソフトウェア製品の共用バージョンは、しばしば修正されないままになる。
【０００６】
セキュリティパッチにアクセスし、インストールすることに伴う他の問題は、このようなパッチを配信する従来の「サービスパック」方法に関する。サービスパックをダウンロードし、インストールすることは、時間を要し、多くのシステム管理者が単にそれを行う時間を持たない手動で行われるプロセスである。従って、管理者がセキュリティパッチをインストールする意思があるとき、セキュリティパッチの発売から、所与のシステムにインストールされるまで、数週間、数ヶ月または数年かかる。従って、セキュリティ上の脆弱性を通じた攻撃の危険性は、このようなシステムにおいて、ソフトウェアベンダがセキュリティパッチを発行してから長時間が経過するまで緩和されない可能性がある。
【０００７】
さらに、システム管理者は、しばしば、関連するセキュリティの危険性を理解していても、セキュリティパッチを含むサービスパックをダウンロードおよびインストールしないことを選択することがある。この理由は、サービスパックをインストールすること自体が、システムの振る舞いに望まない変化を導入しうるシステム回帰の危険性を伴うためである。管理者はしばしば、システムが要求通り機能するようにシステムをデバッグすることに多大な時間と労力を注ぐ。しかし、先に述べたように、サービスパックは、以前のバージョンのソフトウェア製品の進化の結果であり、製品のコードベースに対する最新の更新を含む（すなわち、変更の範囲は、セキュリティパッチだけに限定されない）。サービスパック中の最近のコード更新は、意図しない新たな振る舞いをシステムに導入することに加えて、システムに予期しない振る舞いを行わせる未知のバグをシステムに導入する可能性があり、バグは、システム管理者にとって重大な問題を起こす可能性がある。従って、管理者が回帰の危険を望まないために、システムは、しばしば脆弱性のあるプログラムファイルを修復するための重要なセキュリティパッチで更新されないことがある。
【０００８】
このため、自動的、包括的、確実な、および回帰をしない方法で、プログラムファイルのセキュリティの脆弱性のパッチを実施する方法が必要とされる。
【課題を解決するための手段】
【０００９】
自動的、包括的、確実な、および回帰をしないプログラムファイルのセキュリティパッチを記載する。
【００１０】
一実施によれば、脆弱性のバイナリ署名とセキュリティパッチとを受信する。脆弱性のあるバイナリファイルを、脆弱性のバイナリ署名に基づいてコンピュータ上で識別する。コンピュータの脆弱性のあるバイナリファイルを、セキュリティパッチで更新する。
【００１１】
別の実施によれば、バイナリファイル中のセキュリティ上の脆弱性を識別するバイナリ署名を受信する。セキュリティの脆弱性を修正するように構成されたセキュリティパッチも受信する。バイナリ署名とセキュリティパッチを、複数のサーバに配布する。
【００１２】
別の実施によれば、バイナリ署名をサーバから受信し、バイナリ署名を使用してバイナリファイルを検索する。バイナリファイル中にバイナリ署名が見つかった場合には、セキュリティパッチの要求をサーバに送信する。次に、バイナリファイルをセキュリティパッチで更新する。
【００１３】
図面中では同様の構成要素および機能は同じ参照符号を使用して参照する。
【発明を実施するための最良の形態】
【００１４】
（概要）
以下の説明は、バイナリファイル中のセキュリティの脆弱性のパッチを可能にするシステムおよび方法を対象とする。脆弱性のあるバイナリファイルの検出とパッチは、自動的、確実な、回帰をしない、制限のない規模のネットワークにわたり包括的に行われる。これらの利点は、例えば、インターネット上に広く展開されている現在のウィルス対抗基盤を活用することを含む様々な方法で実現することができる。従来のサービスパックとのセキュリティパッチの相違により、バイナリファイル中のセキュリティの脆弱性に対する、回帰をしない修正を生成する能力を提供する。
【００１５】
脆弱性のあるバイナリファイル（例えば、オペレーティングシステム、アプリケーションプログラムなどにおいて）の確実な発見は、セキュリティの脆弱性に関連付けられたバイナリ署名の使用を通じて達成される。バイナリファイル中のセキュリティの脆弱性に関連付けられたバイナリ署名は、このようなセキュリティの脆弱性を修正するために開発されたセキュリティパッチとともに、中央の配布サーバにアップロードされる。配布サーバは、インターネットなど各種のネットワークを通じて広範にバイナリ署名とセキュリティパッチを配布するように構成される。中央の配布サーバを使用して（例えば、インターネットを通じて）ネットワークサーバを更新することにより、制限のない規模の包括的で自動的なパッチの適用が提供される。このような更新を受け取るネットワークサーバは、下位ネットワーク内のクライアントコンピュータをスキャンして、バイナリ署名に従って脆弱性のあるファイルを見つけ、セキュリティの脆弱性があるファイルを有することが判明したコンピュータを、脆弱性のあるファイルを修正する対応するセキュリティパッチを使用して更新する。ネットワークサーバは、クライアントコンピュータと通信して、バイナリ署名とセキュリティパッチをクライアントコンピュータに転送して、スキャンと更新をコンピュータ自体で行うこともできる。複数の入り組んだレベルの下位ネットワークが存在することもできる。
【００１６】
（例示的環境）
図１に、バイナリファイル中のセキュリティの脆弱性の自動的な検出とパッチを実施するのに適した例示的ネットワーク環境１００を示す。例示的ネットワーク環境１００において、中央の配布サーバ１０２は、ネットワーク１０６（ａ）を介して複数のスキャン／パッチサーバ１０４に結合される。スキャン／パッチサーバ１０４は、典型的には、ネットワーク１０６（ｂ）を通じて複数のクライアントコンピュータ１０８（１）〜１０８（ｎ）に結合される。ネットワーク１０６は、様々な従来のネットワークプロトコル（公衆プロトコルおよび／または独自プロトコルを含む）を使用する、様々な従来のネットワークトポロジおよび種類（光ネットワーク、有線および／または無線ネットワークを含む）を表すものとする。ネットワーク１０６は、例えば、インターネットと、１または複数のローカルエリアネットワーク（ＬＡＮ）および／またはワイドエリアネットワーク（ＷＡＮ）の少なくとも一部分を含むことができる。ネットワーク１０６（ａ）および１０６（ｂ）は、インターネットなど同一のネットワークであっても、インターネットと社内ＬＡＮなど互いと分離したネットワークであってもよい。
【００１７】
配布サーバ１０２およびスキャン／パッチサーバ１０４は、典型的には、標準的なウェブサーバとして実装され、それぞれ、デスクトップＰＣ、ノート型または携帯型コンピュータ、ワークステーション、メインフレームコンピュータ、インターネット機器、それらの組合せなどを含む各種の従来型のコンピューティング装置とすることができる。サーバ１０２および１０４の１または複数は、同じ種類の装置であっても、または異なる種類の装置であってもよい。配布サーバ１０２およびスキャン／パッチサーバ１０４を実施する例示的コンピューティング環境については、図７を参照して以下により詳細に説明する。
【００１８】
クライアントコンピュータ１０８は、サーバ１０４と典型的なクライアント／サーバ関係で機能し、複数のクライアント１０８は、要求を受け付けるサーバ１０４に対して要求を行う。クライアントコンピュータ１０８は、デスクトップＰＣ、ノート型または携帯型コンピュータ、ワークステーション、メインフレームコンピュータ、ゲーム機、ハンドヘルドＰＣ、携帯電話または他の無線通信機器、携帯情報端末（ＰＤＡ）、これらの組合せなどを含む、様々な従来のコンピューティング装置とすることができる。クライアントコンピュータ１０８の１または複数は、同じ種類の装置であっても、あるいは異なる種類の装置であってもよい。クライアントコンピュータ１０８を実施するための例示的コンピューティング環境については、図７を参照して以下により詳細に説明する。
【００１９】
一般に、クライアントコンピュータ１０８の脆弱性のあるバイナリファイルの自動的で包括的な検出とパッチは、脆弱性のあるバイナリファイルを識別するバイナリ署名と、脆弱性のあるファイルを修復するように構成されたセキュリティパッチとを含む、配布サーバ１０２を通じて行われる更新を通じて達成される。以下の例示的実施形態との関係で以下により詳細に述べるように、バイナリ署名とセキュリティパッチは、スキャン／パッチサーバ１０４に配布され、スキャン／パッチサーバ１０４は、クライアントコンピュータ１０８に脆弱性のあるバイナリファイルがあるかをアクティブにスキャンして更新するか、または、クライアントコンピュータ１０８が脆弱性のあるバイナリファイルのスキャンとパッチを行えるように、クライアントコンピュータ１０８にバイナリ署名とセキュリティパッチをプッシュする。
【００２０】
（例示的実施形態）
図２に、バイナリファイル中のセキュリティの脆弱性の自動的な検出とパッチを実施するのに適した配布サーバ１０２、スキャン／パッチサーバ１０４、およびクライアントコンピュータ１０８の例示的実施形態を示す。配布サーバ１０２は、配布モジュール２００と、バイナリ署名およびセキュリティパッチを受け取り、保持するデータベース２０２とを含む。データベース２０２を、例えば、携帯型の記憶媒体（図示しないが、図７を参照）を通じて、または、サーバ１０２に結合され、バイナリ署名およびセキュリティパッチをデータベース２０２にアップロードするように構成されたコンピュータ装置（図示せず）を通じるなど、様々な方法によりバイナリ署名およびセキュリティパッチで更新することができる。
【００２１】
データベース２０２が更新される可能性がある典型的なシナリオは、ソフトウェア製品の開発者によって開始されるソフトウェア製品（例えば、オペレーティングシステム、アプリケーションプログラムなど）の調査から開始する。例えば、開発者は、セキュリティのコンサルタント会社を雇って、新しく発売されたソフトウェア製品中のセキュリティの脆弱性を見つけることを試みることができる。セキュリティの脆弱性が、ハッキングあるいはその他の手段を通じてソフトウェア製品中に発見された場合には、製品中の脆弱性のある関数の正確なビットパターンを識別することができる。ビットパターンは、ソフトウェア製品の１コンポーネントである、バイナリファイル中の脆弱性のある部分のバイナリ署名に相当する。
【００２２】
セキュリティ上の脆弱性が発見され、分析されると、その脆弱性を除去する修正を開発することができる。このような修正は、セキュリティパッチと呼ばれ、バイナリの実行ファイルにコンパイルされる改訂後のコードモジュールに相当する。セキュリティパッチを、セキュリティ上の脆弱性があるソフトウェアを実行しているとバイナリ署名を通じて識別されたコンピュータにインストールすることができる。セキュリティパッチをインストールすると、セキュリティ上の脆弱性が修正される。配布サーバ１０２は、ソフトウェア製品ベンダおよびその他が、脆弱性のあるバイナリファイルを修正するように設計されたセキュリティパッチとともに、脆弱性のあるバイナリファイルのバイナリ署名を、データベース２０２に配布のためにアップロードすることができる。
【００２３】
配布モジュール２００は、データベース２０２からネットワーク１０６を介して様々なスキャン／パッチサーバ１０４にバイナリ署名とセキュリティパッチを配布するように構成される。配布モジュール２００は、典型的には、データベース２０２が追加的な署名およびパッチで更新されると、データベース２０２のバイナリ署名とセキュリティパッチを配布するように自動的に機能する。自動的な配布は、例えば、配布モジュール２００からスキャン／パッチサーバ１０４への通信を通じて、更新されたバイナリ署名とセキュリティパッチが入手できる状態であることを通知し、バイナリ署名およびセキュリティパッチの送信を求める要求を待機する、または、更新されたバイナリ署名とセキュリティパッチを、更新を受け付けるように構成されたスキャン／パッチサーバ１０４に自動的に転送することを含む様々な方法で達成することができる。
【００２４】
図２の実施形態では、スキャン／パッチサーバ１０４は、スキャン／パッチモジュール２０４と、バイナリ署名およびセキュリティパッチを受け取り、保持するデータベース２０６とを含む。データベース２０６は、典型的には、スキャン／パッチモジュール２０４と配布サーバ１０２の配布モジュール２００との通信を通じてバイナリ署名およびセキュリティパッチで自動的に更新される。バイナリ署名およびセキュリティパッチでデータベース２０６を更新するのに加えて、スキャン／パッチモジュール２０４は、クライアントコンピュータ１０８にアクセスし、バイナリ署名のためにバイナリファイル２０８をスキャンするように構成される。バイナリファイル２０８のスキャンは、クライアントコンピュータ１０８上に存在する、あるいはクライアントコンピュータ１０８がアクセスできる任意形態の媒体に存在するバイナリファイル中のバイナリ署名を探索することを含むことができる。バイナリファイル２０８は、典型的には、オペレーティングシステムやアプリケーションプログラムファイルなどのコンパイル済みのコンピュータ／プロセッサ読取り可能コードを含む。ただし、バイナリファイル２０８は、クライアントコンピュータ１０８のコンピュータ／プロセッサ読取り可能命令、データ構造、プログラムモジュール、および他のデータを含む任意形態のバイナリ情報であってよいことに留意されたい。
【００２５】
図７の例示的コンピュータ環境を参照する以下の説明で述べるように、クライアントコンピュータ１０８上の媒体は、揮発性および不揮発性の媒体、ならびに取り外し可能および取り外し不能の媒体など、クライアントコンピュータ１０８によるアクセスが可能な任意の利用可能媒体を含むことができる。このようなコンピュータ／プロセッサ読取り可能媒体は、ランダムアクセスメモリ（ＲＡＭ）などの揮発性メモリ、および／または読み取り専用メモリ（ＲＯＭ）などの不揮発性メモリを含むことができる。コンピュータ／プロセッサ読取り可能媒体は、例えば、取り外し不能、不揮発性の磁気媒体の読み書きを行うハードディスクドライブ、取り外し可能、不揮発性の磁気ディスク（例えば、「フロッピー（登録商標）ディスク」）の読み書きを行う磁気ディスクドライブ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、またはその他の光学媒体などの取り外し可能、不揮発性の光ディスクの読み書きを行う光ディスクドライブ、その他の磁気記憶装置、フラッシュメモリカード、電気的に消去可能なプログラム可能読み取り専用メモリ（ＥＥＰＲＯＭ）、ネットワーク接続ストレージなど、他の取り外し可能／取り外し不能、揮発性／不揮発性のコンピュータ記憶媒体も含むことができる。クライアントコンピュータ１０８のコンピュータ／プロセッサ読取り可能命令、データ構造、プログラムモジュール、およびその他のデータを含む任意形態のバイナリファイル２０８の揮発性および不揮発性の記憶を提供する、このようなコンピュータ／プロセッサ読取り可能媒体はすべて、スキャン／パッチモジュール２０４を介したスキャン／パッチサーバ１０４によるスキャンのためにアクセスすることができる。
【００２６】
従って、スキャン／パッチモジュール２０４は、クライアントコンピュータ１０８のバイナリファイル２０８を検索して、セキュリティ上の脆弱性を識別するバイナリ署名がクライアントコンピュータ１０８に置かれたバイナリ情報中にあるかどうかを判定する。バイナリファイル２０８にバイナリ署名のビットパターンが見つかった場合、スキャン／パッチモジュール２０４は、対応するセキュリティパッチをクライアントコンピュータ１０８にインストールすることにより、バイナリファイル２０８中のセキュリティ上の脆弱性を修正するように動作する。クライアントコンピュータ１０８にセキュリティパッチをインストールすることにより、セキュリティ上の脆弱性を含むバイナリファイルまたはバイナリファイルの一部分が上書きされるか、その他の形で除去される。
【００２７】
図３に、バイナリファイル中のセキュリティの脆弱性のパッチを実施するのに適した配布サーバ１０２、スキャン／パッチサーバ１０４、およびクライアントコンピュータ１０８の別の例示的実施形態を示す。概して、図３の実施形態では、サーバ１０４からクライアントコンピュータ１０８にバイナリ署名およびセキュリティパッチがプッシュされる、すなわち再配布され、セキュリティに脆弱性のあるファイルを求めるスキャンと脆弱性のあるファイルのパッチとは、スキャン／パッチサーバ１０４ではなくクライアントコンピュータ１０８によって行われる。
【００２８】
図３の実施形態では、配布サーバ１０２は、図２の実施形態に関して上述した方法と同様に構成される。従って、データベース２０２を、バイナリファイル中のセキュリティ上の脆弱性を識別する新たに発見されたバイナリ署名を含むように更新することができる。データベース２０２を、このようなセキュリティ上の脆弱性を修正するために開発された対応するセキュリティパッチで更新することもできる。
【００２９】
図３のスキャン／パッチサーバ１０２は、図２に関して上述した方法と幾分似た方法で構成される。従って、図３のスキャン／パッチサーバ１０２は、バイナリ署名とセキュリティパッチを受け取り、保持するデータベース２０６を含む。データベース２０６は、典型的には、スキャン／パッチサーバ１０４と配布サーバ１０２間の通信を通じて自動的に新しいバイナリ署名とセキュリティパッチで更新される。ただし、スキャン／パッチサーバ１０４と配布サーバ１０２間の通信は、図２の実施形態に関して上述したようにスキャン／パッチモジュール２０４ではなく再配布モジュール３００を通じて行われる。
【００３０】
再配布モジュール３００は、バイナリ署名とセキュリティパッチでデータベース２０６を更新するのに加えて、クライアントコンピュータ１０８のスキャン／パッチモジュール３０２と通信し、バイナリ署名をクライアントコンピュータ１０８に転送するように構成される。スキャン／パッチモジュール３０２は、バイナリ署名を受け取り、バイナリファイル２０８をスキャンして、クライアントコンピュータ１０８に配置されたバイナリ情報にそのバイナリ署名が存在するかどうかを判定するように構成される。従って、図３のスキャン／パッチモジュール３０２は、図２を参照して上述したスキャン／パッチモジュール２０４と同様に機能する。
【００３１】
バイナリ署名のビットパターンがクライアントコンピュータ１０８のバイナリファイル２０８に見つかった場合には、スキャン／パッチモジュール３０２は、サーバ１０２の再配布モジュール３００に要求を送信する。この要求は、バイナリ署名に一致するセキュリティパッチを再配布モジュール３００からクライアントコンピュータ１０８に送信させる。再配布モジュール３００は、該当するセキュリティパッチをクライアントコンピュータ１０８に送信することにより要求に応答する。スキャン／パッチモジュール３０２は、セキュリティパッチを受け取り、セキュリティパッチをクライアントコンピュータ１０８にインストールすることによりバイナリファイル２０８中のセキュリティ上の脆弱性を修正するように動作する。図２の実施形態と同様に、クライアントコンピュータ１０８にセキュリティパッチをインストールすることにより、発見されたセキュリティ上の脆弱性を含むバイナリファイル、またはバイナリファイルの一部分が上書きされるか、その他の形で除去される。
【００３２】
（例示的方法）
次に、バイナリファイル中のセキュリティの脆弱性の自動的な検出およびパッチを実施する例示的方法について、図４〜６の流れ図を参照して説明する。この方法は、図１〜３に関して説明した上記の例示的実施形態に概ね当てはまる。ここに説明する方法の要素は、例えばＡＳＩＣのハードウェアロジックブロック、またはプロセッサ読取り可能媒体上に定義されたプロセッサ読取り可能命令の実行によるなど、任意の適切な手段によって実行することができる。
【００３３】
本発明で使用する「プロセッサ読取り可能媒体」とは、プロセッサによる使用または実行のために、命令を保持、記憶、通信、伝播、あるいは移送することができる任意の手段である。プロセッサ読取り可能媒体は、これらに限定しないが、電子、磁気、光学、電磁気、赤外線、または半導体によるシステム、装置、デバイス、または伝播媒体などである。プロセッサ読取り可能媒体のより具体的な例には、特に、１または複数の電線を有する電気接続（電気）、携帯型のコンピュータディスケット（磁気）、ランダムアクセスメモリ（ＲＡＭ）（磁気）、読み取り専用メモリ（ＲＯＭ）（磁気）、消去可能なプログラム可能読み取り専用メモリ（ＥＰＲＯＭ、あるいはフラッシュメモリ）、光ファイバ（光学）、書き換え型コンパクトディスク（ＣＤ−ＲＷ）（光学）、および携帯型コンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）（光学）が含まれる。
【００３４】
図４に、バイナリファイル中のセキュリティの脆弱性の自動的な検出およびパッチを実施する例示的方法４００を示す。バイナリファイルは、典型的には、サーバコンピュータによってサービスされるクライアントコンピュータに配置または記憶されるが、サーバコンピュータ自体、あるいはサーバコンピュータからアクセス可能な他のコンピューティング装置に配置してもよい。方法４００のブロック４０２で、バイナリ署名を受信する。バイナリ署名は、実行可能なアプリケーションプログラム、クライアントコンピュータで実行中のオペレーティングシステムなど特定のバイナリファイル中のセキュリティ上の脆弱性に関連付けられたビットパターンである。バイナリ署名は、中央の配布サーバ１０２から下位サーバ１０４により受信される。
【００３５】
ブロック４０４において、セキュリティパッチを受信する。セキュリティパッチは、典型的には、特定のバイナリファイルのセキュリティの脆弱性の修正として開発されたコンパイル済みの実行可能コードである。セキュリティパッチも、中央の配布サーバ１０２から下位サーバ１０４により受信される。ブロック４０６において、バイナリ署名に基づいて、脆弱性のあるバイナリファイルを識別する。脆弱性のあるバイナリファイルの識別は、典型的には、クライアントコンピュータ１０８などのコンピュータの各種媒体に記憶されたバイナリ情報をスキャンし、バイナリ署名中のパターンを媒体で見つかったバイナリ情報と比較することによって達成される。この識別は、例えば、サーバ１０４がクライアントコンピュータにあるすべてのバイナリ情報をスキャンし、比較するなど、様々な方法で行うことができる。脆弱性のあるバイナリファイルの識別は、サーバ１０４からクライアントコンピュータにバイナリ署名をプッシュさせることによって、クライアントコンピュータがスキャンと比較を行えるように達成される。
【００３６】
方法４００のブロック４０８において、セキュリティパッチを使用して脆弱性のあるバイナリファイルを更新する。この更新は、例えば、サーバ１０４がセキュリティパッチをクライアントコンピュータ１０８にインストールすることを含む様々な方法で達成することができる。クライアントコンピュータ１０８がスキャンを行い、脆弱性のあるバイナリファイルを識別した場合には、クライアントコンピュータ１０８は、サーバ１０４からコンピュータ１０８にセキュリティパッチを送信するように要求することができ、この場合はコンピュータ１０８がセキュリティパッチをインストールして脆弱性のあるバイナリファイルを修正することができる。
【００３７】
図５に、バイナリファイル中のセキュリティの脆弱性の自動的な検出とパッチを実施する別の例示的方法５００を示す。方法５００は、概して、セキュリティ上の脆弱性に対応するバイナリ署名と、セキュリティ上の脆弱性を修正するために開発されたセキュリティパッチの配布について説明する。方法５００のブロック５０２において、バイナリファイル中のセキュリティの脆弱性を識別するバイナリ署名を受信する。バイナリ署名は、典型的には、インターネットなどのネットワーク上にある多数のコンピュータに広く配布されている可能性のあるソフトウェア製品のバイナリファイル中にある脆弱性を識別する、新たに発見されたビットパターンとして配布サーバ１０２にアップロードされる。アップロードは、典型的には、配布サーバ１０２に結合されたコンピュータから、または配布サーバ１０２に挿入された携帯型記憶媒体から行われる。ブロック５０４において、セキュリティの脆弱性を修正するように構成されたセキュリティパッチは、バイナリ署名と同じように配布サーバ１０２によって受信される。
【００３８】
ブロック５０６において、バイナリ署名およびセキュリティパッチを、配布サーバ１０２から複数の下位サーバ１０４に配布する。この配布は自動的に行うことができ、様々な方法で実現することができる。例えば、配布サーバ１０２は、アップロードされたバイナリ署名とセキュリティパッチを受け取ると、更新されたバイナリ署名とセキュリティパッチを受信するように構成されたすべての下位サーバ１０４に、ネットワークを介してバイナリ署名とセキュリティパッチを自動的に送信することができる。配布サーバ１０２は、通知をサーバ１０４に送信して、セキュリティ上の脆弱性が発見されたことと、脆弱性を修正するセキュリティパッチを入手できることを通知することもできる。次に、下位サーバ１０４は、そのセキュリティの脆弱性を識別するバイナリ署名とセキュリティパッチを送信するように配布サーバ１０２に要求することができる。要求を受信すると、配布サーバ１０２は、バイナリ署名とセキュリティパッチを要求元のサーバ１０２に転送することができる。
【００３９】
図６に、バイナリファイル中のセキュリティの脆弱性の自動的な検出とパッチを実施する別の例示的方法６００を示す。方法６００のブロック６０２において、クライアントコンピュータ１０８は、サーバ１０４からバイナリ署名を受信する。このバイナリ署名は、クライアントコンピュータ１０８に存在する可能性があるバイナリファイル中のセキュリティ上の脆弱性に関連付けられている。ブロック６０４において、クライアントコンピュータ１０８は、現在コンピュータ１０８が入手できるすべてのバイナリ情報をスキャンし、バイナリ署名中のパターンをそれらのバイナリ情報と比較する。クライアントコンピュータ１０８によってスキャンされるバイナリ情報は、典型的には、コンピュータ／プロセッサ読取り可能命令および／または実行可能命令、データ構造、プログラムモジュール、およびクライアントコンピュータ１０８にとって有用なその他のデータの形態であり、各種タイプの揮発性および不揮発性両方の記憶媒体に存在することができる。
【００４０】
ブロック６０６において、クライアントコンピュータ１０８がバイナリ署名を含むバイナリファイルを見つけた場合には、クライアントコンピュータ１０８は、サーバ１０４に要求を送信してセキュリティパッチを転送させる。ブロック６０８において、クライアントコンピュータ１０８は、セキュリティパッチを受け取り、ブロック６１０において、クライアントコンピュータ１０８は、バイナリ署名中のパターンに一致するバイナリ情報を含むバイナリファイル中のセキュリティ上の脆弱性を修正するためにセキュリティパッチをインストールする。
【００４１】
流れ図と、それら流れ図のブロックに関連する文章により１または複数の方法を説明したが、このブロックは必ずしも説明した順序で行う必要はなく、これに代わる順序で同様の利点が得られることを理解されたい。さらに、これらの方法は排他的ではなく、単独で、または互いと組み合わせて行うことができる。
【００４２】
（例示的コンピュータ）
図７に、図１〜３を参照して上述した配布サーバ１０２、スキャン／パッチサーバ１０４、およびクライアントコンピュータ１０８を実施するのに適した例示的コンピューティング環境を示す。図７には特定の１つの構成を示すが、配布サーバ１０２、スキャン／パッチサーバ１０４、およびクライアントコンピュータ１０８は、この他のコンピューティング構成としても実施することができる。
【００４３】
コンピューティング環境７００は、コンピュータ７０２の形態の汎用コンピューティングシステムを含む。コンピュータ７０２の構成要素は、これらに限定しないが、１または複数のプロセッサまたは処理装置７０４、システムメモリ７０６、およびプロセッサ７０４を含む各種のシステム構成要素をシステムメモリ７０６に結合するシステムバス７０８を含むことができる。
【００４４】
システムバス７０８は、各種のバスアーキテクチャの任意のものを使用したメモリバスまたはメモリコントローラ、ペリフェラルバス、アクセラレーテッドグラフィックポート、プロセッサバスまたはローカルバスを含む数種のバス構造の１または複数を表す。システムバス７０８の一例は、メザニンバスとも称するＰＣＩ（Peripheral Component Interconnects）バスである。
【００４５】
コンピュータ７０２は、典型的には、各種のコンピュータ読取り可能媒体を含む。そのような媒体は、コンピュータ７０２によるアクセスが可能な任意の利用可能媒体でよく、揮発性および不揮発性、取り外し可能および取り外し不能の媒体が含まれる。システムメモリ７０６は、ランダムアクセスメモリ（ＲＡＭ）７１０などの揮発性メモリ、および／または読み取り専用メモリ（ＲＯＭ）７１２などの不揮発性メモリの形態のコンピュータ読取り可能媒体を含む。起動時などにコンピュータ７０２内の要素間の情報転送を助ける基本ルーチンを含んだ基本入出力システム（ＢＩＯＳ）７１４は、ＲＯＭ７１２に記憶される。ＲＡＭ７１０は典型的には、処理装置７０４から即座にアクセスできる、および／または処理装置７０４によって現在操作されているデータおよび／またはプログラムモジュールを保持する。
【００４６】
コンピュータ７２０は、この他の取り外し可能／取り外し不能、揮発性／不揮発性のコンピュータ記憶媒体も含むことができる。例として、図７には、取り外し不能、不揮発性の磁気媒体（図示せず）の読み書きを行うハードディスクドライブ７１６、取り外し可能、不揮発性の磁気ディスク７２０（例えば「フロッピー（登録商標）ディスク」）の読み書きを行う磁気ディスクドライブ７１８、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、あるいは他の光学媒体などの取り外し可能、不揮発性の光ディスク７２４の読み書きを行う光ディスクドライブ７２２を示す。ハードディスクドライブ７１６、磁気ディスクドライブ７１８、および光ディスクドライブ７２２はそれぞれ、１または複数のデータ媒体インタフェース７２６によってシステムバス７０８に接続される。あるいは、ハードディスクドライブ７１６、磁気ディスクドライブ７１８、および光ディスクドライブ７２２は、ＳＣＳＩインタフェース（図示せず）でシステムバス７０８に接続することもできる。
【００４７】
これらのディスクドライブとそれに関連付けられたコンピュータ読取り可能媒体は、コンピュータ７０２のコンピュータ読取り可能命令、データ構造、プログラムモジュール、およびその他のデータの不揮発性の記憶を提供する。この例ではハードディスク７１６、取り外し可能磁気ディスク７２０、および取り外し可能光ディスク７２４を例として挙げるが、磁気カセットまたは他の磁気記憶装置、フラッシュメモリカード、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光学ストレージ、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、電子的に消去可能なプログラム可能読み取り専用メモリ（ＥＥＰＲＯＭ）など、コンピュータによるアクセスが可能なデータを記憶することができる他の種類のコンピュータ読取り可能媒体を利用して例示的コンピューティングシステムおよび環境を実施することもできることを理解されたい。
【００４８】
ハードディスク７１６、磁気ディスク７２０、光ディスク７２４、ＲＯＭ７１２、および／またはＲＡＭ７１０には複数のプログラムモジュールを記憶することができ、これには例としてオペレーティングシステム７２６、１または複数のアプリケーションプログラム７２８、他のプログラムモジュール７３０、およびプログラムデータ７３２が含まれる。このようなオペレーティングシステム７２６、１または複数のアプリケーションプログラム７２８、他のプログラムモジュール７３０、およびプログラムデータ７３２（またはこれらの何らかの組合せ）は、それぞれ、ユーザのネットワークアクセス情報をキャッシュする方式の実施形態を含むことができる。
【００４９】
コンピュータ７０２は、通信媒体として識別される各種のコンピュータ／プロセッサ読取り可能媒体を含むことができる。通信媒体は典型的には、コンピュータ読取り可能命令、データ構造、プログラムモジュール、または他のデータを、搬送波などの変調データ信号またはその他のトランスポート機構として実施し、任意の情報伝達媒体を含む。用語「変調データ信号」とは、信号中に情報を符号化するような形でその特徴の１または複数を設定または変化させた信号を意味する。例として、これらに限定しないが、通信媒体には、有線ネットワークや直接配線接続などの有線媒体と、音響、ＲＦ、赤外線、およびその他の無線媒体などの無線媒体が含まれる。上記の媒体の組合せもコンピュータ読取り可能媒体の範囲に含まれる。
【００５０】
ユーザは、キーボード７３４およびポインティングデバイス７３６（「マウス」など）などの入力装置を介してコンピュータシステム７０２にコマンドと情報を入力することができる。この他の入力装置７３８（具体的には図示せず）としては、マイクロフォン、ジョイスティック、ゲームパッド、衛星受信アンテナ、シリアルポート、スキャナなどが可能である。これらおよびその他の入力装置は、システムバス７０８に結合された入出力インタフェース７４０を介して処理装置７０４に接続されるが、パラレルポート、ゲームポート、あるいはユニバーサルシリアルバス（ＵＳＢ）など他のインタフェースおよびバス構造で接続してもよい。
【００５１】
モニタ７４２あるいは他のタイプの表示装置も、ビデオアダプタ７４４などのインタフェースを介してシステムバス７０８に接続することができる。モニタ７４２に加えて、他の出力周辺装置は、スピーカ（図示せず）およびプリンタ７４６などのコンポーネントを含むことができ、それらは入出力インタフェース７４０を介してコンピュータ７０２に接続することができる。
【００５２】
コンピュータ７０２は、リモートコンピューティング装置７４８などの１または複数のリモートコンピュータとの論理接続を使用するネットワーク環境で動作することができる。例として、リモートコンピューティング装置７４８は、パーソナルコンピュータ、携帯型コンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピアデバイス、またはその他の一般的なネットワークノードである。リモートコンピューティング装置７４８は、コンピュータシステム７０２との関係で本明細書に記載する要素および機能の多くまたはすべてを含むことができる携帯型コンピュータとして図示する。
【００５３】
図では、コンピュータ７０２とリモートコンピュータ７４８間の論理接続は、ローカルエリアネットワーク（ＬＡＮ）７５０および一般的なワイドエリアネットワーク（ＷＡＮ）７５２としている。このようなネットワーキング環境は、オフィス、企業内のコンピュータネットワーク、イントラネット、およびインターネットなどに一般的に見られる。ＬＡＮネットワーキング環境で実施される場合、コンピュータ７０２は、ネットワークインタフェースあるいはアダプタ７５４を介してローカルネットワーク７５０に接続される。ＷＡＮネットワーキング環境で実施される場合、コンピュータ７０２は典型的には、ワイドネットワーク７５２を通じて通信を確立するためのモデム７５６または他の手段を含む。モデム７５６は、コンピュータ７０２の内部にあっても外部にあってもよく、入出力インタフェース７４０または他の適切な機構を介してシステムバス７０８に接続することができる。図のネットワーク接続は例示的なものであり、コンピュータ７０２と７４８間に通信リンクを確立する他の手段を用いることができることは理解されよう。
【００５４】
コンピューティング環境７００で例示するようなネットワーク環境では、コンピュータ７０２との関連で図示するプログラムモジュール、またはその一部は、遠隔のメモリ記憶装置に記憶することができる。例として、リモートアプリケーションプログラム７５８がリモートコンピュータ７４８のメモリ装置に存在する。例示のために、アプリケーションプログラムおよびオペレーティングシステムなどの他の実行可能プログラムコンポーネントは、ここでは別個のブロックとして示すが、これらのプログラムおよびコンポーネントは、様々な時にコンピュータシステム７０２の異なる記憶コンポーネントに存在し、コンピュータのデータプロセッサによって実行されることが認識される。
【００５５】
（結論）
本発明について構造的特徴および／または方法論的動作に固有の術語で説明したが、添付の特許請求の範囲に定義される本発明は必ずしもここに記載する特定の機能または動作に限定されないことを理解されたい。これら特定の特徴および動作は、特許権を請求する本発明を実施する例示的形態として開示される。
【図面の簡単な説明】
【００５６】
【図１】バイナリファイル中のセキュリティの脆弱性の自動的な検出とパッチを実施するのに適した例示的ネットワーク環境の図である。
【図２】バイナリファイル中のセキュリティの脆弱性の自動的な検出とパッチを実施するのに適した配布サーバ、スキャン／パッチサーバ、およびクライアントコンピュータの例示的実施形態の図である。
【図３】バイナリファイル中のセキュリティの脆弱性の自動的な検出とパッチを実施するのに適した配布サーバ、スキャン／パッチサーバ、およびクライアントコンピュータの別の例示的実施形態の図である。
【図４】バイナリファイル中のセキュリティの脆弱性の自動的な検出およびパッチを実施する例示的方法のブロック図である。
【図５】バイナリファイル中のセキュリティの脆弱性の自動的な検出およびパッチを実施する例示的方法のブロック図である。
【図６】バイナリファイル中のセキュリティの脆弱性の自動的な検出およびパッチを実施する例示的方法のブロック図である。
【図７】配布サーバ、スキャン／パッチサーバ、およびクライアントコンピュータを実施するのに適した例示的コンピューティング環境の図である。
【符号の説明】
【００５７】
１００  例示的ネットワーク環境
１０２  配布サーバ
１０４  スキャン／パッチサーバ
１０６  ネットワーク
１０８  クライアント
【図１】
0004652736.tif 000002
【図２】
0004652736.tif 000003
【図３】
0004652736.tif 000004
【図４】
0004652736.tif 000005
【図５】
0004652736.tif 000006
【図６】
0004652736.tif 000007
【図７】
0004652736.tif 000008