(57)【要約】【課題】  インストールされているアプリケーションによって要求されるソフトウェア制御サービスのイネーブル化を提供する。【解決手段】  マシンによって実行されると、前記マシンにインストールされている複数のアプリケーションを検出するアクション（２０４）と、前記インストールされているアプリケーションによって要求される複数のソフトウェア制御サービスを特定するアクション（２０６）と、前記アプリケーションによって要求される前記ソフトウェア制御サービスをイネーブルし、要求されないサービスがディセーブルすることを確実にするアクション（２０８）と、を前記マシンに実行させる命令シーケンスを記憶したマシン可読媒体とする。【選択図】          図２
2006018832.tif 000002
【特許請求の範囲】
【請求項１】
マシンによって実行されると、
前記マシンにインストールされている複数のアプリケーションを検出するアクション（２０４）と、
前記インストールされているアプリケーションによって要求される複数のソフトウェア制御サービスを特定するアクション（２０６）と、
前記アプリケーションによって要求される前記ソフトウェア制御サービスをイネーブルし、要求されないサービスがディセーブルすることを確実にするアクション（２０８）と、
を前記マシンに実行させる命令シーケンスを記憶したマシン可読媒体。
【請求項２】
前記インストールされているアプリケーションによって要求される前記ソフトウェア制御サービスは、少なくとも部分的に、複数の既知のアプリケーションのそれぞれに必要なサービスのリストにアクセスすることによって特定される（２０６）、請求項１記載のマシン可読媒体。
【請求項３】
前記既知のアプリケーションに要求されるサービスの前記リストは、前記列挙されたサービスをイネーブルする際に実行すべき原子的なべき等アクションを含む、請求項２記載のマシン可読媒体。
【請求項４】
前記インストールされているアプリケーションによって要求される前記ソフトウェア制御サービスは、少なくとも部分的に、複数のアプリケーションタイプのそれぞれに必要なサービスのリストにアクセスすることによって特定される（２０６）、請求項１記載のマシン可読媒体。
【請求項５】
前記インストールされているアプリケーションによって要求される前記ソフトウェア制御サービスは、少なくとも部分的に、前記特定されたアプリケーションによって公開されているサービスの１つまたは複数のリストにアクセスすることによって特定される（２０６）、請求項１記載のマシン可読媒体。
【請求項６】
前記アクションそれぞれは、アプリケーションインストール時に、前記検出するアクション（２０４）、前記特定するアクション（２０６）、前記イネーブルするアクション（２０８）およびディセーブルするアクションを起動することをさらに含む、請求項１記載のマシン可読媒体。
【請求項７】
前記アクションそれぞれは、アプリケーションアンインストール時に、前記検出するアクション（２０４）、前記特定するアクション（２０６）、前記イネーブルするアクション（２０８）およびディセーブルするアクションを起動することをさらに含む、請求項１記載のマシン可読媒体。
【請求項８】
前記インストールされているアプリケーションによって要求される複数のソフトウェア制御サービスを特定するアクション（２０６）は、さらなるアプリケーションが前記マシンにインストールされることを受けて、インストールされているアプリケーションによって要求される１つまたは複数のソフトウェア制御サービスをイネーブルする必要がないと判断することを含む、請求項１記載のマシン可読媒体。
【請求項９】
特定のソフトウェア制御サービスは、該特定のソフトウェア制御サービスを要求する、検出されたアプリケーションの起動時にイネーブルされ（２０８）、該特定のソフトウェア制御サービスを要求する、検出されたすべてのアプリケーションが終了したときにディセーブルされる、請求項１記載のマシン可読媒体。
【請求項１０】
方法（２００）であって、
マシンにインストールされている複数のアプリケーションを検出すること（２０４）、
前記インストールされているアプリケーションによって要求される複数のソフトウェア制御サービスを自動的に特定すること（２０６）、および
前記アプリケーションによって要求される前記ソフトウェア制御サービスを自動的にイネーブルし、要求されないサービスがディセーブルすることを確実にすること（２０８）、
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インストールされているアプリケーションによって要求されるソフトウェア制御サービスのイネーブル化に関する。
【背景技術】
【０００２】
コンピュータセキュリティの基本原理は、各サービスが攻撃ベクトルである可能性があるため、必要なソフトウェア制御サービスのみを実行することである。不必要なサービスをディセーブルするために使用されるプロセスは、「ハードニング」プロセスまたは「ロックダウン」プロセスと呼ばれることが多い。
【０００３】
場合によっては、ハードニングは手動で行われる。しかし、手動でのハードニングは労働集約的であり、間違いを起こしやすい。また場合によっては、ハードニングはハードニング／コンフィグレーションスクリプトを介して開始される。しかし、このようなスクリプトが有用なのは通常、マシンのコンフィグレーションが、インストールされているアプリケーションも含め、比較的一定のままである静的な環境に限られる。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ハードニングを特定のマシンに合わせる一方法は、ハードニングプロファイルを介するものである。すなわち、マシンが、複数の異なる役割のうちの１つを持つことができる場合、各役割にハードニングプロファイルを作成することができる。ハードニング中に、マシンの管理者は、マシンの役割を入力することができ、役割に対応するハードニングプロファイルにアクセスしてハードニングプロセスを開始することができる。しかし、動的な環境に置かれているマシンの場合、マシンが持ち得る異なるコンフィグレーションの数は、マシンにインストールされる可能性のあるアプリケーションの数に伴って指数的に増加する。マシンにインストールされる可能性のあるアプリケーションの数が大きい場合、アプリケーションの各順列ごとにハードニングプロファイルを作成することは、困難な作業になり得る。
【課題を解決するための手段】
【０００５】
一実施形態においては、命令シーケンスがマシン可読媒体に記憶される。命令は、マシンによって実行されると、マシンに、１）マシンにインストールされている複数のアプリケーションを特定すること、２）インストールされているアプリケーションによって要求される複数のソフトウェア制御サービスを特定すること、および３）アプリケーションによって要求されるソフトウェア制御サービスをイネーブルし、要求されないサービスがディセーブルされることを確実にすること、を実行させる。
【０００６】
他の実施形態も開示する。
【０００７】
本発明の例示的な目下好ましい実施形態を図面に示す。
【発明を実施するための最良の形態】
【０００８】
本明細書に開示する本発明の概念を説明する土台として、本発明の概念を採用することができる例示的な環境についてまず説明する。このために、図１に、複数のメモリ装置、記憶装置、通信装置、およびＩ／Ｏ装置を備えた、またはこれらに接続されたコンピュータ１００を例として示す。メモリとしては、たとえば、コンピュータ１００に永久的にまたは取り外し可能に取り付けられたランダムアクセスメモリ（ＲＡＭ）や読み取り専用メモリ（ＲＯＭ）を挙げることができる。記憶装置としては、たとえば、コンピュータとともに起動する、直接接続される取り外し可能な、もしくは固定のドライブ、またはサーバ制御記憶装置１０２、ネットワーク接続ストレージ（ＮＡＳ）１０４、もしくはストレージエリアネットワーク（ＳＡＮ）等、コンピュータ１００が接続された遠隔装置を挙げることができる。通信装置としては、たとえば、通信ポート、ネットワークカード、またはモデムを挙げることができる。コンピュータ１００は、ネットワークカードを用いて、様々な記憶装置、計算装置１０８、通信装置、およびＩ／Ｏ装置がさらに常駐し得るネットワーク１０６に接続することができる。Ｉ／Ｏ装置としては、たとえば、キーボード１１０、マウス、個人情報端末（ＰＤＡ）、または電話１１２が挙げられる。いくつかの実施形態においては、コンピュータ１００は、より多数またはより少数の上記装置を備えることができる。
【０００９】
コンピュータ１００は、パーソナルコンピュータ、アプリケーションサーバ、ウェブサーバ、ファイルサーバ、ユーティリティデータセンターもしくはコンピューティンググリッド内のサーバ、スイッチ、またはファイアウォールの形態を含め、様々な形態をとることができる。
【００１０】
コンピュータ１００に接続された各装置は、コンピュータ１００を攻撃する手段を表す。すなわち、悪意を持ったコードまたは命令をコンピュータ１００に提供して、１）コンピュータ１００の動作を妨害する、２）コンピュータ１００がアクセスするデータを破壊する、または３）コンピュータ１００に他のコンピュータおよび装置の動作またはデータを妨害させることができる手段である。
【００１１】
コンピュータ１００が攻撃を受け得る一方法は、ソフトウェア制御サービス（以下「サービス」と呼ぶ）を悪用することによる。サービスは、ミドルウェアアプリケーション、アプレット、スクリプト、ＣＯＭオブジェクト、ＤＣＯＭオブジェクト、またはＣＯＲＢＡオブジェクトの形態を含め、様々な形態を取り得る。サービスの一例は、デバイスがＴＣＰ／ＩＰ、ＮｏｖｅｌｌのＳＰＸ／ＩＰＸ、ＭｉｃｒｏｓｏｆｔのＮｅｔＢＥＵＩ／ＮｅｔＢＩＯＳ、およびＩＢＭのＳＮＡで会話してそれぞれ固有のプロトコルで互いに通信できるようにするプロトコルトランスレータであり、サービスが変換を提供する。サービスの別の例は、たとえば、ＥＢＣＤＩＣでやりとりしているアプリケーションが、ＡＳＣＩＩで書かれたデータベース中のファイルにアクセスできるようにする文字セットコンバータである。サービスの他の例としては、マシン固有のサービス、ＲＰＣサービス、およびメールサービスが挙げられる。
【００１２】
マシンのサービスは、そのサービスの脆弱性を悪用することにより、また不必要なサービスを起動して悪用することによって悪用される可能性がある。したがって、図２に、コンピュータのサービスをイネーブル・ディセーブルする方法２００を示す。
【００１３】
方法２００は、特定のマシン（たとえば、コンピュータ１００）にインストールされている複数のアプリケーションを検出すること（２０４）、およびインストールされているアプリケーションによって要求される複数のソフトウェア制御サービスを特定すること（２０６）を含む。次いで、インストールされているアプリケーションによって要求されるソフトウェア制御サービスがイネーブル化され（２０８）、必要のないサービスはディセーブルされる（または、少なくとも、ディセーブルされることが確認される）。場合によっては、サービスをイネーブルすることは、サービスのコンフィグレーションを設定することを含み得る。
【００１４】
インストールされているアプリケーションは、様々な方法で検出することができる（２０４）。一実施形態においては、インストールされているアプリケーションは、アプリケーションレジストリファイル等のオペレーティングシステムファイルをパーズすることによって検出することができる。別の実施形態においては、インストールされているアプリケーションは、特定のアプリケーションまたはアプリケーションタイプに対応することが分かっているファイルを探すことによって（たとえば、特定の実行可能ファイルまたはコンフィグレーションファイルを探すことによって）検出することができる。
【００１５】
インストールされているアプリケーションを検出すると、方法２００は、インストールされているすべてのアプリケーション、またはそのいくつかのサブセットの検出を試みることができる。たとえば、インストールされているアプリケーションの検出は、「高レベル」アプリケーション（たとえば、ウェブサーバ、データベースアプリケーション、文書処理プロセッサ、または表計算アプリケーション）に限定することが可能である。または、インストールされているアプリケーションの検出は、特定の目的（複数可）を果たすように設計されたアプリケーションに限定することが可能である。インストールされているアプリケーションの検出はまた、「一番最近使用された」、「最も頻繁に使用されている」、さらには「現在実行中」のアプリケーションに限定することも可能である。
【００１６】
検出されたアプリケーションによって要求されるソフトウェア制御サービスも、様々な方法で特定することができる（２０６）。たとえば、要求されるサービスは、複数の既知の各アプリケーションに必要なサービスのリストにアクセスすることによって特定することができる。一実施形態においては、このようなリストは、列挙されたサービスをイネーブルする際に実行すべき原子的なべき等アクションを含む。要求されるサービスはまた、複数のアプリケーションタイプのそれぞれに要求されるサービスのリストにアクセスすることによって、または特定されたアプリケーションによって公開されている１つまたは複数のサービスのリストにアクセスすることによっても特定することが可能である。要求されるサービスは、ネットワークトラフィックのログをとることによっても特定することが可能である。
【００１７】
多くの高レベルサービスは、いくつかはマシンのハードウェアに従属した他のサービスの可用性を必要とするため、従属サービスのリストを方法２００の一環として保持することができる。例として、このリストは、ＸＭＬファイル、ハードコード化されたアルゴリズムとして保持することができる。また、このリストは、マシンの利用可能なハードウェアの解析に応えて生成する必要がある場合もある。
【００１８】
場合によっては、検出されたアプリケーションによって要求されるサービスを特定することは、方法２００が実行されるマシンにさらなるアプリケーションがインストールされることを受けて、検出されたアプリケーションによって要求される１つまたは複数のサービスをイネーブルする必要がないと判断することを含むことができる。アプリケーションがインストールされているマシンのコンフィグレーション設定を受けて、検出されたアプリケーションによって要求される１つまたは複数のサービスをイネーブルする必要がないことも確認することができる。
【００１９】
方法２００の一実施形態においては、ディセーブル可能なソフトウェア制御サービスはすべて、インストールされているアプリケーションを検出する前にディセーブルされる（２０２）。この実施形態は、まずすべてのサービスがイネーブルされ、次いで何かが壊れる（たとえば、アプリケーションが正常に機能しなくなる）までサービスを「オフ」にしていく典型的な手動のハードニングプロセスと異なる。正確に言えば、方法２００のこの実施形態は、すべてのサービスをディセーブルした状態で開始し、次いで、インストールされているアプリケーションが要求するサービスのみを「オン」にする。
【００２０】
方法２００の別の実施形態においては、アプリケーションによって要求されるソフトウェア制御サービスは、特定される際に（または特定された後で）マークが付けられる。次いで、マークの付けられたサービスのみがイネーブルされ、ディセーブル可能な、マークの付いていないサービスはすべてディセーブルされる（または、少なくとも、ディセーブルされることが確認される）。場合によっては、方法２００は、保存されるものとしてまだマークの付けられていないすべてのソフトウェア制御サービスをディセーブルしようとすることから開始することができる。このようにして、方法２００の繰り返しの実行を「すべての」サービスのディセーブルから開始する必要はなく、それまでに保存されるものとしてマークが付けられなかったサービスのディセーブルのみから開始される。
【００２１】
方法２００は、アプリケーションインストール時、アプリケーションアンインストール時、アプリケーションコンフィグレーション再設定時、オペレーティングシステムコンフィグレーション再設定時、またはマシンの起動時を含め、様々なときに起動することができる（好ましくは自動的に起動される）。サービスコンフィグレーションエラーが人為的ミスによって導入された場合、方法２００を起動してマシンを再解析し、エラーを修正することができる。
【００２２】
方法２００はまた、アプリケーションの起動時または終了時に起動することもできる。このようにして、サービスを必要なときにだけイネーブルすることができる。２つ以上のアプリケーションがあるサービスを利用している場合、そのサービスを要求するすべてのアプリケーションが終了したとき、さもなければ、それらアプリケーションがそのサービスをもはや必要としないことが示されたときに、そのサービスは終了することができる。さらなるオプションとして、実質的にいずれのプロセッサ、メモリアクセス、記憶装置アクセス、またはバスアクティビティも、或る時間にわたってアプリケーションによってトリガされなかった場合等、アイドルであるアプリケーションは、それぞれの要求するサービスを終了させることができる。実施態様のオプションとして、アプリケーションのサービスを終了させる前に、実際にアクティビティのない状態が要求されることもある。しかし、アプリケーションが、クロックサイクルをカウントしているだけであるとき、変更のないままであるメモリ値を繰り返し読み出しているとき、またはアプリケーションが「待機」状態にあることを示す他のアクションをとっているとき等、アプリケーションによって実質的にアクティビティが行われていないときにサービスを終了することができる。終了されたサービスは次いで、アプリケーションが、アクティビティの開始を知らせるアクションを行うときに再開することができる。
【００２３】
方法２００がマシン（たとえば、コンピュータ１００）によって実行されることを意図する場合、その方法の各アクションは、マシン可読媒体（たとえば、固定ディスク、ＣＤ−ＲＯＭやＤＶＤ等の取り外し可能ディスク、またはＲＡＭやＲＯＭ等のメモリデバイスのうちの任意の１つまたは複数）に記憶された命令シーケンスで具現することができる。命令は、実行されると、マシンに方法２００の各アクションを実行させる。たとえば、命令シーケンスは、コンピュータシステムの記憶装置（すなわち、媒体）にロードされると、コンピュータシステムのプロセッサに方法２００を実行させる自動またはユーザ起動ユーティリティとして方法２００を実行させることができる。
【００２４】
一実施形態においては、命令シーケンスは、方法２００（または方法２００の各アクション）を起動することができるユーザインタフェースを定義することができる。このようにして、方法２００（または方法２００の各アクション）は、ユーザが方法２００（または方法２００の各アクション）の実行が必要であるとみなすときは常に起動することができる。
【００２５】
一般に、方法２００は、インストールされている各アプリケーションを期待通りに機能できるようにしながら、セキュリティを最大限にすることに役立つ。
【００２６】
多くの従来のハードニングプロセスと異なり、方法２００は一般に、ハードニングプロセスを、実行されるマシンに対してではなく、検出されたアプリケーションに対して適合させる。このアプリケーション中心の手法では、ハードニングがマシンのコンフィグレーション（すなわち、マシンのタイプまたは役割）に広く基づいて行われる従来のハードニングプロセスよりもアプリケーションを容易に除去し移動することができる。アプリケーション中心の手法ではまた、要求されるサービスのＩＤを限定可能な担当エリアに分割することができる。すなわち、各アプリケーションによって要求されるサービスは、アプリケーションに精通した者の支援を受けて、このような詳細についてシステム管理者（任意特定のアプリケーションに精通していない場合がある）に頼る必要なく、特定することが可能である。
【００２７】
方法２００は、従来のハードニングプロセスよりもモジュール式である傾向を有する。すなわち、方法２００により追加のアプリケーションを処理する場合、要求されるサービスのリストを検索または作成する必要があるだけである。マシンの役割は静的に指定されるのではなく、実際にマシンにインストールされているアプリケーションのセットから動的に推測されるため、アプリケーションを１つまたは複数のホスト中心のプロファイルまたは役割に組み込む必要はない。
【００２８】
従来では、アプリケーションは通常、カスタムセキュリティ、さらにはセキュリティのない環境で開発されてきた。このような環境においては、アプリケーション開発者は通常、それぞれのアプリケーションを従属させたい任意のサービスに自由に従属させることができる。アプリケーションがエンドユーザの安全な環境にインストールされる際に、アプリケーションを機能させるために多くのセキュリティ「調整」が繰り返し行われる場合がある。方法２００を使用すれば、エンドユーザが使用するであろうものと同じ適応セキュリティ環境においてアプリケーションを開発することができ、アプリケーション開発者は、アプリケーションが、方法２００を実行するソフトウェアによってアクセス可能な公開リストに従属する各サービスを追加する。何らかの理由により、「開発中のアプリケーション」が機能しなくなった場合は、このような故障の原因に対して積極的に対処することができる。
【００２９】
方法２００は、サービスのイネーブル化をアプリケーション中心の作業に移すことができるだけでなく、サービスのイネーブル化およびコンフィグレーションをアプリケーション自体から取り除くことができる。したがって、サービスのイネーブル化およびコンフィグレーションは、個々の各アプリケーションによってではなく別個に管理可能なハードニングプロセスによって行われる。これにより、セキュリティが向上するだけでなく（たとえば、侵入された可能性のあるアプリケーションが、欲するサービスが何であれ、サービスをイネーブルできないようにすることにより）、サービスをイネーブルしコンフィグレーション設定するプロセスを、技術を様々な用途に再使用することができるスタンドアロンプロセスに移すことも可能である。
【図面の簡単な説明】
【００３０】
【図１】例示的な環境におけるコンピュータを示す。
【図２】図１のコンピュータのソフトウェア制御サービスをイネーブル・ディセーブルする方法を示す。
【符号の説明】
【００３１】
１００  コンピュータ
１０２  サーバ制御記憶装置
１０４  ネットワーク接続ストレージ（ＮＡＳ）
１０６  ネットワーク
１０８  計算装置
１１０  キーボード
１１２  電話
【図１】
2006018832.tif 000003
【図２】
2006018832.tif 000004