(57)【要約】【課題】従来攻撃対策装置は、攻撃パターンデータベースとのパターンマッチングによる攻撃検知方式、システムコール監視方式、Ｉ／Ｏデバイスドライバ監視方式等あるが、何れも処理が煩雑で、攻撃の種類によっては防御できない。【解決手段】タスクからのシステムコール要求を入力し、正当性検査機能へのジャンプアドレスを出力するシステムコールテーブルの出力で呼び出された正当性検査機能手段が、システムコール要求の正当性を判定し判定結果を出力すると共に、不正なシステムコール要求と断定した場合，そのシステムコール要求を棄却し、攻撃対策機能手段が、正当性検査機能手段の不正システムコール要求判定結果により，対策を講じ、システムコールが正当性検査機能手段の正当システムコール要求判定結果で呼び出され命令を実行する。【選択図】　　　　図１
2004126854.tif 000002
【特許請求の範囲】
【請求項１】
タスクから発行されたシステムコール要求を入力し、正当性検査機能へのジャンプアドレスを出力するシステムコールテーブルと、
ジャンプアドレスによって呼び出され、システムコール要求発行時にＯＳによって特定メモリ領域に格納されるシステムコール呼び出し元のリターン関数アドレスから、システムコール要求の正当性を判定し判定結果を出力すると共に、不正なシステムコール要求と断定した場合、そのシステムコール要求を棄却する正当性検査機能手段と、
正当性検査機能手段の不正システムコール要求判定結果を入力し、対策を講ずる攻撃対策機能手段と、
正当性検査機能手段の正当システムコール要求判定結果を入力して呼び出され、命令を実行するシステムコールと
を備えた攻撃対策装置。
【請求項２】
攻撃対策機能手段は、正当性検査機能手段の判定結果が不正なシステムコール要求である場合、攻撃があったことをユーザへ通知する構成とされたことを特徴とする請求項１記載の攻撃対策装置。
【請求項３】
攻撃対策機能手段は、ユーザへの通知を物理的特性の異なる複数種類を有し、ユーザが選択可能である構成とされたことを特徴とする請求項２記載の攻撃対策装置。
【請求項４】
正当性検査機能手段は、
システムコールの正当性を定義するデータを格納すると共に、そのデータの更新が可能な判定ルールデータベースと
判定ルールデータベースのデータを参照し、ルールに従って正当性判定を行う正当性判定機能とを備えたことを特徴とする　請求項１から請求項３の何れかに記載の攻撃対策装置。
【請求項５】
タスクの状態を保存可能なタスク状態保存メモリを備え、攻撃対策機能手段は
タスクの状態をタスクからの命令によってタスク状態保存メモリに保存するタスクの状態保存機能と、
保存しておいたタスクの状態を正当性検査機能手段からの命令によってタスクへ反映する状態復旧機能とを備えたことを特徴とする請求項１から請求項４の何れかに記載の攻撃対策装置。
【請求項６】
攻撃対策機能手段は、タスクのデータが正当性検査である場合は、タスクの状態保存命令を省くことを特徴とする請求項５に記載の攻撃対策装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、攻撃者による攻撃を検知し、攻撃を未然に防ぎ、対策を講じるための攻撃対策装置に関するものである。
【０００２】
【従来の技術】
図４は一般に用いられる従来の攻撃検知装置の構成図である。図４において、４０１は攻撃検知装置で、データ監視部４０２、既存攻撃パターンデータベース４０３を備えている。１０１は攻撃対象プロセス（タスク）、４０４は外部からタスクへ入力されるデータの入力端子である。データ監視部４０２では、既存攻撃パターンデータベース４０３に格納されている攻撃パターンと外部からの入力データとの類似性を検査する。このとき入力データと類似性の高いパターンがデータベース４０３内に発見された場合は、それを攻撃として検知し、攻撃が起こったことをシステム管理者へ通知する。攻撃検知後、不正データの削除といった措置がとられることもある。
【０００３】
また、図５は、例えば、特開平０９−２１８８３７で示されている、オペレーティングシステム（ＯＳ）のシステムコールを監視することによりコンピュータリソースのアクセス制御を行う方式を表している。図５において、１０１はコンピュータ上で実行されているプロセス（タスク）、１０３はＯＳ上のシステムコールテーブル、１０５はシステムコール、１０４は正当性検査機能手段、１０６はシステムコールによって実行される命令、１０７はＯＳを表している。
【０００４】
タスク１０１はシステムコール要求を発行する際には、通常、システムコールテーブル１０３を介して該当するシステムコール１０５をＯＳ１０７へ要求する。特開平０９−２１８８３７では、あらかじめ個々のタスク１０１ごとに許可するシステムコール１０５を定めておき、それに従ってアクセス制御を行なう。システムコール１０５の監視では、ＯＳ１０７上のシステムコール１０５を変更して、実行されたシステムコール１０５によって正当性検査機能手段１０４呼び出して正当性を検査する。このとき、システムコール要求を発行したタスク１０１に発行する権限がない場合には、不正なシステムコール要求であると断定し、要求されたシステムコール１０５を停止する。
【０００５】
また、例えば、特開２００１−３３７８６４で示されている方式では、Ｉ／Ｏデバイスドライバの呼び出しを監視するものである。通常Ｉ／Ｏデバイスドライバの呼び出しには、システムコールを伴うため、先に述べたシステムコールを監視する方式の特別な場合と位置付けられる。
【０００６】
【特許文献１】
特開平０９−２１８８３７号公報（第５−６頁）
【特許文献２】
特開２００１−３３７８６４号公報（第１０−１１頁）
【０００７】
【発明が解決しようとする課題】
【０００８】
従来の攻撃検知システムのうち、既存の攻撃パターンデータベースとのパターンマッチングによる方式では、（１）未知の攻撃に対しては防御することができない、（２）既存攻撃パターンデータベースの内容を頻繁に更新する必要がある、（３）例えばコンテンツデータなど、データ形式が多岐におよぶデータを検査するためには、個々のデータ形式を処理するための機能が必要となり、プログラムの肥大化や処理の遅延が生じるといった問題点がある。
【０００９】
また、システムコールを監視する方式（特開平０９−２１８８３７）では、（１）ＯＳの監視するシステムコールごとに正当性検査機能手段を呼び出す変更を加えなければならない、（２）正当なシステムコールを不当なシステムコールと判定してしまうこと（誤検知）が多いといった問題点がある。
【００１０】
さらに、ＯＳのＩ／Ｏデバイスドライバを監視する方式（特開２００１−３３７８６４）では、（１）ドライバレベルでのアクセス制御を対象としており、抽象度が低く、処理が煩雑になる、（２）デバイスドライバを呼び出さない攻撃を制御できないといった問題点がある。
【００１１】
この発明は上記のような問題点を解決するためになされたもので、例えばコンピュータウイルスやワームなど不正なプログラムがＯＳ上で実行された場合であっても、そのプログラムから発行された不正なシステムコール要求を棄却し、攻撃を未然に防止し、攻撃に対する対策を行なうための機構に関するものである。
【００１２】
【課題を解決するための手段】
この発明に係る攻撃対策装置はタスクから発行されたシステムコール要求を入力し、正当性検査機能へのジャンプアドレスを出力するシステムコールテーブルと、
システムコール要求発行時にＯＳによって特定メモリ領域に格納されるシステムコール呼び出し元のリターン関数アドレスから、システムコール要求の正当性を判定し判定結果を出力すると共に、不正なシステムコール要求と断定した場合、そのシステムコール要求を棄却する正当性検査機能手段と、
正当性検査機能手段の不正システムコール要求判定結果を入力し、対策を講ずる攻撃対策機能手段と、
正当性検査機能手段の正当システムコール要求判定結果を入力して呼び出され、命令を実行するシステムコールと
を備えたものである。
【００１３】
【発明の実施の形態】
実施の形態１．
図１はこの発明の全体を示す構成図である。
図１において、１０１はコンピュータ上のプロセス（タスク）、１０２はコンピュータ上のメモリに確保されたタスク１０１用のメモリ領域、１０３はシステムコールテーブル、１０４は正当性検査機能手段、１０５はシステムコール、１０６は実際の命令、１０７はオペレーティングシステム（ＯＳ）で上記システムコールテーブル１０３、システムコール１０５、実際の命令１０６を備える。１０８はタスクからの（正当な）システムコール呼び出し信号、１０９はタスクからの（不正な）システムコール呼び出し信号、１１０は正当性検査機能手段により正当性が確認されたシステムコール呼び出し信号、１１１は正当性検査機能手段により不当なシステムコールと判断されたシステムコール呼び出し信号、１１２は攻撃対策機能手段を表している。
【００１４】
システムコールテーブル１０３は、タスク１０１がシステムコール１０５を呼び出す際にシステムコール識別番号からシステムコール１０５の呼び出しアドレスを検索するための情報が記述されている。この発明では、システムコール１０５の呼び出しアドレスの代わりに正当性検査機能手段１０４が呼び出されるようにＯＳ１０７のシステムコールテーブル１０３を変更しておく。これにより、タスク１０１側からは、通常のシステムコール呼び出し手続きによって、正当性検査機能手段１０４を呼び出すことが可能となる。
【００１５】
次に動作について説明する。
まず、ＯＳ１０７上でタスク１０１が起動する。この時点では、起動されたタスク１０１が不正なシステムコール要求を発行するかどうかは分からないものとする。ＯＳ１０７は、タスク１０１が使用するためのメモリを確保し、タスク１０１の実行コードおよび入力データをメモリ１０２に読み込む。
【００１６】
次にタスク１０１が正当なシステムコール要求を発行（メモリのコード領域からシステムコール要求を発行）した場合の処理について説明する。通常のシステムコール要求は、タスク１０１の実行コードを読み込んだメモリ１０２上のコード領域から発行される。
【００１７】
システムコール要求を発行する場合には、まず、ＯＳ１０７のシステムコールテーブル１０３から要求するシステムコール１０５の識別番号に対応するシステムコール１０５の開始アドレスを調べる（実際は正当性検査機能手段の開始アドレス）。次に、調べた開始アドレスに対してシステムコール要求を発行する。システムコール要求を受け取った正当性検査機能手段１０４は、システムコール要求発行時にＯＳによって特定メモリ領域に格納されるシステムコール呼び出し元のリターン関数アドレスからそのシステムコール１０５がメモリ１０２のどの領域（コード領域またはデータ領域）から発行されているのか検査する。検査の結果、コード領域からのシステムコール要求であることが分るため、正当なシステムコール１０５と断定して実際のシステムコール１０５を呼び出す。ＯＳ１０７は、呼び出されたシステムコール１０５に従い、命令を実行する。システムコール１０５の実行結果は、正当性検査機能手段１０４を介さずに直接システムコールを呼び出したタスク１０１へ通知される。
【００１８】
次にタスク１０１が不当なシステムコール要求を発行（メモリのデータ領域からシステムコール要求を発行）した場合の処理について説明する。このような状況は、例えば、起動されたタスク１０１がバッファーオーバーフローの脆弱性を持っていた場合に起こりえる。
【００１９】
この場合も、正当なシステムコール要求を発行する場合と同様に、まず、ＯＳのシステムコールテーブル１０３から要求するシステムコールの識別番号に対応するシステムコール開始アドレスを見つけ（実際は正当性検査機能手段の開始アドレス）、見つかった開始アドレスに対してシステムコール要求を発行する。タスク１０１からシステムコール要求を受け取った正当性検査機能手段１０４は、そのシステムコール１０５がメモリのどの領域（コード領域またはデータ領域）から発行されているのかリターン関数アドレスを元に検査する。検査の結果、データ領域からのシステムコール要求であるとわかるため、不当なシステムコール１０５であると判断する。この場合には、正当性検査機能手段１０４は実際のシステムコール１０５を呼び出さず、システムコール１０５の実行失敗をタスク１０１に通知する。それと同時に攻撃対策機能手段１１２へ不当なシステムコール要求が発行されたことを通知する。通知を受けた攻撃対策機能手段１１２は、例えば、当該タスク１０１の停止などの対策を講ずる。また、攻撃対策機能手段１１２は、対策として例えば、光源、音声、テキストメッセージ、画像イメージ、振動、通信などの物理的特性の異なる手段を用いて、ユーザへ通知することも可能である。さらに、ユーザへの通知の手段を複数備え、ユーザが１または複数選択可能な構成としてもよい。
【００２０】
以上のように、システムコールテーブル１０３を変更して正当性検査機能手段１０４を呼び出すようにしているため、既存のアプリケーションやＯＳ１０７のシステムコール１０５を変更することなくシステムに組み込むことが可能であり、導入コストの削減が可能である。加えて、データ領域からシステムコール１０５を呼び出す攻撃であれば、攻撃が外部からのものか内部からのものかによらず、たとえ攻撃が未知のものであったとしても防御可能である。さらに、正当性検査機能手段１０４と攻撃対策機能手段１１２が連動することにより、攻撃に対して即座に対策をとることが可能となる。また、通常の処理ではタスク１０１のデータ領域からシステムコール要求が発行されることはなく、この発明ではこれをもとに検査を行なうため、誤検知が起こりにくい。
【００２１】
実施の形態２．
以上の実施の形態１では、システムコールの正当性検査にそのシステムコール要求のリターン関数アドレスをもとにした検査を行なったものであるが、次に正当性判定データベースを用いて、システムコール正当性を検査する実施の形態２を示す。
図２は、このような場合の、正当性検査機能手段の動作を示す構成図である。図２において、１０１はコンピュータ上のプロセス（タスク）、１０３はシステムコールテーブル、１０４は正当性検査機能手段で、正当性判定機能２０１と正当性判定データベース２０２を備える。１０５はシステムコール、１０６は実際の命令、１０７はオペレーティングシステム（ＯＳ）、１１２は攻撃対策機能手段、１０８はタスクからの（正当な）システムコール呼び出し信号、１０９はタスクからの（不正な）システムコール呼び出し信号、１１０は正当性検査機能手段により正当性が確認されたシステムコール呼び出し信号、１１１は正当性検査機能手段により不当なシステムコールと判断されたシステムコール呼び出し信号を表している。
実施の形態２でも実施の形態１と同様、ＯＳ１０７のシステムコールテーブル１０３をシステムコール１０５の呼び出しアドレスの代わりに正当性検査機能手段１０４が呼び出されるように変更しておく。
【００２２】
実施の形態１における正当性検査機能手段１０４では、タスク１０１から発行されたシステムコール要求のリターン関数アドレスを元にシステムコール要求の正当性検査を行っていたため、リターン関数アドレスがタスク１０１のコード領域からであった場合は、すべて正当なシステムコール１０５とみなしてしまう。これを解決するために、実施の形態２では、正当性検査機能手段１０４の機能として、正当性判定機能２０１と正当性判定ルールデータベース２０２を追加する。正当性判定機能２０１は必要に応じて正当性判定ルールデータベース２０２を参照することでシステムコール呼び出しの可否を判定する。正当性判定ルールデータベース２０２に格納されるデータは、システムコール発行元の条件（タスク名、リターン関数アドレス、引数など）と、その条件に合致した場合にシステムコール１０５を許可するかどうかが記載される。
正当性検査１０４が複数のシステムコール１０５に対して行われる場合、正当性判定ルールデータベース２０２に格納される正当性判定ルールにはシステムコール名も記述される。また、正当性判定ルールは必要に応じて随時変更、追加を可能としてもよい。
【００２３】
以上のように、実施の形態１に加え、正当性判定ルールデータベース２０２用いた正当性判定機能２０１を用いることで、システムコール１０５の詳細な正当性検査が可能となる。また、正当性判定ルールデータベース２０２の変更により、監視、制御を行う対象を柔軟に変更可能である。
【００２４】
実施の形態３．
上記実施の形態１ならびに実施の形態２では、不正なシステムコール発行を防ぎ、必要に応じてタスクを停止させるなどの攻撃対策機能手段を備えているものであったが、次に攻撃対策機能手段として攻撃によってシステムの状態（スタック内部、レジストリ情報など）を復元する実施の形態３を示す。
【００２５】
上記実施の形態１ならびに実施の形態２では、不正なシステムコール発行を防ぎ必要に応じてタスクを終了させるなどの攻撃対策機能手段を備えていたが、これによりシステムによっては、継続運用が困難となる場合もある。これを解決するために、実施の形態３では、実施の形態１ならびに実施の形態２において、不正なシステムコール要求を防いだ後の処理として、攻撃によってシステムの状態（スタック内部、レジストリ情報など）を復元する機能を追加する。
【００２６】
図３は、このような場合の、正当性検査機能手段の動作を示す構成図である。図３において、１０１はコンピュータ上のプロセス（タスク）、１０７はオペレーティングシステム（ＯＳ）、１０４は正当性検査機能手段、１１２は攻撃対策機能手段、３０１は状態保存機能、３０２は状態復旧機能、３０３は復旧データ保存領域、３０４は状態保存依頼信号、３０５は状態保存信号、３０６はタスクからのシステムコール要求信号、１１１は不当なシステムコールの要求の棄却、３０７は状態復旧依頼信号、３０８は復旧データ、３０９は状態の復旧、３１０は復旧後のシステムコール要求の回避を表している。
【００２７】
ここで、タスク１０１から発行されるシステムコール要求が正当なシステムコール要求であると正当性検査機能手段１０４で判断された場合には、状態復旧機能３０２は実行されないものとする。また、復旧データ保存領域３０９に保存されるタスク１０１の状態に関する情報は、例えば、スタック内データ、レジスタ値などを含んでいる。
【００２８】
次に動作について説明する。
まず、タスク１０１が起動される。タスク１０１はその実行の過程において、必要に応じてシステムコール要求を発行する。タスク１０１はシステムコール要求を発行する直前でタスク１０１の状態に関する情報の保存を攻撃対策機能手段１１２の状態保存機能３０１に状態保存依頼信号３０４によって依頼する。ただし、例えば、データ読み込み時のバッファオーバフローによるシステムコール要求など、プログラムの実行コード上に現れないシステムコール要求が発行される場合もあるため、例えば、入力データをパラメータへ代入する個所など、そのような状況が考えられ得るステップの直前で状態保存機能に状態の保存を依頼する。一度正当性を検査済みのデータに関しては、タスク１０１により正当性検査済みラベルを貼付すること等により、前回検査後、データ内容に変更がないことが保証される場合は状態保存機能への依頼を省略することにより、処理の最適化を計ることも可能である。
【００２９】
依頼を受けた状態保存機能３０１は、タスク１０１の状態に関する情報をコンピュータ上から取得し、復旧データ保存領域３０３に状態保存信号３０５を出して保存する。状態保存機能３０１は、タスク１０１の状態に関する情報の保存の成功または失敗をタスク１０１に通知する。タスク１０１は、状態保存機能３０１からの通知が成功であった場合のみ次の処理に進み、失敗であった場合には、タスク１０１で定められたエラー処理を行う。
【００３０】
タスク１０１から正当なシステムコール要求が発行された場合は、実施の形態１または実施の形態２で説明した手順にしたがってシステムコールが実行される。
【００３１】
次にタスク１０１から不正なシステムコールが発行された場合についての処理について説明する。タスク１０１から発行されたシステムコールは正当性検査機能手段１０４によって正当性を検査される。このとき発行されたシステムコールが不正であるため、実施の形態１、および、実施の形態２と同様、システムコールは実行されず、不当なシステムコール呼び出し信号１１１として棄却する。それと同時に、正当性検査機能手段１０４から攻撃対策機能手段１１２の状態復旧機能３０２へ、タスク１０１の状態復旧依頼信号３０７が出力される。
【００３２】
通知を受けた状態復旧機能３０２では、復旧データ保存領域３０３に保存されているタスク１０１の状態に関するデータを読み込み、現在タスクが持っている状態（ＯＳへシステムコール要求を発行した状態）を復旧データ保存時の状態（状態保存機能へタスクの状態保存を依頼した状態）へ変更する。その後、待ち状態となっているタスク１０１へ状態保存機能３０２が失敗した（実際には状態の保存には成功している）旨を新たに通知する。このときタスク１０１に通知される内容は、エラーコードの変更などにより通常の失敗とは区別可能な内容を通知してもよい。
【００３３】
状態保存機能３０２の失敗（実際には状態の保存には成功している）を通知されたタスク１０１は、あらかじめ定められたエラー処理を行う。
【００３４】
以上のように、タスク１０１から発行された不正なシステムコール要求を棄却するとともに、タスク１０１の状態を不正なシステムコール要求の発行直前の状態（状態保存機能を呼び出した状態）まで復旧し、その後、タスク１０１に対して状態保存関数の呼び出しに失敗したと見せかける値を返すため、タスク１０１によって定められたエラー処理によるプログラムの継続、もしくは、安全な停止が可能である。これにより、攻撃によってシステムが被害を受けていた場合であっても、システムの不安定状態への移行を回避可能である。
【発明の効果】
以上のように、この発明によれば、システムコールテーブルから正当性検査機能手段を呼び出し、システムコール要求の正当性を判定するようにしているため、システムコールテーブルの変更により、既存のアプリケーションやＯＳのシステムコールを変更することなくシステムに組み込むことが可能であり、導入コストの削減が可能である。加えて、正当性検査機能手段と攻撃対策機能手段が連動することにより、攻撃に対して即座に対策をとることが可能となる。
【図面の簡単な説明】
【図１】この発明の実施の形態１を示す構成図である。
【図２】実施の形態２における正当性検査機能手段の動作を示す構成図である。
【図３】実施の形態３における正当性検査機能手段の動作を示す構成図である。
【図４】従来の攻撃検知装置の構成図である。
【図５】他の従来の攻撃検知装置の構成図である。
【符号の説明】
１０１：プロセス（タスク）、１０２：メモリ領域、１０３：システムコールテーブル、１０４：正当性検査機能手段、１０５：システムコール、１０６：実際の命令、１０７：オペレーティングシステム（ＯＳ）、１０８：正当なシステムコール呼び出し信号、１０９：不正なシステムコール呼び出し信号、１１０：正当性確認済みシステムコール呼び出し信号、１１１：確認済み不当システムコール呼び出し信号，１１２：攻撃対策機能手段、２０１：正当性判定機能、２０２：正当性判定データベース、３０１：状態保存機能、３０２：状態復旧機能、３０３：復旧データ保存領域、３０４：状態保存依頼信号、３０５：状態保存信号、３０６：システムコール要求信号、１１１：不当なシステムコールの要求の棄却、３０７：状態復旧依頼信号、３０８：復旧データ、３０９：状態の復旧、３１０：復旧後のシステムコール要求回避。
【図１】
2004126854.tif 000003
【図２】
2004126854.tif 000004
【図３】
2004126854.tif 000005
【図４】
2004126854.tif 000006
【図５】
2004126854.tif 000007