(57)【特許請求の範囲】
【請求項１】
ソフトウエア更新を適用した情報処理装置を検査する検査装置であって、
一のソフトウエア更新を適用した情報処理装置の挙動を、前記一のソフトウエア更新を適用した複数回分のソフトウエア更新のそれぞれについて収集する収集部と、
前記複数回分のソフトウエア更新のそれぞれについて収集した複数の挙動を互いに比較して、前記一のソフトウエア更新を適用した後の前記情報処理装置の挙動が正常であるか否かを判断する判断部と、
を備える検査装置。
【請求項２】
当該検査装置は、同一種類の複数の情報処理装置に対して前記一のソフトウエア更新を適用させる更新部を更に備え、
前記収集部は、前記一のソフトウエア更新を適用した同一種類の複数の情報処理装置のそれぞれの挙動を収集する
請求項１に記載の検査装置。
【請求項３】
前記更新部は、システム構成、設定、および動作環境の少なくとも１つが共通する複数の情報処理装置に対して、前記一のソフトウエア更新を適用させる
請求項２に記載の検査装置。
【請求項４】
当該検査装置は、一の情報処理装置の状態をバックアップしてから前記一のソフトウエア更新を適用させ、更に、前記一の情報処理装置をソフトウエア更新前の状態に復元してから前記一のソフトウエア更新を適用させる処理を複数回繰り返す更新部を更に備え、
前記収集部は、前記一の情報処理装置に対して適用された複数回分の前記一のソフトウエア更新のそれぞれについて、前記一の情報処理装置の挙動を収集する
請求項１に記載の検査装置。
【請求項５】
前記更新部は、前記一の情報処理装置の構成を仮想的に実現する仮想マシンのイメージを保存し、保存したイメージの前記仮想マシンに対して前記一のソフトウエア更新を適用させる処理を複数回繰り返し、
前記収集部は、前記仮想マシンの挙動を収集する
請求項４に記載の検査装置。
【請求項６】
当該検査装置は、一の情報処理装置に対して前記一のソフトウエア更新を適用させるとともに、前記一のソフトウエア更新の前における前記一の情報処理装置の処理を仮想的に実現する仮想マシンに対して前記一のソフトウエア更新を適用させる更新部を更に備え、
前記収集部は、前記一のソフトウエア更新を適用した前記一の情報処理装置の挙動、および、前記一のソフトウエア更新を適用した前記仮想マシンの挙動を収集する
請求項１に記載の検査装置。
【請求項７】
前記更新部は、複数の情報処理装置を備える情報システムにおける一部の情報処理装置に前記一のソフトウエア更新を適用させ、前記判断部により前記一のソフトウエア更新を適用した前記一部の情報処理装置の挙動が正常であると判断されたことを条件として、前記情報システムにおける他の情報処理装置に前記一のソフトウエア更新を適用させる
請求項２から６の何れか１項に記載の検査装置。
【請求項８】
前記判断部は、前記一部の情報処理装置に前記一のソフトウエア更新を適用した後の挙動が正常であるか否かの判断基準から変更した判断基準により、前記他の情報処理装置に前記一のソフトウエア更新を適用した後の挙動が正常であるか否かを判断する
請求項７に記載の検査装置。
【請求項９】
前記判断部は、前記一のソフトウエア更新を適用してから、少なくともソフトウエア更新により挙動の変化が現れるまで、前記複数回分のソフトウエア更新のそれぞれについて収集した複数の挙動を互いに比較する
請求項１から８の何れか１項に記載の検査装置。
【請求項１０】
前記収集部は、前記情報処理装置が送受信するデータの振る舞いを前記情報処理装置の挙動として収集する
請求項１から９の何れか１項に記載の検査装置。
【請求項１１】
前記収集部は、前記情報処理装置が実行するプログラムおよび関数の振る舞いを前記情報処理装置の挙動として収集する
請求項１から９の何れか１項に記載の検査装置。
【請求項１２】
前記収集部は、前記情報処理装置がメモリに対して書き込みおよび読み出しをするデータの振る舞いを前記情報処理装置の挙動として収集する
請求項１から９の何れか１項に記載の検査装置。
【請求項１３】
前記収集部は、前記情報処理装置を構成するリソースの状態の振る舞いを前記情報処理装置の挙動として収集する
請求項１から９の何れか１項に記載の検査装置。
【請求項１４】
前記収集部は、前記情報処理装置内におけるシステムコールの呼び出しの振る舞いを前記情報処理装置の挙動として収集する
請求項１から９の何れか１項に記載の検査装置。
【請求項１５】
前記収集部は、前記情報処理装置が制御する機器の物理量の振る舞いを前記情報処理装置の挙動として収集する
請求項１から９の何れか１項に記載の検査装置。
【請求項１６】
前記情報処理装置のそれぞれに対応して設けられ、対応する情報処理装置が制御する機器または対応する情報処理装置自体の動作により影響する物理量の振る舞いを検出する検出部を更に備え、
前記収集部は、一のソフトウエア更新を適用した情報処理装置に対応して設けられた前記検出部からパラメータの振る舞いを取得する
請求項１５に記載の検査装置。
【請求項１７】
ソフトウエア更新を適用した情報処理装置を検査装置により検査する検査方法であって、
前記検査装置の収集部が、一のソフトウエア更新を適用した情報処理装置の挙動を、前記一のソフトウエア更新を適用した複数回分のソフトウエア更新のそれぞれについて収集する収集ステップと、
前記検査装置の判断部が、前記複数回分のソフトウエア更新のそれぞれについて収集した複数の挙動を互いに比較して、前記一のソフトウエア更新を適用した後の前記情報処理装置の挙動が正常であるか否かを判断する判断ステップと、
を備える検査方法。
【請求項１８】
コンピュータを請求項１から１６の何れか１項に記載の検査装置として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウエア更新を適用した情報処理装置を検査する検査装置、システムおよびプログラムに関する。
【背景技術】
【０００２】
複数の情報処理装置がネットワークに接続されたコンピューティングシステムが知られている。コンピューティングシステムにおいては、複数の情報処理装置のそれぞれに対して、ソフトウエアのバージョンアップおよび設定変更等の更新が随時行われる。
【０００３】
このようなコンピューティングシステムでは、情報処理装置に対して不正なアクセス（例えば外部からの不正者による進入およびマルウエアによる攻撃等）があるかどうかを監視している。そして、このようなコンピューティングシステムでは、不正なアクセスを検知した場合、その不正なアクセスの排除等をする。
【０００４】
非特許文献１  Li, P., Gao, D., & Reiter, M.、 "Automatically Adapting a Trained Anomaly Detector to Software Patches."、 Lecture Notes in Computer Science、 Volume 5758/2009、 2009、 P.142-160
【０００５】
非特許文献２  Stavrou, A., Cretu-Ciocarlie, G. F., Locasto, M. E., & Stolfo, S. J.、 "Keep your friends close: the necessity for updating an anomaly sensor with legitimate environment changes."、 Proceedings of the 2nd ACM workshop on Security and artificial intelligence、 2009、p.29-46
【発明の概要】
【発明が解決しようとする課題】
【０００６】
コンピューティングシステムに対する不正アクセスの中に、有害な動作をするソフトウエアおよびコードであるマルウエアによる攻撃がある。マルウエアの中には、情報処理装置にソフトウエア更新を適用したタイミングで攻撃を開始するものが存在する。
【０００７】
このようなタイミングでマルウエアが攻撃を開始すると、不正アクセスの検知システムが、そのマルウエアによる不正な振る舞いを正当なソフトウエア更新によって生じる振る舞いの変化であると誤って判断してしまう場合がある。反対に、このようなマルウエアの検知感度を敏感に設定すると、情報処理装置に対する正当なソフトウエア更新によって生じる振る舞いの変化を、マルウエアによる不正な振る舞いであると誤って検知してしまう場合もある。従って、コンピューティングシステムでは、不正アクセスによる攻撃を、情報処理装置に対して行われる正当なソフトウエア更新から区別して検知できる必要があった。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明の第１の態様においては、ソフトウエア更新を適用した情報処理装置を検査する検査装置であって、一のソフトウエア更新を適用した情報処理装置の挙動を、複数回分のソフトウエア更新のそれぞれについて収集する収集部と、前記複数回分のソフトウエア更新のそれぞれについて収集した複数の挙動を互いに比較して、前記一のソフトウエア更新を適用した後の前記情報処理装置の挙動が正常であるか否かを判断する判断部と、を備える検査装置、検査方法およびプログラムを提供する。
【０００９】
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではない。また、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【図面の簡単な説明】
【００１０】
【図１】本実施形態に係るコンピューティングシステム１０の機能構成を示す。
【図２】本実施形態に係るコンピューティングシステム１０における処理フローを示す。
【図３】情報処理装置１２の挙動を複数回分のソフトウエア更新のそれぞれについて収集する方法の第１例を示す。
【図４】情報処理装置１２の挙動を複数回分のソフトウエア更新のそれぞれについて収集する方法の第２例を示す。
【図５】情報処理装置１２の挙動を複数回分のソフトウエア更新のそれぞれについて収集する方法の第３例を示す。
【図６】本実施形態に係るコンピュータ１９００のハードウエア構成の一例を示す。
【発明を実施するための形態】
【００１１】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１２】
図１は、本実施形態に係るコンピューティングシステム１０の機能構成を示す。本実施形態に係るコンピューティングシステム１０は、一例として、工業システムおよびインフラストラクチャ（交通およびエネルギ等）システムの各オブジェクトの管理および制御をするＩＣＳ（Industrial Control Systems）である。また、本実施形態に係るコンピューティングシステム１０は、一例として、オフィス内または家庭内のネットワークに接続された様々なデバイス（例えば電話機およびコピー機、等々）を管理するシステムであってもよい。また、コンピューティングシステム１０は、企業等内のネットワークに接続された複数のコンピュータを管理するシステムであってもよいし、データセンタ等のネットワークに接続された多数のサーバを管理するシステムであってもよい。
【００１３】
コンピューティングシステム１０は、複数の情報処理装置１２と、更新部２２と、複数の検出部２４と、収集部２６と、判断部２８と、管理用コンピュータ３０とを備える。なお、コンピューティングシステム１０において、複数の検出部２４、収集部２６および判断部２８は、ソフトウエア更新を適用した情報処理装置１２に対して不正アクセスがあったかどうかを検査する検査装置として機能する。
【００１４】
複数の情報処理装置１２のそれぞれは、プログラムを実行して、データ処理および機器の制御等を行う。複数の情報処理装置１２のそれぞれは、コンピュータであってもよいし、機器に組み込まれたデータ処理ユニットであってもよい。複数の情報処理装置１２のそれぞれは、一例として、機器を制御するＰＬＣ（Programmable Logic Controller）であってもよい。
【００１５】
また、複数の情報処理装置１２のそれぞれは、コンピュータにより実行された仮想マシン４０によって実現されてもよい。この場合、仮想マシン４０は、対応する情報処理装置１２のハードウエア構成を仮想的に実現する。
【００１６】
更新部２２は、複数の情報処理装置１２のうちの指定された情報処理装置１２に対してソフトウエア更新を適用させる。ここで、ソフトウエア更新とは、情報処理装置１２におけるハードウエア変更を伴わない構成変更処理をいう。また、情報処理装置１２が仮想マシン４０により実現されている場合には、ソフトウエア更新とは、当該仮想マシン４０により仮想的に実現されたハードウエア構成の変更を伴わない構成変更処理をいう。例えば、ソフトウエア更新とは、情報処理装置１２が実行するプログラムのインストール、情報処理装置１２が実行するプログラムのバージョンアップ、セキュリティパッチのようなプログラムに対するソフトウエアパッチ、および、情報処理装置１２に対して設定される設定値の変更等である。
【００１７】
更新部２２は、一例として、特定の一のソフトウエア更新を適用すべき命令を、例えばホスト装置により指定された一の情報処理装置１２に対して与える。更新部２２からソフトウエア更新を適用すべき命令が与えられた情報処理装置１２は、例えばネットワーク１００を介して一のソフトウエア更新に必要なデータを取得して、プログラムのインストール、アップデートおよび設定変更等のソフトウエア更新を実行する。これにより、更新部２２は、指定された一の情報処理装置１２に対して特定の一のソフトウエア更新を適用させることができる。なお、更新部２２は、何れかの情報処理装置１２にソフトウエア更新を適用させた場合には、その旨を収集部２６に通知する。
【００１８】
複数の検出部２４のぞれぞれは、複数の情報処理装置１２のうちの何れかの情報処理装置１２に対応して設けられる。複数の検出部２４のそれぞれは、対応する情報処理装置１２に関する予め定められた種類のデータを検出する。複数の検出部２４のそれぞれは、対応する情報処理装置１２とは別個の装置により実現される物理的センサであってもよいし、対応する情報処理装置１２がプログラムを実行することにより当該情報処理装置１２内に実現されるソフトウエア的な情報取得モジュールであってもよい。
【００１９】
より具体的には、複数の検出部２４のそれぞれは、一例として、対応する情報処理装置１２が送受信するデータ、対応する情報処理装置１２が実行するプログラムおよび関数、対応する情報処理装置１２がメモリに対して書き込みおよび読み出しをするデータを検出する。また、複数の検出部２４のそれぞれは、一例として、情報処理装置１２を構成するリソースの状態（例えばメモリ使用量およびプロセッサ使用率、並びに、当該情報処理装置１２が備えるその他のリソースの状態）、情報処理装置１２内においてシステムコールが呼び出される順序、および、対応する情報処理装置１２が制御する機器の物理量（例えば電力量、温度、湿度および流体の流量）を検出する。
【００２０】
収集部２６は、ソフトウエア更新を適用した情報処理装置１２における、ソフトウエア更新を適用したことに応じて影響を受ける挙動を収集する。情報処理装置１２の挙動とは、情報処理装置１２がプログラムを実行することにより影響を受けるデータの振る舞いおよび物理量の振る舞いをいう。
【００２１】
例えば、情報処理装置１２の挙動は、情報処理装置１２が送受信するデータの振る舞い、情報処理装置１２が実行するプログラムおよび関数の振る舞い、および、情報処理装置１２がメモリに対して書き込みおよび読み出しをするデータの振る舞い等である。また、例えば、情報処理装置１２の挙動は、情報処理装置１２を構成するリソースの状態の振る舞い、情報処理装置１２内におけるシステムコールの呼び出しの振る舞い、および、情報処理装置１２が制御する機器の物理量の振る舞い等である。
【００２２】
収集部２６は、一例として、ソフトウエア更新を適用した情報処理装置１２に対応して設けられた検出部２４から検出結果を受け取ることにより、対応する情報処理装置１２の挙動を収集する。収集部２６は、検出部２４と収集部２６と接続する専用線を介して検出結果を受け取ってもよいし、ネットワーク１００を介して検出結果を受け取ってもよい。
【００２３】
判断部２８は、一のソフトウエア更新を適用した情報処理装置の挙動を、複数回分のソフトウエア更新のそれぞれについて比較する。例えば、判断部２８は、一のソフトウエア更新を適用した複数の情報処理装置１２の挙動同士を比較する。また、例えば、判断部２８は、１つの情報処理装置１２に一のソフトウエア更新を複数回繰り返して適用して、複数回適用したそれぞれにおける挙動同士を比較する。
【００２４】
例えば、判断部２８は、情報処理装置１２が送受信するデータの振る舞いが一致しているかどうかを比較する。より詳しくは、判断部２８は、情報処理装置１２が送受信するデータの送受信タイミングおよびデータ内容が一致しているかどうかを比較する。また、判断部２８は、情報処理装置１２によるファイルの追加、移動、および書き換えのタイミングおよび内容が一致しているかどうかを比較する。また、判断部２８は、情報処理装置１２によるデータベースエントリの追加、移動、および書き換えのタイミングおよび内容が一致しているかどうかを比較する。また、判断部２８は、情報処理装置１２によるレジストリキーまたはレジストリ値の追加、移動および書き換えが一致しているかどうかを比較する。
【００２５】
また、例えば、判断部２８は、情報処理装置１２が実行するプログラムおよび関数の振る舞いが一致しているかどうかを比較する。より詳しくは、判断部２８は、情報処理装置１２が実行するプログラムの内容および実行タイミング、または、これらのプログラムを呼び出すＡＰＩ（Application Program Interface）等の実行内容および実行タイミングが一致しているかどうかを比較する。
【００２６】
また、例えば、判断部２８は、情報処理装置１２がメモリに対して書き込みおよび読み出しをするデータの振る舞いが一致しているかどうかを比較する。より詳しくは、判断部２８は、情報処理装置１２がメモリに対して書き込みおよび読み出しをするタイミングおよびデータの内容が一致しているかどうかを比較する。
【００２７】
また、例えば、判断部２８は、情報処理装置１２を構成するリソースの状態（例えばメモリ使用量およびプロセッサ使用率）の振る舞いが一致しているかどうかを比較する。より詳しくは、判断部２８は、情報処理装置１２を構成するメモリ使用量の変化またはプロセッサ使用率の変化が一致しているかどうかを比較する。
【００２８】
また、例えば、判断部２８は、情報処理装置１２が制御する機器の物理量の振る舞いが一致しているかどうかを比較する。より詳しくは、判断部２８は、情報処理装置１２が制御する機器の物理量（例えば電力量、温度、湿度、および流体の流量）の値または変化が一致しているかどうかを比較する。
【００２９】
そして、判断部２８は、比較結果に基づいて、ソフトウエア更新を適用した後の情報処理装置１２の挙動が正常であるか否かを判断する。即ち、判断部２８は、複数回分のソフトウエア更新を適用した情報処理装置１２の挙動が互いに一致していれば、挙動が正常であると判断する。判断部２８は、ソフトウエア更新を適用した情報処理装置１２の挙動が一致していなければ、何れかの挙動が正常ではないと判断する。
【００３０】
管理用コンピュータ３０は、一例として、当該コンピューティングシステム１０の全体の管理および制御を実行する。また、更に、管理用コンピュータ３０は、当該コンピューティングシステム１０に対して不正アクセスがあった場合、その不正アクセスの除去処理を実行する。
【００３１】
図２は、本実施形態に係るコンピューティングシステム１０における処理フローを示す。まず、ステップＳ１１において、更新部２２は、当該コンピューティングシステム１０を管理する管理用コンピュータ等からの指示に応じて、当該コンピューティングシステム１０内における特定の一の情報処理装置１２に対して複数回分のソフトウエア更新を適用させる。
【００３２】
ここで、一の情報処理装置１２に対して複数回分の一のソフトウエア更新を適用させるとは、例えば、同一種類の複数の情報処理装置１２のそれぞれに対して一のソフトウエア更新を適用させる処理を含む。また、一の情報処理装置１２に対して複数回分の一のソフトウエア更新を適用させるとは、例えば、情報処理装置１２の状態をバックアップしてから一のソフトウエア更新を適用させ、その後、その情報処理装置１２をソフトウエア更新前の状態に復元してから一のソフトウエア更新を適用させる処理を複数回繰り返す処理も含む。
【００３３】
また、一の情報処理装置１２に対して複数回分の一のソフトウエア更新を適用させるとは、例えば、一の情報処理装置１２に対して一のソフトウエア更新を適用させるとともに、一のソフトウエア更新の前における一の情報処理装置１２の処理を仮想的に実現する仮想マシン４０に対して一のソフトウエア更新を適用させる処理も含む。なお、一の情報処理装置１２に対して複数回のソフトウエア更新を適用させる例については、図３から図５において更に説明する。
【００３４】
続いて、ステップＳ１２において、収集部２６は、一のソフトウエア更新を適用した情報処理装置１２の挙動を、複数回分のソフトウエア更新のそれぞれについて収集する。収集部２６は、一例として、一のソフトウエア更新を適用した複数の情報処理装置１２の挙動のそれぞれをリアルタイムで収集する。また、判断部２８は、一例として、一のソフトウエア更新を適用した複数の情報処理装置１２の挙動のそれぞれを記憶装置に一旦蓄積しておき、蓄積した複数の情報処理装置１２の挙動を収集してもよい。また、判断部２８は、情報処理装置１２の構成のイメージを仮想モデルにおいて実現し、仮想モデルの挙動を収集してもよい。
【００３５】
続いて、ステップＳ１３において、判断部２８は、複数回分のソフトウエア更新のそれぞれについて収集した複数の挙動を互いに比較する。そして、判断部２８は、一のソフトウエア更新を適用した後の情報処理装置１２の挙動が正常であるか否かを判断する。より具体的には、判断部２８は、収集した複数の挙動が一定範囲内で一致している場合には、一のソフトウエア更新を適用した後の一の情報処理装置１２の挙動が正常であると判断する。また、判断部２８は、複数の挙動が不一致である場合（一定の範囲内で一致していない）には、一のソフトウエア更新を適用した後の一の情報処理装置１２の挙動が異常であると判断する。
【００３６】
なお、ステップＳ１３において、判断部２８は、一のソフトウエア更新を適用してから、少なくともソフトウエア更新により挙動の変化が現れるまで、複数回分のソフトウエア更新のそれぞれについて収集した複数の挙動を互いに比較する。例えば、１日１回のファイルの書き換えをするプログラムのバージョンアップをした場合には、判断部２８は、少なくとも１日の間、複数の情報処理装置１２のそれぞれの挙動（例えば当該プログラムによるファイルの読み出し処理）を比較する。
【００３７】
判断部２８は、判断結果を、不正アクセスの除去処理を実行する管理用コンピュータ等に通知する。通知を受けた管理用コンピュータは、対応する情報処理装置１２に不正なアクセスがあるかどうかを検証して、不正なアクセスがあると判断した場合には不正アクセスの除去処理を実行する。
【００３８】
以上のように、コンピューティングシステム１０によれば、ソフトウエア更新を適用した後の情報処理装置１２の異常を検知することができる。特に、コンピューティングシステム１０は、情報処理装置１２の挙動を観察すればよいので、情報処理装置１２の内部を解析等することなく正確に異常を検知することができる。
【００３９】
なお、更新部２２は、ステップＳ１１において、コンピューティングシステム１０が備える同一種類の複数の情報処理装置１２のうち一部の情報処理装置１２にのみ、特定の一のソフトウエア更新を適用してもよい。そして、判断部２８によって一のソフトウエア更新を適用した一部の情報処理装置１２の挙動が正常であると判断されたことを条件として、更新部２２は、他の同一種類の情報処理装置１２に一のソフトウエア更新を適用してもよい。
【００４０】
また、この場合、判断部２８は、一部の情報処理装置１２に一のソフトウエア更新を適用した後の挙動が正常であるか否かの判断基準から変更した判断基準により、他の情報処理装置１２に一のソフトウエア更新を適用した後の挙動が正常であるか否かを判断してもよい。例えば、判断部２８は、正常であると判断する挙動の範囲を、ソフトウエア更新の前の範囲からシフトさせたり、拡大させたり、または縮小させたりしてもよい。
【００４１】
これにより、コンピューティングシステム１０は、一部の情報処理装置１２に対して正常に一のソフトウエア更新が適用されたことが確認できてから、他の情報処理装置１２に一のソフトウエア更新が適用させることができる。さらに、コンピューティングシステム１０は、一のソフトウエア更新を適用した後の正常な挙動を認識できるので、その後に他の情報処理装置１２に対して一のソフトウエア更新を適用した場合に、挙動が正常であるか否かを簡易に且つ精度良く行うことができる。従って、このようなコンピューティングシステム１０によれば、不正なアクセスがあった場合であっても被害を最小限にとどめることができる。
【００４２】
図３は、情報処理装置１２の挙動を複数回分のソフトウエア更新のそれぞれについて収集する方法の第１例を示す。第１例においては、更新部２２は、実際に備えられた同一種類の複数の情報処理装置１２のそれぞれに対して、一のソフトウエア更新を適用させる。
【００４３】
例えば、更新部２２は、実際に備えられた複数の情報処理装置１２のうちの、システム構成、設定、および動作環境の少なくとも１つが共通する複数の情報処理装置１２に対して、一のソフトウエア更新を適用させる。システム構成が共通する複数の情報処理装置１２とは、例えば、ハードウエア構成およびソフトウエア構成等が共通する複数の情報処理装置１２をいう。また、設定が共通する複数の情報処理装置１２とは、一例として、ハードウエアに対する設定値およびソフトウエアに対する設定値等が共通する複数の情報処理装置１２をいう。また、動作環境が共通する複数の情報処理装置１２とは、設置されている場所、制御対象である機器の種類、または動作する時間帯等が共通する複数の情報処理装置１２をいう。
【００４４】
収集部２６は、このような一のソフトウエア更新を適用した同一種類の複数の情報処理装置１２のそれぞれの挙動を収集する。収集部２６は、一例として、一のソフトウエア更新を適用した複数の情報処理装置１２のそれぞれが実際の環境下において動作している状態において、複数の情報処理装置１２のそれぞれの挙動を収集する。
【００４５】
これにより、収集部２６は、一のソフトウエア更新を適用した情報処理装置１２の挙動を、複数回分のソフトウエア更新のそれぞれについて収集することができる。そして、判断部２８は、収集部２６が取得した複数の情報処理装置１２のそれぞれの挙動を互いに比較する。
【００４６】
このような第１例に係るコンピューティングシステム１０は、実際の環境下において動作している情報処理装置１２の挙動を収集するので、検出のための特別なメカニズムを設けずに簡易に、ソフトウエア更新を適用した後の情報処理装置１２の異常を検知することができる。また、このような第１例に係るコンピューティングシステム１０は、リアルタイムで正確に、ソフトウエア更新を適用した後の情報処理装置１２の異常を検知することができる。
【００４７】
図４は、情報処理装置１２の挙動を複数回分のソフトウエア更新のそれぞれについて収集する方法の第２例を示す。第２例においては、更新部２２は、一の情報処理装置１２の状態をバックアップしてから一のソフトウエア更新を適用させ、更に、一の情報処理装置１２をソフトウエア更新前の状態に復元してから一のソフトウエア更新を適用させる処理を複数回繰り返す。
【００４８】
例えば、更新部２２は、一の情報処理装置１２の構成を仮想的に実現する仮想マシン４０のイメージを保存する。そして、更新部２２は、保存したイメージの構成を実現した仮想マシン４０に対して、一のソフトウエア更新を適用させる処理を複数回繰り返す。これにより、更新部２２は、一の情報処理装置１２をソフトウエア更新前の状態に復元してから一のソフトウエア更新を適用させる処理を複数回繰り返すことができる。
【００４９】
収集部２６は、一の情報処理装置１２に対して適用された複数回分の一のソフトウエア更新のそれぞれについて、一の情報処理装置１２の挙動を収集する。収集部２６は、一例として、仮想マシン４０により実現された情報処理装置１２のそれぞれに対して一のソフトウエア更新を適用して、実際の動作環境と同様の動作環境において動作させる。収集部２６は、一例として、情報処理装置１２の動作環境を仮想化した環境（例えば、情報処理装置１２と同様の入力データを与えた環境下、および情報処理装置１２の制御対象となる機器を仮想化した機器を制御する環境下）において、仮想マシン４０により実現された情報処理装置１２のそれぞれを一定期間ずつ動作させて、挙動を収集する。
【００５０】
これにより、収集部２６は、情報処理装置１２を仮想化して実現する複数の仮想マシン４０から、複数回分のソフトウエア更新のそれぞれについての挙動を収集することができる。そして、判断部２８は、収集部２６が取得した複数の仮想マシン４０により仮想的に実現された情報処理装置１２のそれぞれの挙動を互いに比較する。
【００５１】
このような第２例に係るコンピューティングシステム１０は、仮想マシン４０を用いて情報処理装置１２の挙動を検出するので、１個の情報処理装置１２に対して異なるタイミングで同一のソフトウエア更新を複数回適用させることができる。これにより、コンピューティングシステム１０は、同一種類の情報処理装置１２が当該コンピューティングシステム１０内において非常に少ない場合であっても、検出のための特別なメカニズムを設けずに簡易にソフトウエア更新を適用した後の異常を検知することができる。また、コンピューティングシステム１０は、ソフトウエア更新のタイミングに応じてアクションを開始したりしなかったりするようなマルウエアによって攻撃された場合に、その攻撃を検出することができる。
【００５２】
図５は、情報処理装置１２の挙動を複数回分のソフトウエア更新のそれぞれについて収集する方法の第３例を示す。第３例においては、更新部２２は、当該コンピューティングシステム１０に実際に備えられた一の情報処理装置１２の構成のイメージを仮想マシン４０上に複製して、一の情報処理装置１２の構成の複製を仮想的に実現する。続いて、更新部２２は、実際に備えられた一の情報処理装置１２に対して一のソフトウエア更新を適用させるとともに、仮想マシン４０により実現された一の情報処理装置１２に対して一のソフトウエア更新を適用させる。
【００５３】
収集部２６は、一のソフトウエア更新を適用した実際に備えられた一の情報処理装置１２の挙動、および、一のソフトウエア更新を適用した仮想マシン４０により実現された一の情報処理装置１２の挙動を収集する。収集部２６は、一例として、実際に備えられた情報処理装置１２を実際の環境下において動作させる。また、収集部２６は、一のソフトウエア更新を適用した仮想マシン４０により実現された一の情報処理装置１２を、実際の動作環境と同様の動作環境において動作させる。収集部２６は、一例として、情報処理装置１２の動作環境を仮想化した環境（例えば、情報処理装置１２と同様の入力データを与えた環境下、および情報処理装置１２の制御対象となる機器を仮想化した機器を制御する環境下）において、仮想マシン４０により実現された一の情報処理装置１２を一定期間動作させ、それぞれの仮想マシン４０の挙動を収集する。
【００５４】
これにより、収集部２６は、情報処理装置１２を仮想化した複数の仮想マシン４０の挙動を収集することができる。そして、判断部２８は、収集部２６が取得した、実際に備えられた一の情報処理装置１２の挙動と仮想マシン４０により実現された一の情報処理装置１２の挙動とを互いに比較する。
【００５５】
判断部２８は、実際に備えられた一の情報処理装置１２の挙動と仮想マシン４０により実現された一の情報処理装置１２の挙動とが一致すれば、一のソフトウエア更新を適用した一の情報処理装置１２の挙動が正常であると判断する。反対に、判断部２８は、一致しなければ、一のソフトウエア更新を適用した一の情報処理装置１２の挙動が正常ではないと判断する。
【００５６】
このような第２例に係るコンピューティングシステム１０は、仮想マシン４０を用いて情報処理装置１２の挙動を検出するので、１個の情報処理装置１２に対して同一のソフトウエア更新を複数回用させることができる。これにより、コンピューティングシステム１０は、同一種類の情報処理装置１２が当該コンピューティングシステム１０内において非常に少ない場合であっても、検出のための特別なメカニズムを設けずに簡易にソフトウエア更新を適用した後の異常を検知することができる。また、コンピューティングシステム１０は、実際の環境下において動作している情報処理装置１２の挙動を収集するので、リアルタイムで正確にソフトウエア更新を適用した後の情報処理装置１２の異常を検知することができる。
【００５７】
図６は、本実施形態に係るコンピュータ１９００のハードウェア構成の一例を示す。本実施形態に係るコンピュータ１９００は、ホスト・コントローラ２０８２により相互に接続されるＣＰＵ２０００、ＲＡＭ２０２０、グラフィック・コントローラ２０７５、及び表示装置２０８０を有するＣＰＵ周辺部と、入出力コントローラ２０８４によりホスト・コントローラ２０８２に接続される通信インターフェイス２０３０、ハードディスクドライブ２０４０、及びＣＤ−ＲＯＭドライブ２０６０を有する入出力部と、入出力コントローラ２０８４に接続されるＲＯＭ２０１０、フレキシブルディスク・ドライブ２０５０、及び入出力チップ２０７０を有するレガシー入出力部とを備える。
【００５８】
ホスト・コントローラ２０８２は、ＲＡＭ２０２０と、高い転送レートでＲＡＭ２０２０をアクセスするＣＰＵ２０００及びグラフィック・コントローラ２０７５とを接続する。ＣＰＵ２０００は、ＲＯＭ２０１０及びＲＡＭ２０２０に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィック・コントローラ２０７５は、ＣＰＵ２０００等がＲＡＭ２０２０内に設けたフレーム・バッファ上に生成する画像データを取得し、表示装置２０８０上に表示させる。これに代えて、グラフィック・コントローラ２０７５は、ＣＰＵ２０００等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
【００５９】
入出力コントローラ２０８４は、ホスト・コントローラ２０８２と、比較的高速な入出力装置である通信インターフェイス２０３０、ハードディスクドライブ２０４０、ＣＤ−ＲＯＭドライブ２０６０を接続する。通信インターフェイス２０３０は、ネットワークを介して他の装置と通信する。ハードディスクドライブ２０４０は、コンピュータ１９００内のＣＰＵ２０００が使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ２０６０は、ＣＤ−ＲＯＭ２０９５からプログラム又はデータを読み取り、ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供する。
【００６０】
また、入出力コントローラ２０８４には、ＲＯＭ２０１０と、フレキシブルディスク・ドライブ２０５０、及び入出力チップ２０７０の比較的低速な入出力装置とが接続される。ＲＯＭ２０１０は、コンピュータ１９００が起動時に実行するブート・プログラム、及び／又は、コンピュータ１９００のハードウェアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ２０５０は、フレキシブルディスク２０９０からプログラム又はデータを読み取り、ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供する。入出力チップ２０７０は、フレキシブルディスク・ドライブ２０５０を入出力コントローラ２０８４へと接続すると共に、例えばパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を入出力コントローラ２０８４へと接続する。
【００６１】
ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供されるプログラムは、フレキシブルディスク２０９０、ＣＤ−ＲＯＭ２０９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、ＲＡＭ２０２０を介してコンピュータ１９００内のハードディスクドライブ２０４０にインストールされ、ＣＰＵ２０００において実行される。
【００６２】
コンピュータ１９００にインストールされ、コンピュータ１９００を検査装置として機能させるプログラムは、更新モジュールと、収集モジュールと、判断モジュールとを備える。これらのプログラム又はモジュールは、ＣＰＵ２０００等に働きかけて、コンピュータ１９００を、検査装置としてそれぞれ機能させる。
【００６３】
これらのプログラムに記述された情報処理は、コンピュータ１９００に読込まれることにより、ソフトウェアと上述した各種のハードウェア資源とが協働した具体的手段である更新部２２、収集部２６および判断部２８として機能する。そして、これらの具体的手段によって、本実施形態におけるコンピュータ１９００の使用目的に応じた情報の演算又は加工を実現することにより、使用目的に応じた特有の検査装置が構築される。
【００６４】
一例として、コンピュータ１９００と外部の装置等との間で通信を行う場合には、ＣＰＵ２０００は、ＲＡＭ２０２０上にロードされた通信プログラムを実行し、通信プログラムに記述された処理内容に基づいて、通信インターフェイス２０３０に対して通信処理を指示する。通信インターフェイス２０３０は、ＣＰＵ２０００の制御を受けて、ＲＡＭ２０２０、ハードディスクドライブ２０４０、フレキシブルディスク２０９０、又はＣＤ−ＲＯＭ２０９５等の記憶装置上に設けた送信バッファ領域等に記憶された送信データを読み出してネットワークへと送信し、もしくは、ネットワークから受信した受信データを記憶装置上に設けた受信バッファ領域等へと書き込む。このように、通信インターフェイス２０３０は、ＤＭＡ（ダイレクト・メモリ・アクセス）方式により記憶装置との間で送受信データを転送してもよく、これに代えて、ＣＰＵ２０００が転送元の記憶装置又は通信インターフェイス２０３０からデータを読み出し、転送先の通信インターフェイス２０３０又は記憶装置へとデータを書き込むことにより送受信データを転送してもよい。
【００６５】
また、ＣＰＵ２０００は、ハードディスクドライブ２０４０、ＣＤ−ＲＯＭドライブ２０６０（ＣＤ−ＲＯＭ２０９５）、フレキシブルディスク・ドライブ２０５０（フレキシブルディスク２０９０）等の外部記憶装置に格納されたファイルまたはデータベース等の中から、全部または必要な部分をＤＭＡ転送等によりＲＡＭ２０２０へと読み込ませ、ＲＡＭ２０２０上のデータに対して各種の処理を行う。そして、ＣＰＵ２０００は、処理を終えたデータを、ＤＭＡ転送等により外部記憶装置へと書き戻す。このような処理において、ＲＡＭ２０２０は、外部記憶装置の内容を一時的に保持するものとみなせるから、本実施形態においてはＲＡＭ２０２０および外部記憶装置等をメモリ、記憶部、または記憶装置等と総称する。本実施形態における各種のプログラム、データ、テーブル、データベース等の各種の情報は、このような記憶装置上に格納されて、情報処理の対象となる。なお、ＣＰＵ２０００は、ＲＡＭ２０２０の一部をキャッシュメモリに保持し、キャッシュメモリ上で読み書きを行うこともできる。このような形態においても、キャッシュメモリはＲＡＭ２０２０の機能の一部を担うから、本実施形態においては、区別して示す場合を除き、キャッシュメモリもＲＡＭ２０２０、メモリ、及び／又は記憶装置に含まれるものとする。
【００６６】
また、ＣＰＵ２０００は、ＲＡＭ２０２０から読み出したデータに対して、プログラムの命令列により指定された、本実施形態中に記載した各種の演算、情報の加工、条件判断、情報の検索・置換等を含む各種の処理を行い、ＲＡＭ２０２０へと書き戻す。例えば、ＣＰＵ２０００は、条件判断を行う場合においては、本実施形態において示した各種の変数が、他の変数または定数と比較して、大きい、小さい、以上、以下、等しい等の条件を満たすかどうかを判断し、条件が成立した場合（又は不成立であった場合）に、異なる命令列へと分岐し、またはサブルーチンを呼び出す。
【００６７】
また、ＣＰＵ２０００は、記憶装置内のファイルまたはデータベース等に格納された情報を検索することができる。例えば、第１属性の属性値に対し第２属性の属性値がそれぞれ対応付けられた複数のエントリが記憶装置に格納されている場合において、ＣＰＵ２０００は、記憶装置に格納されている複数のエントリの中から第１属性の属性値が指定された条件と一致するエントリを検索し、そのエントリに格納されている第２属性の属性値を読み出すことにより、所定の条件を満たす第１属性に対応付けられた第２属性の属性値を得ることができる。
【００６８】
以上に示したプログラム又はモジュールは、外部の記録媒体に格納されてもよい。記録媒体としては、フレキシブルディスク２０９０、ＣＤ−ＲＯＭ２０９５の他に、ＤＶＤ又はＣＤ等の光学記録媒体、ＭＯ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワーク又はインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをコンピュータ１９００に提供してもよい。
【００６９】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【００７０】
特許請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。
【符号の説明】
【００７１】
１０  コンピューティングシステム
１２  情報処理装置
２２  更新部
２４  検出部
２６  収集部
２８  判断部
３０  管理用コンピュータ
４０  仮想マシン
１００  ネットワーク
１９００  コンピュータ
２０００  ＣＰＵ
２０１０  ＲＯＭ
２０２０  ＲＡＭ
２０３０  通信インターフェイス
２０４０  ハードディスクドライブ
２０５０  フレキシブルディスク・ドライブ
２０６０  ＣＤ−ＲＯＭドライブ
２０７０  入出力チップ
２０７５  グラフィック・コントローラ
２０８０  表示装置
２０８２  ホスト・コントローラ
２０８４  入出力コントローラ
２０９０  フレキシブルディスク
２０９５  ＣＤ−ＲＯＭ
【図１】
0005665188.tif 000002
【図２】
0005665188.tif 000003
【図３】
0005665188.tif 000004
【図４】
0005665188.tif 000005
【図５】
0005665188.tif 000006
【図６】
0005665188.tif 000007