(57)【要約】【課題】従来手法では対応できないウイルスなど悪意あるプログラムや、テスト期間中では発現しない動作不具合などユーザの意図しない動作に起因するシステムの不調を解決するコンピュータシステムを構築する。【解決手段】本発明ではシステム上で実行する一部または全部のプログラムをそれが正常であるか悪意あるプログラムに改変させられているかにかかわらず、ある一定の時間が経過すると必ず更新し、実行しなおすことでシステムの状態をリフレッシュし、安定性を保つことを特徴とする。【選択図】  図１
2004164351.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステム上で動作するプログラムの予期しない不正な動作に起因するシステムの不調に対応する手法であって、コンピュータシステム上で動作する一部または全部のプログラムを各々の定められた一定期間が過ぎた時点でいったん終了し、終了後に再実行することを特徴とするコンピュータシステムの不正プログラム修正方法。
【請求項２】
請求項１記載の方法を実現するコンピュータシステムであって、少なくともプログラムを格納する不揮発性揮発記憶装置と、プログラムを実行する手段と、プログラム更新のチェックを行う手段とを備えており、プログラムを実行する際にはまず更新をチェックするためのプログラム実行更新情報を記録しておき、しかる後プログラムを実行し、プログラム更新のチェックによって、予め定められた期間が過ぎると、実行中のプログラムを停止し、改めて実行しなおすことを特徴とするコンピュータシステム。
【請求項３】
請求項１記載のコンピュータシステムの不正プログラム修正方法において、プログラムを再実行する際には、そのプログラムファイルリソースを正常なファイルが存在するリソース源から取得しなおしてから再実行するすることを特徴とすコンピュータシステムの不正プログラム修正方法。
【請求項４】
請求項３記載の方法を実現するコンピュータシステムであって、請求項２記載のコンピュータシステムにプログラムファイルリソース源へアクセスするためのアクセス手段を備え、プログラム更新のチェックによって、予め定められた期間が過ぎると、実行中のプログラムを停止し、リソース源から不揮発性記憶装置へプログラムファイルリソースを再取得した後、そのプログラムを再実行することを特徴とするコンピュータシステム。
【請求項５】
請求項４記載のコンピュータシステムにおいて、再実行ポリシーにしたがってプログラムファイルリソース源へのアクセス状況および不揮発性記憶装置へのプログラムファイルリソース取得状況によって再実行の可、不可を判断することを特徴とするコンピュータシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、コンピュータのセキュリティシステムおよび安定動作に関する。特に、意図しない動作を行う不正なプログラムによるシステム不安定の修正に関する。
【０００２】
【従来の技術】
近年のコンピュータシステムにあっては、それ単体で独立した動作を行う他に、インターネット等各種のネットワークに接続し、それらのネットワークのサーバに格納されたファイルをダウンロードすることが広く普及している。
【０００３】
前述したファイルにコンピュータウイルスなどの悪意あるプログラムが潜んでいると、そのファイルの実行時等に当該コンピュータ内にユーザの意思に関わり無くそのプログラムファイルとともに保存されることになる。保存された悪意あるプログラムは、ユーザから意識されること無く潜伏し、再感染のための自己複製を作り、他のプログラムファイルにそれとわからずに保存され、ある条件が整うとプログラムファイルリソースやソフトウェアそのものを破壊するなどの様々な悪影響を与える。
【０００４】
あるいは悪意あるプログラムではなくても、プログラム作成時に意図しない動作を行ってしまういわゆる「バグ」や「不具合」のあるプログラムを実行した場合、そのプログラムが原因となってコンピュータシステムが不安定になってしまったり、その他のプログラムを巻き込んでシステム全体が動作不能になる場合がある。
【０００５】
したがってハードディスク、フロッピー（登録商標）ディスクなどの外部記憶装置あるいは内部メモリ上に格納されているプログラム、もしくはネットワーク上から取得したプログラムをもとに計算、情報処理等を行なうコンピュータのユーザにとって、そのプログラムの完全性が保証されていることは必要不可欠な条件である。
【０００６】
従来、そのような悪意あるプログラムを除去するためには、コンピュータウイルスのワクチンソフトを定期的に起動して感染していないかチェックすることで、コンピュータウイルスを除去するという手法が行われている。これは、悪意あるプログラムを検出するために、予め検出するためのデータパターンを用意しておき、それを用いてシステム上のファイルを逐次チェックし、パターンにマッチしたものを感染したものとみなすというものである。
【０００７】
未知の悪意あるプログラムに対応するためには、正しいプログラムとしてのデータパターンを用意し、そのパターンにマッチしないものを悪意あるプログラムとして認識するという手法がある。「ウイルス診断機構の作成システムと作成方法ならびにウイルス診断機構と診断方法」と題する下記の特許文献１では、ファイル内にプログラムサイズやチェックサム、リビジョンなどの情報を設け、実行時に自分自身の検証を行うものが公開されている。「コンピュータウイルス診断方法」と題する下記の特許文献２では、正常なプログラムをいくつかの小片に分割し、各小片の診断情報を保存しておいてウイルス診断時に保存しておいた情報と各小片データを比較し、不一致が生じた場合に感染したと判断する手法が公開されている。
【０００８】
悪意の無い不具合のあるプログラムはパターンマッチングなどの手法では発見できないため、ユーザからの動作報告等に基づいて判断される。
【０００９】
検出された悪意あるプログラムや、セキュリティホールとなるようなプログラム、不具合のあるプログラムは、問題が発見され、修正された時点で不定期に更新されるため、更新アナウンスをユーザが受け取った後、人手によるアップデートでの対応が行われている。
【００１０】
【特許文献１】
特開平７−１４６７８８号公報
【特許文献２】
特開平７−１７５６４７号公報
【００１１】
【発明が解決しようとする課題】
従来の手法は悪意あるプログラムを正常なプログラムとの差異から発見し、これを除去することを根幹においている。しかし、ワクチンソフトなどのパターンマッチングによる手法では、新しいウイルスの潜伏期間が長いとウイルスの検出までに時間がかかるなどが原因となり、新しいウイルスに対応したワクチンが開発される迄にある程度の期間が必要となる。また、先の特許文献１や特許文献２の、未知の悪意あるプログラムへの対応では、チェックルーチンを回避するようなコードが書かれたものに対応できず、新しいデータパターンファイルを用いた方が確実であるケースがでてしまう。
【００１２】
また、悪意の無いプログラムの場合、通常そのプログラムが正常に動作するかどうかの動作試験を行い、ある一定の期間、テスト運用を行って正常動作していれば正常と判断する。しかし、実運用では実際にはテスト期間を超える長さでそのプログラムを動作させるため、テスト期間中では発現しない動作不具合に対応できない。
【００１３】
したがって、従来手法では結局は以下のような
▲１▼新しい悪意あるプログラムでのシステムの不調に迅速に対応できない
▲２▼実行中に改変された悪意あるプログラムに対応できない
▲３▼悪意有るものではないプログラムに不具合があった場合、それに起因するシステムの不調に迅速に対応できない
という課題が残る。
【００１４】
【課題を解決するための手段】
これらの課題はシステム上で動作するプログラムの実行結果が悪意あるものであるかどうか、あるいは意図したものと異なった動作であるかどうかの判断がシステム自身では判別できないことに起因する。これを解決するため、本発明ではシステム上で実行する一部または全部のプログラムを、それが正常であるか悪意あるプログラムに改変させられているかにかかわらず、ある一定の時間が経過すると必ず更新し、実行しなおすことを特徴とする。
【００１５】
すなわち、システムを悪意あるプログラムによる不正な改ざん、それによる動作の不調から保護し、常にシステムを最新、安定的な状態に保っておくようにするものである。
【００１６】
図１に本発明の構成図を示す。本発明のコンピュータシステム１０１は少なくともプログラムを格納する不揮発性記憶装置１０２と、プログラム更新チェックブロック１０４と、プログラム実行ブロック１０５とを備えている。実行されるプログラムは不揮発性記憶装置１０２内に保存されている。プログラム実行時はまずプログラム更新チェックブロック１０４で実行した日時、再実行手続き等更新情報を記録しておき、しかる後プログラム実行ブロック１０５にて実行される。プログラム更新チェックブロック１０４は現在時刻と各々のプログラムの更新情報とを比較し、予め定められた期間が過ぎると、実行中のプログラムを停止し、各々のプログラムに対応した外部の信頼できるプログラム配信センタ（１０６、１０７）から改めて不揮発性記憶領域１０２にネットワークを介してプログラムをダウンロードする。その後、ダウンロードしてきたプログラムを改めて実行しなおす。
【００１７】
また、ネットワーク上の外部のプログラム配信センターでなくとも、コンピュータシステム１０１本体内の書き換え不能な不揮発性領域１０３など信頼できるプログラムダウンロード用のリソースからプログラムを実行しなおすのでも良い（図１の破線部分で囲まれた部分は信頼できるリソース部分を示している）。
【００１８】
このようにプログラムの動作完全性が保てることができるある一定の期間毎にプログラムを更新、再実行することによって、未知のウイルスなど悪意あるプログラムに改変させられたプログラムをウイルス感染前の状態に戻し、動作中のプログラムの使用したメモリ領域はいったん開放して改めて領域を割り当てて再実行することにより、システムの状態をリフレッシュする。
【００１９】
【発明の実施の形態】
以下、図面を用いて本発明の実施形態を説明する。
【００２０】
図２は図１のコンピュータシステム１０１のより詳細なブロック図である。
【００２１】
プログラム更新チェックブロック１０４はフラッシュメモリあるいはバッテリバックアップされたＳＲＡＭなどにより構成される更新情報を保存するバックアップメモリ２０５と、実行日時情報等時刻を取得するためのリアルタイムクロック（以下ＲＴＣ）２０６とを備えている。
【００２２】
不揮発性記憶装置１０２はハードディスク（以下ＨＤＤ）２０７により構成され、自由に書き換え可能なプログラムを格納する領域として用いられる。
【００２３】
書換不能不揮発性記憶装置１０３はＥＰＲＯＭやフラッシュメモリを用いて構成され、ブートＲＯＭ２０８として機能する。電源投入後のブートプログラムや後述するプログラム更新チェックプログラム等が記憶されているが、他のアプリケーションプログラムからはこの領域は書き換えできない。
【００２４】
プログラム実行ブロック１０５は各プログラムを実行するＣＰＵ２０１、プログラム実行時に変数領域その他のワークエリアとなるメインメモリ２０２、周辺デバイスをアクセス制御するためのペリフェラルコントローラ２０４を備えており、ＣＰＵ２０１、メインメモリ２０２、ブートＲＯＭ２０８、バックアップメモリ２０５、ペリフェラルコントローラ２０４はバス２０３で接続される。ＨＤＤ２０７、ＲＴＣ２０６はペリフェラルコントローラを介し、ＣＰＵから自由にアクセスできる。もちろん、１チップマイコンのようにペリフェラルコントローラがＣＰＵに内蔵されているものを使用してもよい。
【００２５】
また、ネットワークとはペリフェラルコントローラ２０４を介して接続されたネットワークインターフェース２０９を介して接続され、各ネットワーク上のプログラム配信センタとの通信はこれらを通じてやり取りされる。
【００２６】
なお、プログラム更新チェックブロック１０４のバックアップメモリ２０５は不揮発性記憶装置１０２のハードディスク（以下ＨＤＤ）２０７側に領域を設けておいてもよい。
【００２７】
図３に本発明のシステム上でプログラムを実行する時のフローチャートを示す。
【００２８】
まずＳＴ３０１にて実行すべきプログラムの本体ファイルや設定ファイルなど実行に必要なリソースを信頼できるリソース源から不揮発性記憶装置１０２のＨＤＤ２０７へ取得する。リソース源は外部のプログラム配信センタでも書換不能不揮発性装置１０３でもあるいはインストール用のＣＤＲＯＭのようなリムーバブルメディアなどでもよい。実行時に必要なすべてのリソースは以降まとめてプログラムファイルリソースとする。リソース源がブートＲＯＭ２０８であった場合は特にリソースをＨＤＤ２０７へ置きなおす必要はない。次にＳＴ３０２にてプログラム更新チェックブロック１０４のＲＴＣ２０６より、プログラムを実行する現在の時刻を取得する。次に取得した時刻とプログラムファイルリソースの情報を、ＳＴ３０３にてプログラム更新チェックブロック１０４のバックアップメモリ２０５におくプログラム更新テーブルへ起動するプログラムの更新情報として登録する。しかる後、ＳＴ３０４にてプログラムを実行する。
【００２９】
図４にプログラム更新テーブルを示す。プログラム更新テーブルは実行するプログラムのプログラム名称と、プログラムのファイルリソースすなわち関連するファイルデータと、プログラムの実行方法と、プログラムの更新方法と、プログラムを起動させた開始時刻と、プログラムを更新する更新時刻とをデータフィールドとしてもっている。レコード数は起動したプログラムの数だけ存在する。
【００３０】
実行するプログラムのプログラム名称はそのレコードを検索するときのキー値として利用される。
【００３１】
関連ファイルデータはそのプログラムが持つ実行バイナリファイルやデータファイルなど更新すべきプログラムファイルリソースの全てが記載される。
【００３２】
プログラムの実行方法は更新時にそのプログラムを再起動する際のコマンドライン引数を指定する。
【００３３】
プログラム更新方法は信頼できるリソースのデータ元ＵＲＬの形で指定され、更新時はこのＵＲＬから指定されたプログラムファイルリソースを取得する。例えばプログラム配信元のサイトＵＲＬとプログラムが置いてあるディレクトリ、ファイルの指定でＦＴＰ：／／ｓｉｔｅＡ．ｃｏｍ／ＰｒｏｇｒａｍＡ／＊となっていた場合、更新時はネットワークインターフェースを通じてこのＵＲＬをリソース源としてファイルリソースを取得する。あるいはプログラムファイルリソースがリムーバブルメディアのドライブがＡ：￥上から取得した場合などはここがデータ元ＵＲＬとして登録される。また、最初にプログラムを取得したリソース源と、プログラム更新方法に指定される記述とは必ずしも一致していなくてもよい。
【００３４】
プログラム開始時刻はＳＴ３０２のＲＴＣ２０６から取得した時刻である。プログラム更新時刻はプログラム取得時のインストーラによる指定か、あるいはその指定がない場合はあらかじめ決められたデフォルト値でいつ再起動するのか更新するまでの時刻をプログラム開始時刻に加算した時刻を指定する。
【００３５】
図５にプログラム更新時のフローチャートを示す。
【００３６】
まずＳＴ５０１にてプログラム更新テーブルのチェックにはいる。ここで最初のレコードの情報を読み取り、ＲＴＣ２０６より現在の時刻を取得する。
【００３７】
ＳＴ５０２にて現在時刻とプログラム更新時刻フィールドを比較、もしまだそのプログラムの更新時刻になっていない場合はＳＴ５１０で次のレコードに移行する。ＳＴ５１１の分岐にてもしそこで最後まで到達していれば終了となり、そうでなければ再びＳＴ５０１へ戻ってプログラム更新テーブルから次のレコードの情報を読みだす。
【００３８】
ＳＴ５０２にてプログラムの更新時刻になっていた場合は、ＳＴ５０３にてそのプログラムを停止する。ここでそのプログラムが占有していたコンピュータシステム上のＩ／Ｏや各デバイスの操作権等を解放し、安全にメモリ上からその領域を取り除く。これはそのプログラムに決められたプログラム更新用の停止プロセスを用いてもよいし、そうした手段が用意されていなければ、プログラムビジーでない状態をまってＯＳ上からプロセスをキルするのでもよい。ビジー状態の終了を待つ場合はタイムアウト値を設定し、一定時間以上の無応答には強制的にプロセスをキルする。
【００３９】
プログラム停止後、ＳＴ５０５にて更新すべきプログラムファイルリソースを取得する。これはプログラム更新テーブルのプログラム更新方法フィールドに従ったリソース源から取得し、その後ＳＴ５０６にてファイルの更新を行う。
【００４０】
このプログラムファイルリソース取得、更新の部分ＳＴ５０４をより詳しく書いたフローチャートを図６に示す。まずＳＴ６０１にて信頼できるリソース源へのアクセスを行う。ここでネットワークトラブルや、あるいはプログラムファイルリソースを取得したリムーバブルメディアがドライブ入っていないなど、なんらかの原因で更新すべきプログラムファイルリソースが取得できなかった場合、ＳＴ６０２の分岐でＳＴ６０４へ移行し、ポリシー設定からプログラムファイル更新なしでプログラムを再実行するかどうかを判断する。もしファイル更新がない場合にプログラムの再実行を禁止していた場合はＳＴ６０８にて停止したプログラムの再実行を中止したログを残す等ポリシーに従ったプログラム停止処理を行った後、この処理を抜け、ＳＴ５０９への処理へと移行する。プログラム再実行のみ行えるポリシーの場合はプログラムリソースファイル更新処理を行わず、停止処理も行わないままＳＴ５０４の処理を終える。
【００４１】
トラブルなく更新するファイルが取得できる場合はＳＴ６０２の分岐からＳＴ６０３の分岐へと移行する。ＳＴ６０３では不揮発性記憶装置１０２の容量を調べ、新しくプログラムファイルリソースを更新できることを確認した後、ＳＴ６０５にてプログラムファイルリソースをリソース源から取得する。容量が足りなかった場合はＳＴ６０４へと分岐し、プログラムファイルリソースを取得できなかった動作と同様の処理を行う。ＳＴ６０６の取得したファイルの更新でＳＴ５０４の処理は終了となる。
【００４２】
ＳＴ５０５、ＳＴ５０６でのファイル更新後、次にＳＴ５０７にてメモリのガーベージコレクトを行う。これにより、解放したメモリ領域のフラグメンテーションを防ぐ。しかる後、ＳＴ５０８にてプログラム更新テーブルのプログラム実行方法のフィールドデータにより、更新したプログラムファイルリソースからあらためてプログラムを起動しなおす。その後、初回のプログラム起動時と同様にプログラム更新テーブルの内容を現在時刻にあわせて内容を更新し、ＳＴ５１０にて次のデータレコードへと処理が移る。ＳＴ５１１の分岐でもしそこで最後まで到達していれば終了となり、そうでなければ再びＳＴ５０２へ戻ってプログラム更新テーブルから次のレコードの情報を読みだす。
【００４３】
このプログラム更新チェックプログラムはタイマ割り込みなどによって定期的にシステム上で実行される。
【００４４】
ポリシー設定の例を図７に示す。各ポリシーは項目毎に固有のキー値に対し、それぞれの設定値を持つ形式でデータ化され、ファイルとして不揮発性記憶装置に保存されている。プログラムファイルリソースが取得できなかった場合のポリシーはキー値「Ｒｅｓｔａｒｔ  Ｏｎｌｙ」へ「ｔｒｕｅ」または「ｆａｌｓｅ」の値をとり、ＳＴ６０４でのポリシー設定確認ではこの値で条件分岐する。なお、この設定はリソース源へのアクセストラブル時などの各処理ブロックでここでは記述しないよりプログラム言語レベルに近い処理、例えば信頼できるリソース源へのアクセストラブルに際し、リトライ回数の指定などでも利用される。
【００４５】
【発明の効果】
以上説明したように、本発明によれば、システム上で実行するプログラムをある一定の時間が経過すると更新し、実行しなおすことから、システムを悪意あるプログラムによる不正な改ざん、それによる動作の不調から保護し、常にシステムを最新、安定的な状態に保っておくようにすることができる効果がある。
【００４６】
また、これにより、プログラムに悪意有るものではない不具合があった場合などの従来のワクチンプログラムでは対応できないケースでも、メモリリークや不正なデバイスの占有、無限ループでの無応答などからシステムを保護でき、安定した動作を得ることができるという効果がある。
【００４７】
また、本発明によれば、システム上で実行するプログラムの修正に定期的に対応することになり、これによりユーザが意識していなくとも常に最新のプログラムが利用できるという効果がある。
【００４８】
また、本発明によれば、従来のワクチンプログラムで検出されない未知のウイルスなどが感染していた場合でも、そのプログラムファイルリソースが利用される前ならば未然に被害を防げるという効果がある。これは常時使用はしていないシェアードライブラリやダイナミックリンクライブラリなどに感染した場合などに特に有効である。
【図面の簡単な説明】
【図１】本発明の原理構成図である。
【図２】本発明の一実施例を示すコンピュータシステムのブロック図である。
【図３】本発明のシステム上でプログラムを実行する時のフローチャートである。
【図４】本発明のコンピュータシステムにおけるプログラム更新ブロックに保存されるプログラム更新テーブルである。
【図５】プログラム更新時のフローチャートである。
【図６】プログラム更新時のあたらしいプログラムファイルリソースを取得する部分のフローチャートである。
【図７】ポリシー設定の一実施例である。
【符号の説明】
１０１…本発明のコンピュータシステム、１０２…不揮発性揮発装置、１０３…書換不能不揮発性揮発装置、１０４…プログラム更新チェックブロック、１０５…プログラム実行ブロック、１０６…プログラムＡのプログラム配送センタ、１０７…プログラムＢのプログラム配送センタ、２０１…ＣＰＵ、２０２…メインメモリ、２０３…バス、２０４…ペリフェラルコントローラ、２０５…バックアップメモリ、２０６…リアルタイムクロック、２０７…ハードディスク、２０８…ブートＲＯＭ、２０９…ネットワークインターフェース。
【図１】
2004164351.tif 000003
【図２】
2004164351.tif 000004
【図３】
2004164351.tif 000005
【図４】
2004164351.tif 000006
【図５】
2004164351.tif 000007
【図６】
2004164351.tif 000008
【図７】
2004164351.tif 000009