JP2004164351A - コンピュータシステムの不正プログラム修正方法およびその装置 - Google Patents
コンピュータシステムの不正プログラム修正方法およびその装置 Download PDFInfo
- Publication number
- JP2004164351A JP2004164351A JP2002330195A JP2002330195A JP2004164351A JP 2004164351 A JP2004164351 A JP 2004164351A JP 2002330195 A JP2002330195 A JP 2002330195A JP 2002330195 A JP2002330195 A JP 2002330195A JP 2004164351 A JP2004164351 A JP 2004164351A
- Authority
- JP
- Japan
- Prior art keywords
- program
- computer system
- update
- file
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
【課題】従来手法では対応できないウイルスなど悪意あるプログラムや、テスト期間中では発現しない動作不具合などユーザの意図しない動作に起因するシステムの不調を解決するコンピュータシステムを構築する。
【解決手段】本発明ではシステム上で実行する一部または全部のプログラムをそれが正常であるか悪意あるプログラムに改変させられているかにかかわらず、ある一定の時間が経過すると必ず更新し、実行しなおすことでシステムの状態をリフレッシュし、安定性を保つことを特徴とする。
【選択図】 図1
【解決手段】本発明ではシステム上で実行する一部または全部のプログラムをそれが正常であるか悪意あるプログラムに改変させられているかにかかわらず、ある一定の時間が経過すると必ず更新し、実行しなおすことでシステムの状態をリフレッシュし、安定性を保つことを特徴とする。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、コンピュータのセキュリティシステムおよび安定動作に関する。特に、意図しない動作を行う不正なプログラムによるシステム不安定の修正に関する。
【0002】
【従来の技術】
近年のコンピュータシステムにあっては、それ単体で独立した動作を行う他に、インターネット等各種のネットワークに接続し、それらのネットワークのサーバに格納されたファイルをダウンロードすることが広く普及している。
【0003】
前述したファイルにコンピュータウイルスなどの悪意あるプログラムが潜んでいると、そのファイルの実行時等に当該コンピュータ内にユーザの意思に関わり無くそのプログラムファイルとともに保存されることになる。保存された悪意あるプログラムは、ユーザから意識されること無く潜伏し、再感染のための自己複製を作り、他のプログラムファイルにそれとわからずに保存され、ある条件が整うとプログラムファイルリソースやソフトウェアそのものを破壊するなどの様々な悪影響を与える。
【0004】
あるいは悪意あるプログラムではなくても、プログラム作成時に意図しない動作を行ってしまういわゆる「バグ」や「不具合」のあるプログラムを実行した場合、そのプログラムが原因となってコンピュータシステムが不安定になってしまったり、その他のプログラムを巻き込んでシステム全体が動作不能になる場合がある。
【0005】
したがってハードディスク、フロッピー(登録商標)ディスクなどの外部記憶装置あるいは内部メモリ上に格納されているプログラム、もしくはネットワーク上から取得したプログラムをもとに計算、情報処理等を行なうコンピュータのユーザにとって、そのプログラムの完全性が保証されていることは必要不可欠な条件である。
【0006】
従来、そのような悪意あるプログラムを除去するためには、コンピュータウイルスのワクチンソフトを定期的に起動して感染していないかチェックすることで、コンピュータウイルスを除去するという手法が行われている。これは、悪意あるプログラムを検出するために、予め検出するためのデータパターンを用意しておき、それを用いてシステム上のファイルを逐次チェックし、パターンにマッチしたものを感染したものとみなすというものである。
【0007】
未知の悪意あるプログラムに対応するためには、正しいプログラムとしてのデータパターンを用意し、そのパターンにマッチしないものを悪意あるプログラムとして認識するという手法がある。「ウイルス診断機構の作成システムと作成方法ならびにウイルス診断機構と診断方法」と題する下記の特許文献1では、ファイル内にプログラムサイズやチェックサム、リビジョンなどの情報を設け、実行時に自分自身の検証を行うものが公開されている。「コンピュータウイルス診断方法」と題する下記の特許文献2では、正常なプログラムをいくつかの小片に分割し、各小片の診断情報を保存しておいてウイルス診断時に保存しておいた情報と各小片データを比較し、不一致が生じた場合に感染したと判断する手法が公開されている。
【0008】
悪意の無い不具合のあるプログラムはパターンマッチングなどの手法では発見できないため、ユーザからの動作報告等に基づいて判断される。
【0009】
検出された悪意あるプログラムや、セキュリティホールとなるようなプログラム、不具合のあるプログラムは、問題が発見され、修正された時点で不定期に更新されるため、更新アナウンスをユーザが受け取った後、人手によるアップデートでの対応が行われている。
【0010】
【特許文献1】
特開平7−146788号公報
【特許文献2】
特開平7−175647号公報
【0011】
【発明が解決しようとする課題】
従来の手法は悪意あるプログラムを正常なプログラムとの差異から発見し、これを除去することを根幹においている。しかし、ワクチンソフトなどのパターンマッチングによる手法では、新しいウイルスの潜伏期間が長いとウイルスの検出までに時間がかかるなどが原因となり、新しいウイルスに対応したワクチンが開発される迄にある程度の期間が必要となる。また、先の特許文献1や特許文献2の、未知の悪意あるプログラムへの対応では、チェックルーチンを回避するようなコードが書かれたものに対応できず、新しいデータパターンファイルを用いた方が確実であるケースがでてしまう。
【0012】
また、悪意の無いプログラムの場合、通常そのプログラムが正常に動作するかどうかの動作試験を行い、ある一定の期間、テスト運用を行って正常動作していれば正常と判断する。しかし、実運用では実際にはテスト期間を超える長さでそのプログラムを動作させるため、テスト期間中では発現しない動作不具合に対応できない。
【0013】
したがって、従来手法では結局は以下のような
▲1▼新しい悪意あるプログラムでのシステムの不調に迅速に対応できない
▲2▼実行中に改変された悪意あるプログラムに対応できない
▲3▼悪意有るものではないプログラムに不具合があった場合、それに起因するシステムの不調に迅速に対応できない
という課題が残る。
【0014】
【課題を解決するための手段】
これらの課題はシステム上で動作するプログラムの実行結果が悪意あるものであるかどうか、あるいは意図したものと異なった動作であるかどうかの判断がシステム自身では判別できないことに起因する。これを解決するため、本発明ではシステム上で実行する一部または全部のプログラムを、それが正常であるか悪意あるプログラムに改変させられているかにかかわらず、ある一定の時間が経過すると必ず更新し、実行しなおすことを特徴とする。
【0015】
すなわち、システムを悪意あるプログラムによる不正な改ざん、それによる動作の不調から保護し、常にシステムを最新、安定的な状態に保っておくようにするものである。
【0016】
図1に本発明の構成図を示す。本発明のコンピュータシステム101は少なくともプログラムを格納する不揮発性記憶装置102と、プログラム更新チェックブロック104と、プログラム実行ブロック105とを備えている。実行されるプログラムは不揮発性記憶装置102内に保存されている。プログラム実行時はまずプログラム更新チェックブロック104で実行した日時、再実行手続き等更新情報を記録しておき、しかる後プログラム実行ブロック105にて実行される。プログラム更新チェックブロック104は現在時刻と各々のプログラムの更新情報とを比較し、予め定められた期間が過ぎると、実行中のプログラムを停止し、各々のプログラムに対応した外部の信頼できるプログラム配信センタ(106、107)から改めて不揮発性記憶領域102にネットワークを介してプログラムをダウンロードする。その後、ダウンロードしてきたプログラムを改めて実行しなおす。
【0017】
また、ネットワーク上の外部のプログラム配信センターでなくとも、コンピュータシステム101本体内の書き換え不能な不揮発性領域103など信頼できるプログラムダウンロード用のリソースからプログラムを実行しなおすのでも良い(図1の破線部分で囲まれた部分は信頼できるリソース部分を示している)。
【0018】
このようにプログラムの動作完全性が保てることができるある一定の期間毎にプログラムを更新、再実行することによって、未知のウイルスなど悪意あるプログラムに改変させられたプログラムをウイルス感染前の状態に戻し、動作中のプログラムの使用したメモリ領域はいったん開放して改めて領域を割り当てて再実行することにより、システムの状態をリフレッシュする。
【0019】
【発明の実施の形態】
以下、図面を用いて本発明の実施形態を説明する。
【0020】
図2は図1のコンピュータシステム101のより詳細なブロック図である。
【0021】
プログラム更新チェックブロック104はフラッシュメモリあるいはバッテリバックアップされたSRAMなどにより構成される更新情報を保存するバックアップメモリ205と、実行日時情報等時刻を取得するためのリアルタイムクロック(以下RTC)206とを備えている。
【0022】
不揮発性記憶装置102はハードディスク(以下HDD)207により構成され、自由に書き換え可能なプログラムを格納する領域として用いられる。
【0023】
書換不能不揮発性記憶装置103はEPROMやフラッシュメモリを用いて構成され、ブートROM208として機能する。電源投入後のブートプログラムや後述するプログラム更新チェックプログラム等が記憶されているが、他のアプリケーションプログラムからはこの領域は書き換えできない。
【0024】
プログラム実行ブロック105は各プログラムを実行するCPU201、プログラム実行時に変数領域その他のワークエリアとなるメインメモリ202、周辺デバイスをアクセス制御するためのペリフェラルコントローラ204を備えており、CPU201、メインメモリ202、ブートROM208、バックアップメモリ205、ペリフェラルコントローラ204はバス203で接続される。HDD207、RTC206はペリフェラルコントローラを介し、CPUから自由にアクセスできる。もちろん、1チップマイコンのようにペリフェラルコントローラがCPUに内蔵されているものを使用してもよい。
【0025】
また、ネットワークとはペリフェラルコントローラ204を介して接続されたネットワークインターフェース209を介して接続され、各ネットワーク上のプログラム配信センタとの通信はこれらを通じてやり取りされる。
【0026】
なお、プログラム更新チェックブロック104のバックアップメモリ205は不揮発性記憶装置102のハードディスク(以下HDD)207側に領域を設けておいてもよい。
【0027】
図3に本発明のシステム上でプログラムを実行する時のフローチャートを示す。
【0028】
まずST301にて実行すべきプログラムの本体ファイルや設定ファイルなど実行に必要なリソースを信頼できるリソース源から不揮発性記憶装置102のHDD207へ取得する。リソース源は外部のプログラム配信センタでも書換不能不揮発性装置103でもあるいはインストール用のCDROMのようなリムーバブルメディアなどでもよい。実行時に必要なすべてのリソースは以降まとめてプログラムファイルリソースとする。リソース源がブートROM208であった場合は特にリソースをHDD207へ置きなおす必要はない。次にST302にてプログラム更新チェックブロック104のRTC206より、プログラムを実行する現在の時刻を取得する。次に取得した時刻とプログラムファイルリソースの情報を、ST303にてプログラム更新チェックブロック104のバックアップメモリ205におくプログラム更新テーブルへ起動するプログラムの更新情報として登録する。しかる後、ST304にてプログラムを実行する。
【0029】
図4にプログラム更新テーブルを示す。プログラム更新テーブルは実行するプログラムのプログラム名称と、プログラムのファイルリソースすなわち関連するファイルデータと、プログラムの実行方法と、プログラムの更新方法と、プログラムを起動させた開始時刻と、プログラムを更新する更新時刻とをデータフィールドとしてもっている。レコード数は起動したプログラムの数だけ存在する。
【0030】
実行するプログラムのプログラム名称はそのレコードを検索するときのキー値として利用される。
【0031】
関連ファイルデータはそのプログラムが持つ実行バイナリファイルやデータファイルなど更新すべきプログラムファイルリソースの全てが記載される。
【0032】
プログラムの実行方法は更新時にそのプログラムを再起動する際のコマンドライン引数を指定する。
【0033】
プログラム更新方法は信頼できるリソースのデータ元URLの形で指定され、更新時はこのURLから指定されたプログラムファイルリソースを取得する。例えばプログラム配信元のサイトURLとプログラムが置いてあるディレクトリ、ファイルの指定でFTP://siteA.com/ProgramA/*となっていた場合、更新時はネットワークインターフェースを通じてこのURLをリソース源としてファイルリソースを取得する。あるいはプログラムファイルリソースがリムーバブルメディアのドライブがA:¥上から取得した場合などはここがデータ元URLとして登録される。また、最初にプログラムを取得したリソース源と、プログラム更新方法に指定される記述とは必ずしも一致していなくてもよい。
【0034】
プログラム開始時刻はST302のRTC206から取得した時刻である。プログラム更新時刻はプログラム取得時のインストーラによる指定か、あるいはその指定がない場合はあらかじめ決められたデフォルト値でいつ再起動するのか更新するまでの時刻をプログラム開始時刻に加算した時刻を指定する。
【0035】
図5にプログラム更新時のフローチャートを示す。
【0036】
まずST501にてプログラム更新テーブルのチェックにはいる。ここで最初のレコードの情報を読み取り、RTC206より現在の時刻を取得する。
【0037】
ST502にて現在時刻とプログラム更新時刻フィールドを比較、もしまだそのプログラムの更新時刻になっていない場合はST510で次のレコードに移行する。ST511の分岐にてもしそこで最後まで到達していれば終了となり、そうでなければ再びST501へ戻ってプログラム更新テーブルから次のレコードの情報を読みだす。
【0038】
ST502にてプログラムの更新時刻になっていた場合は、ST503にてそのプログラムを停止する。ここでそのプログラムが占有していたコンピュータシステム上のI/Oや各デバイスの操作権等を解放し、安全にメモリ上からその領域を取り除く。これはそのプログラムに決められたプログラム更新用の停止プロセスを用いてもよいし、そうした手段が用意されていなければ、プログラムビジーでない状態をまってOS上からプロセスをキルするのでもよい。ビジー状態の終了を待つ場合はタイムアウト値を設定し、一定時間以上の無応答には強制的にプロセスをキルする。
【0039】
プログラム停止後、ST505にて更新すべきプログラムファイルリソースを取得する。これはプログラム更新テーブルのプログラム更新方法フィールドに従ったリソース源から取得し、その後ST506にてファイルの更新を行う。
【0040】
このプログラムファイルリソース取得、更新の部分ST504をより詳しく書いたフローチャートを図6に示す。まずST601にて信頼できるリソース源へのアクセスを行う。ここでネットワークトラブルや、あるいはプログラムファイルリソースを取得したリムーバブルメディアがドライブ入っていないなど、なんらかの原因で更新すべきプログラムファイルリソースが取得できなかった場合、ST602の分岐でST604へ移行し、ポリシー設定からプログラムファイル更新なしでプログラムを再実行するかどうかを判断する。もしファイル更新がない場合にプログラムの再実行を禁止していた場合はST608にて停止したプログラムの再実行を中止したログを残す等ポリシーに従ったプログラム停止処理を行った後、この処理を抜け、ST509への処理へと移行する。プログラム再実行のみ行えるポリシーの場合はプログラムリソースファイル更新処理を行わず、停止処理も行わないままST504の処理を終える。
【0041】
トラブルなく更新するファイルが取得できる場合はST602の分岐からST603の分岐へと移行する。ST603では不揮発性記憶装置102の容量を調べ、新しくプログラムファイルリソースを更新できることを確認した後、ST605にてプログラムファイルリソースをリソース源から取得する。容量が足りなかった場合はST604へと分岐し、プログラムファイルリソースを取得できなかった動作と同様の処理を行う。ST606の取得したファイルの更新でST504の処理は終了となる。
【0042】
ST505、ST506でのファイル更新後、次にST507にてメモリのガーベージコレクトを行う。これにより、解放したメモリ領域のフラグメンテーションを防ぐ。しかる後、ST508にてプログラム更新テーブルのプログラム実行方法のフィールドデータにより、更新したプログラムファイルリソースからあらためてプログラムを起動しなおす。その後、初回のプログラム起動時と同様にプログラム更新テーブルの内容を現在時刻にあわせて内容を更新し、ST510にて次のデータレコードへと処理が移る。ST511の分岐でもしそこで最後まで到達していれば終了となり、そうでなければ再びST502へ戻ってプログラム更新テーブルから次のレコードの情報を読みだす。
【0043】
このプログラム更新チェックプログラムはタイマ割り込みなどによって定期的にシステム上で実行される。
【0044】
ポリシー設定の例を図7に示す。各ポリシーは項目毎に固有のキー値に対し、それぞれの設定値を持つ形式でデータ化され、ファイルとして不揮発性記憶装置に保存されている。プログラムファイルリソースが取得できなかった場合のポリシーはキー値「Restart Only」へ「true」または「false」の値をとり、ST604でのポリシー設定確認ではこの値で条件分岐する。なお、この設定はリソース源へのアクセストラブル時などの各処理ブロックでここでは記述しないよりプログラム言語レベルに近い処理、例えば信頼できるリソース源へのアクセストラブルに際し、リトライ回数の指定などでも利用される。
【0045】
【発明の効果】
以上説明したように、本発明によれば、システム上で実行するプログラムをある一定の時間が経過すると更新し、実行しなおすことから、システムを悪意あるプログラムによる不正な改ざん、それによる動作の不調から保護し、常にシステムを最新、安定的な状態に保っておくようにすることができる効果がある。
【0046】
また、これにより、プログラムに悪意有るものではない不具合があった場合などの従来のワクチンプログラムでは対応できないケースでも、メモリリークや不正なデバイスの占有、無限ループでの無応答などからシステムを保護でき、安定した動作を得ることができるという効果がある。
【0047】
また、本発明によれば、システム上で実行するプログラムの修正に定期的に対応することになり、これによりユーザが意識していなくとも常に最新のプログラムが利用できるという効果がある。
【0048】
また、本発明によれば、従来のワクチンプログラムで検出されない未知のウイルスなどが感染していた場合でも、そのプログラムファイルリソースが利用される前ならば未然に被害を防げるという効果がある。これは常時使用はしていないシェアードライブラリやダイナミックリンクライブラリなどに感染した場合などに特に有効である。
【図面の簡単な説明】
【図1】本発明の原理構成図である。
【図2】本発明の一実施例を示すコンピュータシステムのブロック図である。
【図3】本発明のシステム上でプログラムを実行する時のフローチャートである。
【図4】本発明のコンピュータシステムにおけるプログラム更新ブロックに保存されるプログラム更新テーブルである。
【図5】プログラム更新時のフローチャートである。
【図6】プログラム更新時のあたらしいプログラムファイルリソースを取得する部分のフローチャートである。
【図7】ポリシー設定の一実施例である。
【符号の説明】
101…本発明のコンピュータシステム、102…不揮発性揮発装置、103…書換不能不揮発性揮発装置、104…プログラム更新チェックブロック、105…プログラム実行ブロック、106…プログラムAのプログラム配送センタ、107…プログラムBのプログラム配送センタ、201…CPU、202…メインメモリ、203…バス、204…ペリフェラルコントローラ、205…バックアップメモリ、206…リアルタイムクロック、207…ハードディスク、208…ブートROM、209…ネットワークインターフェース。
【発明の属する技術分野】
本発明は、コンピュータのセキュリティシステムおよび安定動作に関する。特に、意図しない動作を行う不正なプログラムによるシステム不安定の修正に関する。
【0002】
【従来の技術】
近年のコンピュータシステムにあっては、それ単体で独立した動作を行う他に、インターネット等各種のネットワークに接続し、それらのネットワークのサーバに格納されたファイルをダウンロードすることが広く普及している。
【0003】
前述したファイルにコンピュータウイルスなどの悪意あるプログラムが潜んでいると、そのファイルの実行時等に当該コンピュータ内にユーザの意思に関わり無くそのプログラムファイルとともに保存されることになる。保存された悪意あるプログラムは、ユーザから意識されること無く潜伏し、再感染のための自己複製を作り、他のプログラムファイルにそれとわからずに保存され、ある条件が整うとプログラムファイルリソースやソフトウェアそのものを破壊するなどの様々な悪影響を与える。
【0004】
あるいは悪意あるプログラムではなくても、プログラム作成時に意図しない動作を行ってしまういわゆる「バグ」や「不具合」のあるプログラムを実行した場合、そのプログラムが原因となってコンピュータシステムが不安定になってしまったり、その他のプログラムを巻き込んでシステム全体が動作不能になる場合がある。
【0005】
したがってハードディスク、フロッピー(登録商標)ディスクなどの外部記憶装置あるいは内部メモリ上に格納されているプログラム、もしくはネットワーク上から取得したプログラムをもとに計算、情報処理等を行なうコンピュータのユーザにとって、そのプログラムの完全性が保証されていることは必要不可欠な条件である。
【0006】
従来、そのような悪意あるプログラムを除去するためには、コンピュータウイルスのワクチンソフトを定期的に起動して感染していないかチェックすることで、コンピュータウイルスを除去するという手法が行われている。これは、悪意あるプログラムを検出するために、予め検出するためのデータパターンを用意しておき、それを用いてシステム上のファイルを逐次チェックし、パターンにマッチしたものを感染したものとみなすというものである。
【0007】
未知の悪意あるプログラムに対応するためには、正しいプログラムとしてのデータパターンを用意し、そのパターンにマッチしないものを悪意あるプログラムとして認識するという手法がある。「ウイルス診断機構の作成システムと作成方法ならびにウイルス診断機構と診断方法」と題する下記の特許文献1では、ファイル内にプログラムサイズやチェックサム、リビジョンなどの情報を設け、実行時に自分自身の検証を行うものが公開されている。「コンピュータウイルス診断方法」と題する下記の特許文献2では、正常なプログラムをいくつかの小片に分割し、各小片の診断情報を保存しておいてウイルス診断時に保存しておいた情報と各小片データを比較し、不一致が生じた場合に感染したと判断する手法が公開されている。
【0008】
悪意の無い不具合のあるプログラムはパターンマッチングなどの手法では発見できないため、ユーザからの動作報告等に基づいて判断される。
【0009】
検出された悪意あるプログラムや、セキュリティホールとなるようなプログラム、不具合のあるプログラムは、問題が発見され、修正された時点で不定期に更新されるため、更新アナウンスをユーザが受け取った後、人手によるアップデートでの対応が行われている。
【0010】
【特許文献1】
特開平7−146788号公報
【特許文献2】
特開平7−175647号公報
【0011】
【発明が解決しようとする課題】
従来の手法は悪意あるプログラムを正常なプログラムとの差異から発見し、これを除去することを根幹においている。しかし、ワクチンソフトなどのパターンマッチングによる手法では、新しいウイルスの潜伏期間が長いとウイルスの検出までに時間がかかるなどが原因となり、新しいウイルスに対応したワクチンが開発される迄にある程度の期間が必要となる。また、先の特許文献1や特許文献2の、未知の悪意あるプログラムへの対応では、チェックルーチンを回避するようなコードが書かれたものに対応できず、新しいデータパターンファイルを用いた方が確実であるケースがでてしまう。
【0012】
また、悪意の無いプログラムの場合、通常そのプログラムが正常に動作するかどうかの動作試験を行い、ある一定の期間、テスト運用を行って正常動作していれば正常と判断する。しかし、実運用では実際にはテスト期間を超える長さでそのプログラムを動作させるため、テスト期間中では発現しない動作不具合に対応できない。
【0013】
したがって、従来手法では結局は以下のような
▲1▼新しい悪意あるプログラムでのシステムの不調に迅速に対応できない
▲2▼実行中に改変された悪意あるプログラムに対応できない
▲3▼悪意有るものではないプログラムに不具合があった場合、それに起因するシステムの不調に迅速に対応できない
という課題が残る。
【0014】
【課題を解決するための手段】
これらの課題はシステム上で動作するプログラムの実行結果が悪意あるものであるかどうか、あるいは意図したものと異なった動作であるかどうかの判断がシステム自身では判別できないことに起因する。これを解決するため、本発明ではシステム上で実行する一部または全部のプログラムを、それが正常であるか悪意あるプログラムに改変させられているかにかかわらず、ある一定の時間が経過すると必ず更新し、実行しなおすことを特徴とする。
【0015】
すなわち、システムを悪意あるプログラムによる不正な改ざん、それによる動作の不調から保護し、常にシステムを最新、安定的な状態に保っておくようにするものである。
【0016】
図1に本発明の構成図を示す。本発明のコンピュータシステム101は少なくともプログラムを格納する不揮発性記憶装置102と、プログラム更新チェックブロック104と、プログラム実行ブロック105とを備えている。実行されるプログラムは不揮発性記憶装置102内に保存されている。プログラム実行時はまずプログラム更新チェックブロック104で実行した日時、再実行手続き等更新情報を記録しておき、しかる後プログラム実行ブロック105にて実行される。プログラム更新チェックブロック104は現在時刻と各々のプログラムの更新情報とを比較し、予め定められた期間が過ぎると、実行中のプログラムを停止し、各々のプログラムに対応した外部の信頼できるプログラム配信センタ(106、107)から改めて不揮発性記憶領域102にネットワークを介してプログラムをダウンロードする。その後、ダウンロードしてきたプログラムを改めて実行しなおす。
【0017】
また、ネットワーク上の外部のプログラム配信センターでなくとも、コンピュータシステム101本体内の書き換え不能な不揮発性領域103など信頼できるプログラムダウンロード用のリソースからプログラムを実行しなおすのでも良い(図1の破線部分で囲まれた部分は信頼できるリソース部分を示している)。
【0018】
このようにプログラムの動作完全性が保てることができるある一定の期間毎にプログラムを更新、再実行することによって、未知のウイルスなど悪意あるプログラムに改変させられたプログラムをウイルス感染前の状態に戻し、動作中のプログラムの使用したメモリ領域はいったん開放して改めて領域を割り当てて再実行することにより、システムの状態をリフレッシュする。
【0019】
【発明の実施の形態】
以下、図面を用いて本発明の実施形態を説明する。
【0020】
図2は図1のコンピュータシステム101のより詳細なブロック図である。
【0021】
プログラム更新チェックブロック104はフラッシュメモリあるいはバッテリバックアップされたSRAMなどにより構成される更新情報を保存するバックアップメモリ205と、実行日時情報等時刻を取得するためのリアルタイムクロック(以下RTC)206とを備えている。
【0022】
不揮発性記憶装置102はハードディスク(以下HDD)207により構成され、自由に書き換え可能なプログラムを格納する領域として用いられる。
【0023】
書換不能不揮発性記憶装置103はEPROMやフラッシュメモリを用いて構成され、ブートROM208として機能する。電源投入後のブートプログラムや後述するプログラム更新チェックプログラム等が記憶されているが、他のアプリケーションプログラムからはこの領域は書き換えできない。
【0024】
プログラム実行ブロック105は各プログラムを実行するCPU201、プログラム実行時に変数領域その他のワークエリアとなるメインメモリ202、周辺デバイスをアクセス制御するためのペリフェラルコントローラ204を備えており、CPU201、メインメモリ202、ブートROM208、バックアップメモリ205、ペリフェラルコントローラ204はバス203で接続される。HDD207、RTC206はペリフェラルコントローラを介し、CPUから自由にアクセスできる。もちろん、1チップマイコンのようにペリフェラルコントローラがCPUに内蔵されているものを使用してもよい。
【0025】
また、ネットワークとはペリフェラルコントローラ204を介して接続されたネットワークインターフェース209を介して接続され、各ネットワーク上のプログラム配信センタとの通信はこれらを通じてやり取りされる。
【0026】
なお、プログラム更新チェックブロック104のバックアップメモリ205は不揮発性記憶装置102のハードディスク(以下HDD)207側に領域を設けておいてもよい。
【0027】
図3に本発明のシステム上でプログラムを実行する時のフローチャートを示す。
【0028】
まずST301にて実行すべきプログラムの本体ファイルや設定ファイルなど実行に必要なリソースを信頼できるリソース源から不揮発性記憶装置102のHDD207へ取得する。リソース源は外部のプログラム配信センタでも書換不能不揮発性装置103でもあるいはインストール用のCDROMのようなリムーバブルメディアなどでもよい。実行時に必要なすべてのリソースは以降まとめてプログラムファイルリソースとする。リソース源がブートROM208であった場合は特にリソースをHDD207へ置きなおす必要はない。次にST302にてプログラム更新チェックブロック104のRTC206より、プログラムを実行する現在の時刻を取得する。次に取得した時刻とプログラムファイルリソースの情報を、ST303にてプログラム更新チェックブロック104のバックアップメモリ205におくプログラム更新テーブルへ起動するプログラムの更新情報として登録する。しかる後、ST304にてプログラムを実行する。
【0029】
図4にプログラム更新テーブルを示す。プログラム更新テーブルは実行するプログラムのプログラム名称と、プログラムのファイルリソースすなわち関連するファイルデータと、プログラムの実行方法と、プログラムの更新方法と、プログラムを起動させた開始時刻と、プログラムを更新する更新時刻とをデータフィールドとしてもっている。レコード数は起動したプログラムの数だけ存在する。
【0030】
実行するプログラムのプログラム名称はそのレコードを検索するときのキー値として利用される。
【0031】
関連ファイルデータはそのプログラムが持つ実行バイナリファイルやデータファイルなど更新すべきプログラムファイルリソースの全てが記載される。
【0032】
プログラムの実行方法は更新時にそのプログラムを再起動する際のコマンドライン引数を指定する。
【0033】
プログラム更新方法は信頼できるリソースのデータ元URLの形で指定され、更新時はこのURLから指定されたプログラムファイルリソースを取得する。例えばプログラム配信元のサイトURLとプログラムが置いてあるディレクトリ、ファイルの指定でFTP://siteA.com/ProgramA/*となっていた場合、更新時はネットワークインターフェースを通じてこのURLをリソース源としてファイルリソースを取得する。あるいはプログラムファイルリソースがリムーバブルメディアのドライブがA:¥上から取得した場合などはここがデータ元URLとして登録される。また、最初にプログラムを取得したリソース源と、プログラム更新方法に指定される記述とは必ずしも一致していなくてもよい。
【0034】
プログラム開始時刻はST302のRTC206から取得した時刻である。プログラム更新時刻はプログラム取得時のインストーラによる指定か、あるいはその指定がない場合はあらかじめ決められたデフォルト値でいつ再起動するのか更新するまでの時刻をプログラム開始時刻に加算した時刻を指定する。
【0035】
図5にプログラム更新時のフローチャートを示す。
【0036】
まずST501にてプログラム更新テーブルのチェックにはいる。ここで最初のレコードの情報を読み取り、RTC206より現在の時刻を取得する。
【0037】
ST502にて現在時刻とプログラム更新時刻フィールドを比較、もしまだそのプログラムの更新時刻になっていない場合はST510で次のレコードに移行する。ST511の分岐にてもしそこで最後まで到達していれば終了となり、そうでなければ再びST501へ戻ってプログラム更新テーブルから次のレコードの情報を読みだす。
【0038】
ST502にてプログラムの更新時刻になっていた場合は、ST503にてそのプログラムを停止する。ここでそのプログラムが占有していたコンピュータシステム上のI/Oや各デバイスの操作権等を解放し、安全にメモリ上からその領域を取り除く。これはそのプログラムに決められたプログラム更新用の停止プロセスを用いてもよいし、そうした手段が用意されていなければ、プログラムビジーでない状態をまってOS上からプロセスをキルするのでもよい。ビジー状態の終了を待つ場合はタイムアウト値を設定し、一定時間以上の無応答には強制的にプロセスをキルする。
【0039】
プログラム停止後、ST505にて更新すべきプログラムファイルリソースを取得する。これはプログラム更新テーブルのプログラム更新方法フィールドに従ったリソース源から取得し、その後ST506にてファイルの更新を行う。
【0040】
このプログラムファイルリソース取得、更新の部分ST504をより詳しく書いたフローチャートを図6に示す。まずST601にて信頼できるリソース源へのアクセスを行う。ここでネットワークトラブルや、あるいはプログラムファイルリソースを取得したリムーバブルメディアがドライブ入っていないなど、なんらかの原因で更新すべきプログラムファイルリソースが取得できなかった場合、ST602の分岐でST604へ移行し、ポリシー設定からプログラムファイル更新なしでプログラムを再実行するかどうかを判断する。もしファイル更新がない場合にプログラムの再実行を禁止していた場合はST608にて停止したプログラムの再実行を中止したログを残す等ポリシーに従ったプログラム停止処理を行った後、この処理を抜け、ST509への処理へと移行する。プログラム再実行のみ行えるポリシーの場合はプログラムリソースファイル更新処理を行わず、停止処理も行わないままST504の処理を終える。
【0041】
トラブルなく更新するファイルが取得できる場合はST602の分岐からST603の分岐へと移行する。ST603では不揮発性記憶装置102の容量を調べ、新しくプログラムファイルリソースを更新できることを確認した後、ST605にてプログラムファイルリソースをリソース源から取得する。容量が足りなかった場合はST604へと分岐し、プログラムファイルリソースを取得できなかった動作と同様の処理を行う。ST606の取得したファイルの更新でST504の処理は終了となる。
【0042】
ST505、ST506でのファイル更新後、次にST507にてメモリのガーベージコレクトを行う。これにより、解放したメモリ領域のフラグメンテーションを防ぐ。しかる後、ST508にてプログラム更新テーブルのプログラム実行方法のフィールドデータにより、更新したプログラムファイルリソースからあらためてプログラムを起動しなおす。その後、初回のプログラム起動時と同様にプログラム更新テーブルの内容を現在時刻にあわせて内容を更新し、ST510にて次のデータレコードへと処理が移る。ST511の分岐でもしそこで最後まで到達していれば終了となり、そうでなければ再びST502へ戻ってプログラム更新テーブルから次のレコードの情報を読みだす。
【0043】
このプログラム更新チェックプログラムはタイマ割り込みなどによって定期的にシステム上で実行される。
【0044】
ポリシー設定の例を図7に示す。各ポリシーは項目毎に固有のキー値に対し、それぞれの設定値を持つ形式でデータ化され、ファイルとして不揮発性記憶装置に保存されている。プログラムファイルリソースが取得できなかった場合のポリシーはキー値「Restart Only」へ「true」または「false」の値をとり、ST604でのポリシー設定確認ではこの値で条件分岐する。なお、この設定はリソース源へのアクセストラブル時などの各処理ブロックでここでは記述しないよりプログラム言語レベルに近い処理、例えば信頼できるリソース源へのアクセストラブルに際し、リトライ回数の指定などでも利用される。
【0045】
【発明の効果】
以上説明したように、本発明によれば、システム上で実行するプログラムをある一定の時間が経過すると更新し、実行しなおすことから、システムを悪意あるプログラムによる不正な改ざん、それによる動作の不調から保護し、常にシステムを最新、安定的な状態に保っておくようにすることができる効果がある。
【0046】
また、これにより、プログラムに悪意有るものではない不具合があった場合などの従来のワクチンプログラムでは対応できないケースでも、メモリリークや不正なデバイスの占有、無限ループでの無応答などからシステムを保護でき、安定した動作を得ることができるという効果がある。
【0047】
また、本発明によれば、システム上で実行するプログラムの修正に定期的に対応することになり、これによりユーザが意識していなくとも常に最新のプログラムが利用できるという効果がある。
【0048】
また、本発明によれば、従来のワクチンプログラムで検出されない未知のウイルスなどが感染していた場合でも、そのプログラムファイルリソースが利用される前ならば未然に被害を防げるという効果がある。これは常時使用はしていないシェアードライブラリやダイナミックリンクライブラリなどに感染した場合などに特に有効である。
【図面の簡単な説明】
【図1】本発明の原理構成図である。
【図2】本発明の一実施例を示すコンピュータシステムのブロック図である。
【図3】本発明のシステム上でプログラムを実行する時のフローチャートである。
【図4】本発明のコンピュータシステムにおけるプログラム更新ブロックに保存されるプログラム更新テーブルである。
【図5】プログラム更新時のフローチャートである。
【図6】プログラム更新時のあたらしいプログラムファイルリソースを取得する部分のフローチャートである。
【図7】ポリシー設定の一実施例である。
【符号の説明】
101…本発明のコンピュータシステム、102…不揮発性揮発装置、103…書換不能不揮発性揮発装置、104…プログラム更新チェックブロック、105…プログラム実行ブロック、106…プログラムAのプログラム配送センタ、107…プログラムBのプログラム配送センタ、201…CPU、202…メインメモリ、203…バス、204…ペリフェラルコントローラ、205…バックアップメモリ、206…リアルタイムクロック、207…ハードディスク、208…ブートROM、209…ネットワークインターフェース。
Claims (5)
- コンピュータシステム上で動作するプログラムの予期しない不正な動作に起因するシステムの不調に対応する手法であって、コンピュータシステム上で動作する一部または全部のプログラムを各々の定められた一定期間が過ぎた時点でいったん終了し、終了後に再実行することを特徴とするコンピュータシステムの不正プログラム修正方法。
- 請求項1記載の方法を実現するコンピュータシステムであって、少なくともプログラムを格納する不揮発性揮発記憶装置と、プログラムを実行する手段と、プログラム更新のチェックを行う手段とを備えており、プログラムを実行する際にはまず更新をチェックするためのプログラム実行更新情報を記録しておき、しかる後プログラムを実行し、プログラム更新のチェックによって、予め定められた期間が過ぎると、実行中のプログラムを停止し、改めて実行しなおすことを特徴とするコンピュータシステム。
- 請求項1記載のコンピュータシステムの不正プログラム修正方法において、プログラムを再実行する際には、そのプログラムファイルリソースを正常なファイルが存在するリソース源から取得しなおしてから再実行するすることを特徴とすコンピュータシステムの不正プログラム修正方法。
- 請求項3記載の方法を実現するコンピュータシステムであって、請求項2記載のコンピュータシステムにプログラムファイルリソース源へアクセスするためのアクセス手段を備え、プログラム更新のチェックによって、予め定められた期間が過ぎると、実行中のプログラムを停止し、リソース源から不揮発性記憶装置へプログラムファイルリソースを再取得した後、そのプログラムを再実行することを特徴とするコンピュータシステム。
- 請求項4記載のコンピュータシステムにおいて、再実行ポリシーにしたがってプログラムファイルリソース源へのアクセス状況および不揮発性記憶装置へのプログラムファイルリソース取得状況によって再実行の可、不可を判断することを特徴とするコンピュータシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002330195A JP2004164351A (ja) | 2002-11-14 | 2002-11-14 | コンピュータシステムの不正プログラム修正方法およびその装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002330195A JP2004164351A (ja) | 2002-11-14 | 2002-11-14 | コンピュータシステムの不正プログラム修正方法およびその装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004164351A true JP2004164351A (ja) | 2004-06-10 |
Family
ID=32807944
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002330195A Pending JP2004164351A (ja) | 2002-11-14 | 2002-11-14 | コンピュータシステムの不正プログラム修正方法およびその装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004164351A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010511940A (ja) * | 2006-12-01 | 2010-04-15 | マイクロソフト コーポレーション | システム解析および管理 |
JP2013069053A (ja) * | 2011-09-21 | 2013-04-18 | Toshiba Corp | 制御装置およびモニタプログラム |
JP2015531928A (ja) * | 2012-08-18 | 2015-11-05 | ルミナル, インク.Luminal, Inc. | セキュアな計算環境を提供するシステム及び方法 |
-
2002
- 2002-11-14 JP JP2002330195A patent/JP2004164351A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010511940A (ja) * | 2006-12-01 | 2010-04-15 | マイクロソフト コーポレーション | システム解析および管理 |
JP4903879B2 (ja) * | 2006-12-01 | 2012-03-28 | マイクロソフト コーポレーション | システム解析および管理 |
JP2013069053A (ja) * | 2011-09-21 | 2013-04-18 | Toshiba Corp | 制御装置およびモニタプログラム |
JP2015531928A (ja) * | 2012-08-18 | 2015-11-05 | ルミナル, インク.Luminal, Inc. | セキュアな計算環境を提供するシステム及び方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10701084B2 (en) | Reliable and secure firmware update with a dynamic validation for internet of things (IoT) devices | |
TWI648652B (zh) | 修復受危害之系統啓動碼之技術 | |
KR100965644B1 (ko) | 서비스 프로세서 코드의 실행 시간 인메모리 패칭 방법 및시스템 | |
JP3561211B2 (ja) | 情報処理装置および不揮発性記憶装置の書き換え制御方法 | |
US6675295B1 (en) | Method and computer system for detecting and correcting a failure in a computer application program during startup | |
JP4426736B2 (ja) | プログラム修正方法およびプログラム | |
US6950964B1 (en) | Driver protection | |
TWI471726B (zh) | 快取資料與元資料之管理 | |
US11163886B2 (en) | Information handling system firmware bit error detection and correction | |
US7647639B2 (en) | Methods for detecting executable code which has been altered | |
US20090013409A1 (en) | Malware automated removal system and method | |
JP7022809B2 (ja) | コンピュータシステム、および、その安全管理方法、および、コンピュータソフトウェア製品 | |
US7640586B1 (en) | Reducing HTTP malware scanner latency using HTTP range queries for random access | |
JP2006527423A (ja) | コンピュータオペレーションシステムの修復方法 | |
US20120030766A1 (en) | Method and system for defining a safe storage area for use in recovering a computer system | |
JP2003316595A (ja) | インストール方法、ファイル更新方法、プログラム及びコンピュータシステム | |
US20040153840A1 (en) | Method and system for detection and correction of entrance into an improper MBR state in a computer system | |
WO2010081323A1 (zh) | 一种单板应用版本的实现方法及系统 | |
TW462025B (en) | BIOS virus protection method | |
WO2022037014A1 (zh) | 一种arm服务器的启动修复方法及相关装置 | |
CN107563198B (zh) | 一种工业控制系统的主机病毒防治系统及方法 | |
US8347285B2 (en) | Embedded agent for self-healing software | |
JP2004164351A (ja) | コンピュータシステムの不正プログラム修正方法およびその装置 | |
CN115729647B (zh) | 服务器启动管理系统及方法 | |
US20060112313A1 (en) | Bootable virtual disk for computer system recovery |