(57)【特許請求の範囲】
【請求項１】
プロセスによるシステムコールの実行を制限するアクセス制御装置であって、
前記システムコールの実行の可否を定めたポリシーを有し、該ポリシーと前記システムコールに係る情報とに基づいて、前記システムコールの実行の可否を判定するアクセス可否判定部と、
メモリから前記システムコールが無効となる引数を検索するメモリ解析部と、
前記アクセス可否判定部が前記システムコールの実行の禁止の判定をした場合、前記システムコールの引数を前記メモリ解析部が検索した引数に変更するシステムコール変更部と、
を備えたことを特徴とするアクセス制御装置。
【請求項２】
プロセスによるシステムコールの実行を制限するアクセス制御装置であって、
前記システムコールの実行の可否を定めたポリシーを有し、該ポリシーと前記システムコールに係る情報とに基づいて、前記システムコールの実行の可否を判定するアクセス可否判定部と、
無効なシステムコール番号を保持する保持部と、
前記アクセス可否判定部が前記システムコールの実行の禁止の判定をした場合、前記システムコールの番号を前記無効なシステム番号に変更するシステムコール変更部と、
を備えたことを特徴とするアクセス制御装置。
【請求項３】
前記アクセス可否判定部と、前記メモリ解析部と、前記システムコール変更部とを有する管理仮想マシンと、
システムコールの処理を行うシステムコール処理関数と、前記システムコール処理関数を呼び出す割り込みハンドラと、を有するユーザ仮想マシンと、
割り込みをフックして前記アクセス可否判定部を呼び出す、割り込みフック部を有する仮想マシンモニタと、
を備えたことを特徴とする請求項１に記載のアクセス制御装置。
【請求項４】
前記アクセス可否判定部と、前記保持部と、前記システムコール変更部とを有する管理仮想マシンと、
システムコールの処理を行うシステムコール処理関数と、前記システムコール処理関数を呼び出す割り込みハンドラと、を有するユーザ仮想マシンと、
割り込みをフックして前記アクセス可否判定部を呼び出す、割り込みフック部を有する仮想マシンモニタと、
を備えたことを特徴とする請求項２に記載のアクセス制御装置。
【請求項５】
前記保持部は、複数のＯＳに共通する無効なシステムコール番号を保持し、前記システムコール変更部は、前記アクセス可否判定部が禁止の判定をした場合、前記システムコールの番号を前記保持部が保持する前記無効なシステムコール番号に変更することを特徴とする請求項４に記載のアクセス制御装置。
【請求項６】
プロセスによるシステムコールの実行を制限するアクセス制御装置であって、
前記システムコールの実行の可否を定めたポリシーを有し、該ポリシーと前記システムコールに係る情報とに基づいて、前記システムコールの実行の可否を判定するアクセス可否判定部と、
メモリを検索してＯＳを特定するメモリ解析部と、
前記アクセス可否判定部が前記システムコールの実行の禁止の判定をした場合、前記メモリ解析部により特定されたＯＳに応じたエラー値または正常値を設定するシステムコール変更部と、を有する管理仮想マシンと、
システムコールの処理を行うシステムコール処理関数と、前記システムコール処理関数を呼び出す割り込みハンドラと、システムコールを呼び出す、割り込みを発行するユーザプロセスと、を有するユーザ仮想マシンと、
割り込みをフックして前記アクセス可否判定部を呼び出し、前記ユーザプロセスへ前記システムコール変更部が設定したエラー値または正常値を返す割り込みフック部を有する仮想マシンモニタと、
を備えたことを特徴とするアクセス制御装置。
【請求項７】
前記システムコール変更部は、前記ユーザプロセスを強制終了させる動作を行うことを特徴とする請求項６に記載のアクセス制御装置。
【請求項８】
前記ポリシーは、システムコールの実行を要求した前記プロセスの情報であり、前記システムコールに係る情報は、前記システムコールのシステムコール番号と前記システムコールの引数であることを特徴とする請求項１乃至７のいずれか１項に記載のアクセス制御装置。
【請求項９】
プロセスによるシステムコールの実行を制限するアクセス制御方法であって、
前記システムコールの実行の可否を定めたポリシーと前記システムコールに係る情報とに基づいて、前記システムコールの実行の可否を判定し、
メモリから前記システムコールが無効となる引数を検索し、
前記システムコールの実行の可否の判定で禁止の判定がなされた場合、前記システムコールの引数を検索した前記引数に変更すること、
を備えたアクセス制御方法。
【請求項１０】
プロセスによるシステムコールの実行を制限するアクセス制御方法であって、
前記システムコールの実行の可否を定めたポリシーと前記システムコールに係る情報とに基づいて、前記システムコールの実行の可否を判定し、
前記システムコールの実行の可否の判定で禁止の判定がなされた場合、前記システムコールの番号を無効なシステムコール番号に変更すること、
を備えたアクセス制御方法。
【請求項１１】
前記無効なシステムコール番号は、複数のＯＳに共通する無効なシステムコール番号であることを特徴とする請求項１０に記載のアクセス制御方法。
【請求項１２】
プロセスによるシステムコールの実行を制限するアクセス制御方法であって、
前記システムコールの実行の可否を定めたポリシーと前記システムコールに係る情報とに基づいて、前記システムコールの実行の可否を判定し、
メモリを検索してＯＳを特定し、
前記システムコールの実行の可否の判定で禁止の判定がなされた場合、特定された前記ＯＳに応じたエラー値または正常値を設定し、
システムコールを呼び出すために、割り込みを発行するユーザプロセスへ、設定した前記エラー値または正常値を返すことを特徴とするアクセス制御方法。
【請求項１３】
前記ポリシーは、システムコールの実行を要求した前記プロセスの情報であり、前記システムコールに係る情報は、前記システムコールのシステムコール番号と前記システムコールの引数であることを特徴とする請求項９乃至１２のいずれか１項に記載のアクセス制御方法。
【請求項１４】
プロセスによるシステムコールの実行を制限するアクセス制御プログラムを記録したコンピュータ読み取り可能な情報記録媒体であって、
前記システムコールの実行の可否を定めたポリシーと前記システムコールに係る情報とに基づいて、前記システムコールの実行の可否を判定するアクセス可否判定処理と、
メモリから前記システムコールが無効となる引数を検索するメモリ解析処理と、
前記アクセス可否判定処理で禁止の判定がなされた場合、前記システムコールの引数を前記メモリ解析処理で検索した引数に変更するシステムコール変更処理と、
をコンピュータに実行させるアクセス制御プログラムを記録した、コンピュータ読み取り可能な情報記録媒体。
【請求項１５】
プロセスによるシステムコールの実行を制限するアクセス制御プログラムを記録したコンピュータ読み取り可能な情報記録媒体であって、
前記システムコールの実行の可否を定めたポリシーと前記システムコールに係る情報とに基づいて、前記システムコールの実行の可否を判定するアクセス可否判定処理と、
前記アクセス可否判定処理で禁止の判定がなされた場合、前記システムコールの番号を無効なシステムコール番号に変更するシステムコール変更処理と、
をコンピュータに実行させるアクセス制御プログラムを記録した、コンピュータ読み取り可能な情報記録媒体。
【請求項１６】
前記無効なシステムコール番号は、複数のＯＳに共通する無効なシステムコール番号であることを特徴とする請求項１５に記載の情報記録媒体。
【請求項１７】
プロセスによるシステムコールの実行を制限するアクセス制御プログラムを記録したコンピュータ読み取り可能な情報記録媒体であって、
前記システムコールの実行の可否を定めたポリシーと前記システムコールに係る情報とに基づいて、前記システムコールの実行の可否を判定するアクセス可否判定処理と、
メモリを検索してＯＳを特定するＯＳ特定処理と、
前記システムコールの実行の可否の判定で禁止の判定がなされた場合、特定された前記ＯＳに応じたエラー値または正常値を設定する設定処理と、
システムコールを呼び出すために、割り込みを発行するユーザプロセスへ、設定した前記エラー値または正常値を返す処理と、
をコンピュータに実行させるアクセス制御プログラムを記録した、コンピュータ読み取り可能な情報記録媒体。
【請求項１８】
前記ポリシーは、システムコールの実行を要求した前記プロセスの情報であり、前記システムコールに係る情報は、前記システムコールのシステムコール番号と前記システムコールの引数であることを特徴とする請求項１４乃至１７のいずれか１項に記載の情報記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はシステムコールの実行をブロックできるアクセス制御装置、アクセス制御方法およびアクセス制御プログラムを記録したコンピュータ読み取り可能な情報記録媒体に関する。
【背景技術】
【０００２】
システムコールの呼び出しをフックし、システムコールの引数がバグを引き起こす値であるとき、バグを起こさない値に引数を変更することで、システムコールのバグが攻撃されることを防止するアクセス制御装置がある。【０００３】
例えば、特許文献１は、システムコールのバグを突く攻撃を防ぐために、引数を変更することを開示している。【０００４】
また、特許文献２にはオーバヘッドを軽減し、柔軟なアクセス制御を行うためのアクセス制御装置及びアクセス制御方法の開示があり、特許文献３には仮想計算機システムの制御方式の開示があり、特許文献４には、アプリケーションプログラムを介入させることなく、デバイス制御プログラムのファイル再構築を可能にするデータ処理装置の開示がある。
【特許文献１】特開２００６−０１８７６５号公報
【特許文献２】特開２００６−１５５４１６号公報
【特許文献３】特開平０５−２０４７６０号公報
【特許文献４】特開平０８−２７２４９２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１の問題点は、システムコールの動作をブロックできないことである。引数の変更によって、システムコールの動作をブロックしようと思えば、システムコールがエラー処理を行うように、引数の値を変更する必要がある。しかし、どのような値に引数を変更すればよいかが分からないため、特許文献１では、システムコール処理関数に意図的にエラーを起こさせることが出来ない。【０００６】
又、特許文献２、特許文献３及び特許文献４も、システムコールがエラー処理を行うように、引数の値を変更することが出来ないという問題点があった。【０００７】
本発明の典型的(exemplary)な目的は、上記に鑑みてなされたものであり、システムコールの引数がバグを引き起こす値であるとき、システムコールの実行をブロックできるアクセス制御装置、その方法及び情報記録媒体を提供することにある。
【課題を解決するための手段】
【０００８】
本発明に係る典型的(exemplary)なアクセス制御装置は、プロセスによるシステムコールの実行を制限するアクセス制御装置であって、
前記システムコールの実行の可否を定めたポリシーを有し、該ポリシーと前記システムコールに係る情報とに基づいて、前記システムコールの実行の可否を判定するアクセス可否判定部と、
メモリから前記システムコールが無効となる引数を検索するメモリ解析部と、
前記アクセス可否判定部が前記システムコールの実行の禁止の判定をした場合、前記システムコールの引数を前記メモリ解析部が検索した引数に変更するシステムコール変更部と、
を備えたことを特徴とする。【０００９】
また本発明に係る典型的(exemplary)なアクセス制御装置は、プロセスによるシステムコールの実行を制限するアクセス制御装置であって、
前記システムコールの実行の可否を定めたポリシーを有し、該ポリシーと前記システムコールに係る情報とに基づいて、前記システムコールの実行の可否を判定するアクセス可否判定部と、
無効なシステムコール番号を保持する保持部と、
前記アクセス可否判定部が前記システムコールの実行の禁止の判定をした場合、前記システムコールの番号を前記無効なシステム番号に変更するシステムコール変更部と、
を備えたことを特徴とする。【００１０】
また本発明に係る典型的(exemplary)なアクセス制御装置は、プロセスによるシステムコールの実行を制限するアクセス制御装置であって、
前記システムコールの実行の可否を定めたポリシーを有し、該ポリシーと前記システムコールに係る情報とに基づいて、前記システムコールの実行の可否を判定するアクセス可否判定部と、
メモリを検索してＯＳを特定するメモリ解析部と、
前記アクセス可否判定部が前記システムコールの実行の禁止の判定をした場合、前記メモリ解析部により特定されたＯＳに応じたエラー値または正常値を設定するシステムコール変更部と、を有する管理仮想マシンと、
システムコールの処理を行うシステムコール処理関数と、前記システムコール処理関数を呼び出す割り込みハンドラと、システムコールを呼び出す、割り込みを発行するユーザプロセスと、を有するユーザ仮想マシンと、
割り込みをフックして前記アクセス可否判定部を呼び出し、前記ユーザプロセスへ前記システムコール変更部が設定したエラー値または正常値を返す割り込みフック部を有する仮想マシンモニタと、
を備えたことを特徴とする。【００１１】
本発明に係る典型的(exemplary)なアクセス制御方法は、プロセスによるシステムコールの実行を制限するアクセス制御方法であって、
前記システムコールの実行の可否を定めたポリシーと前記システムコールに係る情報とに基づいて、前記システムコールの実行の可否を判定し、
メモリから前記システムコールが無効となる引数を検索し、
前記システムコールの実行の可否の判定で禁止の判定がなされた場合、前記システムコールの引数を検索した前記引数に変更すること、
を備えたことを特徴とする。【００１２】
また本発明に係る典型的(exemplary)なアクセス制御方法は、プロセスによるシステムコールの実行を制限するアクセス制御方法であって、
前記システムコールの実行の可否を定めたポリシーと前記システムコールに係る情報とに基づいて、前記システムコールの実行の可否を判定し、
前記システムコールの実行の可否の判定で禁止の判定がなされた場合、前記システムコールの番号を無効なシステムコール番号に変更すること、
を備えたことを特徴とする。【００１３】
また本発明に係る典型的(exemplary)なアクセス制御方法は、プロセスによるシステムコールの実行を制限するアクセス制御方法であって、
前記システムコールの実行の可否を定めたポリシーと前記システムコールに係る情報とに基づいて、前記システムコールの実行の可否を判定し、
メモリを検索してＯＳを特定し、
前記システムコールの実行の可否の判定で禁止の判定がなされた場合、特定された前記ＯＳに応じたエラー値または正常値を設定し、
システムコールを呼び出すために、割り込みを発行するユーザプロセスへ、設定した前記エラー値または正常値を返すことを特徴とする。【００１４】
本発明に係る典型的(exemplary)な情報記録媒体は、プロセスによるシステムコールの実行を制限するアクセス制御プログラムを記録したコンピュータ読み取り可能な情報記録媒体であって、
前記システムコールの実行の可否を定めたポリシーと前記システムコールに係る情報とに基づいて、前記システムコールの実行の可否を判定するアクセス可否判定処理と、
メモリから前記システムコールが無効となる引数を検索するメモリ解析処理と、
前記アクセス可否判定処理で禁止の判定がなされた場合、前記システムコールの引数を前記メモリ解析処理で検索した引数に変更するシステムコール変更処理と、
をコンピュータに実行させるアクセス制御プログラムを記録した、コンピュータ読み取り可能な情報記録媒体である。【００１５】
また本発明に係る典型的(exemplary)な情報記録媒体は、プロセスによるシステムコールの実行を制限するアクセス制御プログラムを記録したコンピュータ読み取り可能な情報記録媒体であって、
前記システムコールの実行の可否を定めたポリシーと前記システムコールに係る情報とに基づいて、前記システムコールの実行の可否を判定するアクセス可否判定処理と、
前記アクセス可否判定処理で禁止の判定がなされた場合、前記システムコールの番号を無効なシステムコール番号に変更するシステムコール変更処理と、
をコンピュータに実行させるアクセス制御プログラムを記録した、コンピュータ読み取り可能な情報記録媒体である。【００１６】
本発明に係る典型的(exemplary)な情報記録媒体は、プロセスによるシステムコールの実行を制限するアクセス制御プログラムを記録したコンピュータ読み取り可能な情報記録媒体であって、
前記システムコールの実行の可否を定めたポリシーと前記システムコールに係る情報とに基づいて、前記システムコールの実行の可否を判定するアクセス可否判定処理と、
メモリを検索してＯＳを特定するＯＳ特定処理と、
前記システムコールの実行の可否の判定で禁止の判定がなされた場合、特定された前記ＯＳに応じたエラー値または正常値を設定する設定処理と、
システムコールを呼び出すために、割り込みを発行するユーザプロセスへ、設定した前記エラー値または正常値を返す処理と、
をコンピュータに実行させるアクセス制御プログラムを記録した、コンピュータ読み取り可能な情報記録媒体である。
【発明の効果】
【００１７】
本発明によれば、システムコール変更部がシステムコールの引数を無効な値に変更したり、システムコールの番号を無効なシステムコール番号も変更したり、特定されたＯＳに応じたエラー値または正常値を設定することにより、システムコールの実行をブロックできるアクセス制御装置、その方法及びそのプログラムを提供することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１の実施の形態に係るアクセス制御装置のブロック図である。
【図２】本発明の第１の実施の形態の全体の動作を示すフローチャートである。
【図３】無効な引数の検索の動作を示すフローチャートである。
【図４】システムコールのテーブルの例を示す図である。
【図５】本発明の第２の実施の形態に係るアクセス制御装置のブロック図である。
【図６】ＯＳごとの割り込みのテーブルの例を示す図である。
【図７】システムコールのテーブルの例を示す図である。
【図８】ＯＳごとの無効なシステムコールのテーブルの例を示す図である。
【図９】ＯＳごとのエラーコードのテーブルの例を示す図である。
【図１０】本発明の第１の実施の形態に係る他の構成のアクセス制御装置のブロック図である。
【図１１】本発明の第２の実施の形態に係る他の構成のアクセス制御装置のブロック図である。
【符号の説明】
【００１９】
１００  コンピュータ
１０１  ユーザプロセス
１０２  割り込みハンドラ
１０３  システムコール処理関数
１０４  割り込みフック部
１０５  アクセス可否判定部
１０６  メモリ解析部
１０７  システムコール変更部
１１１  メモリ
１１２  ＣＰＵ
２００  コンピュータ
２０１  ユーザプロセス
２０２  割り込みハンドラ
２０３  システムコール処理関数
２０４  割り込みフック部
２０５  アクセス可否判定部
２０６  メモリ解析部
２０７  システムコール変更部
２１０  ユーザＶＭ
２１１  メモリ
２１２  ＣＰＵ
２２０  管理ＶＭ
２３０  仮想マシンモニタ（ＶＭＭ）
３００  コンピュータ
４００  コンピュータ
【発明を実施するための最良の形態】
【００２０】
次に、本発明を実施するための最良の形態について図面を参照して詳細に説明する。
［第１の実施の形態］
図１は、本発明の第１の実施の形態に係るアクセス制御装置のブロック図である。【００２１】
図１を参照すると、本発明の第１の実施の形態に係るアクセス制御装置は、メモリ１１１とＣＰＵ１１２を有し、プログラム制御により動作するコンピュータ１００であって、ユーザが起動させるプログラムであるユーザプロセス１０１と、割り込みを受け付けるプログラムである割り込みハンドラ１０２と、システムコールを処理するプログラムであるシステムコール処理関数１０３を備える。さらに、割り込みをフックするプログラムである割り込みフック部１０４と、内部にシステムコールの実行の可否を定めたポリシーを保存しシステムコールの実行の可否を判定するプログラムであるアクセス可否判定部１０５と、メモリ１１１から無効なシステムコールの引数を検索するプログラムであるメモリ解析部１０６と、システムコールの引数を変更するプログラムであるシステムコール変更部１０７を備える。【００２２】
ここで、図１のコンピュータ１００は、メモリ１１１、ＣＰＵ１１２、マウス、キーボード、ディスプレイのようなインターフェースを備え、ハードディスク等の記憶部を備えるコンピュータである。ユーザプロセス１０１、ハンドラ１０２、システムコール処理関数１０３、割り込みフック部１０４、アクセス可否判定部１０５、メモリ解析部１０６及びシステムコール変更部１０７となるプログラムは、記憶部に保持される。【００２３】
ユーザプロセス１０１は、ディスクＩＯ（入出力）やネットワークＩＯ（出入力）を行いたいとき、ソフトウェア割り込みを発生させ、システムコールの呼び出しを行うプログラムで、例えば、メールソフトやウェブブラウザ、ワープロソフト等のアプリケーションプログラムである。【００２４】
割り込みフック部１０４は、ソフトウェア割り込みをフックし、アクセス可否判定部１０５を呼び出す。【００２５】
アクセス可否判定部１０５はメモリ解析部１０６を呼び出し、プロセスの情報を取得する。それらの情報をポリシーと照らし合わせ、システムコール実行の可否を判断する。【００２６】
メモリ解析部１０６は、コンピュータのメモリ１１１を検索し、システムコールの実行を要求したプロセスの情報の収集を行う。また、システムコールの無効な引数を検索する。【００２７】
システムコール変更部１０７は、メモリ解析部１０６を呼び出し、無効なシステムコールの引数を取得して、そのシステムコールの引数を変更する。【００２８】
割り込みハンドラ１０２は、システムコール番号に応じて、システムコール処理関数の呼び出しを行う。【００２９】
システムコール処理関数１０３は、引数をチェックし、無効な引数でなければ、システムコールの処理を行う。無効な引数であれば、エラー処理を行うもので、具体的にはディスクへの書き込みやネットワークへのパケット送信を行うプログラムである。例えば、Ｌｉｎｕｘ（商標）では、ＲＥＡＤやＷＲＩＴＥ等である。【００３０】
次に、図２のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。図２は、本発明の第１の実施の形態の全体の動作を示すフローチャートである。【００３１】
まず、ユーザプロセス１０１がシステムコールを呼び出すために、割り込みを発行する（ステップＳ２０１）。【００３２】
割り込みフック部１０４は、割り込み時に実行されるポインタを変更し、割り込みハンドラ１０２ではなく、自分自身が呼び出されるようにする。割り込みフック部１０４は、アクセス可否判定部１０５を呼び出し、システムコールの情報としてシステムコール番号と引数の情報を渡す(ステップＳ２０２)。【００３３】
アクセス可否判定部１０５は、メモリ解析部１０６を呼び出し、システムコール番号と引数の情報を渡す。メモリ解析部は、メモリ１１１を検索し、システムコールの実行を要求したプロセスの情報をアクセス可否判定部１０５へ返す（ステップＳ２０３）。【００３４】
アクセス可否判定部１０５は、内部に保存しているポリシーと、システムコールの情報を照らし合わせ、システムコールの実行が許可されるか否かを判定する。さらに、システムコール変更部１０７を呼び出し、システムコール番号と引数の情報と判定結果を渡す（ステップＳ２０４）。【００３５】
このステップＳ２０４では、アクセス可否判定部１０５がシステムコールの実行を許可した場合（ＹＥＳ）、手順はステップＳ２０７に移行しシステムコール処理関数１０３が呼び出される。【００３６】
一方、ステップＳ２０４でアクセス可否判定部１０５がシステムコールの実行を禁止した場合（ＮＯ）、システムコール変更部１０７は、メモリ解析部１０６を呼び出す。メモリ解析部１０６は、メモリ１１１を検索し、システムコール処理関数がエラー処理を行う引数の値（無効な値）を検索する（ステップＳ２０５）。【００３７】
システムコール変更部１０７は、メモリ解析部１０６から無効な引数の値を受け取り、ＣＰＵ１１２のレジスタを変更することによって、システムコールの引数を無効な値に変更する（ステップＳ２０６）。【００３８】
割り込みハンドラ１０２が、システムコール処理関数１０３を呼び出す。ステップＳ２０６によってシステムコールの引数が無効な値に変更されていれば、システムコールの処理に代わってエラー処理が行われ（ステップＳ２０７）、本実施の形態の全体の動作は終了する。【００３９】
続いて、アクセス可否判定部１０５の動作について、詳細に説明する。【００４０】
アクセス可否判定部１０５は、内部にシステムコールの実行の可否を定めたポリシーを保存する。ポリシーには、システムコールの実行を要求したプロセスの情報を用いることが出来る。【００４１】
アクセス可否判定部１０５は、割り込みフック部１０４から、システムコール番号とシステムコールの引数を受け取る。次に、システムコールの名前とシステムコール番号の対応テーブルを参照し、システムコール番号をシステムコール名に変換する。【００４２】
次に、メモリ解析部１０６へ、プロセスの情報を問い合わせ、プロセスの実行コマンドやユーザＩＤ(ＵＩＤ)などを取得する。【００４３】
最後に、取得した情報とポリシーの条件を照らし合わせ、システムコールを実行してよいか否かを判定する。【００４４】
続いて、メモリ解析部１０６のプロセス情報の取得方法について説明する。【００４５】
メモリ解析部１０６は、ＯＳのプロセス情報を記録している構造体を抜き出し、その構造体から、実行コマンド名やＵＩＤなどのフィールドの値を読み出すことによって、プロセスの情報を取得する。【００４６】
次に、図２のステップＳ２０５におけるメモリ解析部１０６の無効なシステムコールの引数の検索方法について図３を参照して詳細に説明する。図３は無効な引数の検索の動作を示すフローチャートである。【００４７】
入出力を行うシステムコールは、ファイルディスクリプタが引数として用いられるため、無効なファイルディスクリプタの検索方法を説明する。ＯＳの一般的な構造として、プロセス構造体には、ｆｉｌｅ構造体の配列のポインタが記録されている。ファイルディスクリプタは、この配列のｉｎｄｅｘである。【００４８】
まず、メモリ解析部１０６は、カレントプロセスのプロセス構造体を読み込み、プロセス構造体に記録されているｆｉｌｅ構造体の配列のアドレスを取得する（ステップＳ３０１）。【００４９】
最初の配列の要素を読み込む（ステップＳ３０２）。【００５０】
読み込んだ要素がｎｕｌｌであるか否かを確認する（ステップＳ３０３）。【００５１】
ステップＳ３０４において、要素がｎｕｌｌでない場合（ＮＯ）、次の要素を読み込み（ステップＳ３０５）、ステップＳ３０４に戻る。【００５２】
ステップＳ３０４において、要素がｎｕｌｌの場合（ＹＥＳ）、要素のｉｎｄｅｘを無効なファイルディスクリプタとする（ステップＳ３０５）。【００５３】
以上の動作で、プロセスが使用していない、ファイルディスクリプタの値を検索できる。【００５４】
このように、本実施の形態では、システムコールの無効な引数の値を検索し、引数を無効な値に変更するように構成されているため、システムコール処理関数にエラー処理を行わせることができ、システムコールの動作を確実にブロックできる。【００５５】
第１の実施の形態の動作では、メモリ解析部１０６がシステムコールの実行を要求したプロセス情報を取得し、アクセス可否判定部１０５がプロセス情報に基づいてシステムコールの実行の可否を判定していた。このプロセスの情報だけではなく、ファイル名などのアクセス対象の情報を用いて、システムコール実行の可否を判定してもよい。【００５６】
アクセス可否判定部１０５は、ポリシーにアクセス対象の情報が条件として使われている場合に、メモリ解析部１０６にアクセス対象の情報を問い合わせる。メモリ解析部１０６は、メモリ１１１を検索してアクセス対象の詳細情報を収集し、アクセス可否判定部１０５へ返す。アクセス可否判定部１０５は、受け取ったアクセス対象の情報とポリシーを照らし合わせ、システムコール実行の可否を判定する。【００５７】
以上説明した第１の実施形態の動作では、システムコール変更部１０７がシステムコールの引数を置き換え、システムコール処理関数１０３にエラー処理をさせることによって、システムコールの処理をブロックしていた。一方、システムコール番号を変更することによって、割り込みハンドラ１０２にエラー処理をさせてもよい。【００５８】
図１０は、本発明の第１の実施の形態に係る他の構成のアクセス制御装置のブロック図である。図１０に示すアクセス制御装置は、メモリ１１１とＣＰＵ１１２を有し、プログラム制御により動作するコンピュータ３００である。図１のアクセス制御装置との違いは、メモリ解析部１０６の代わりに、ＯＳで定義されていないシステムコール番号の情報を内部に保持する保持部１０８が設けられていることである。【００５９】
システムコール変更部１０７は、保持部１０８へ、システムコール番号の値を、どのように変更すればよいかを問い合わせる。保持部１０８は、ＯＳで定義されていないシステムコール番号の情報を内部に保持しておき、その値をシステムコール変更部１０７へ返す。システムコール変更部１０７は、システムコール番号を、保持部１０８から受け取った値に変更する。【００６０】
これ以外の動作は、システムコールの引数を変更する場合と同様である。この動作では、引数を取らないシステムコールであっても、ブロックすることができる。なお、ステップＳ２０３では、メモリ解析部は、メモリ１１１を検索し、システムコールの実行を要求したプロセスの情報をアクセス可否判定部１０５へ返していたが、ステップＳ２０３では、保持部１０８がメモリ１１１を検索し、プロセス情報をアクセス可否判定部１０５へ返すメモリ解析部１０６として機能する。【００６１】
ここで、実際にＬｉｎｕｘやＷｉｎｄｏｗｓ（登録商標）等のＯＳを用いた場合に、第１の実施の形態がどのように動作するのかを説明する。【００６２】
ユーザプロセス１０１がシステムコールを呼び出すと、ソフトウェア割り込みが発生する。Ｌｉｎｕｘではｉｎｔ８０もしくはＳＹＳＥＮＴＥＲの割り込みが発生し、Ｗｉｎｄｏｗｓ（登録商標）では、ｉｎｔ２ｅもしくは、ＳＹＳＥＮＴＥＲの割り込みが発生する。【００６３】
例えば、ｉｎｔｅｌ（登録商標）アーキテクチャでは、割り込みが発生すると、ＣＰＵ１１２に登録された割り込みに対応するアドレスの命令が実行される。割り込みフック部１０４は、このアドレスを変更することで、割り込みをフックする。【００６４】
割り込みフック部１０４は、ＣＰＵ１１２のレジスタから、ＲＥＡＤやＷＲＩＴＥなどを示すシステムコール番号と、その引数を取得する。例えば、システムコールがＷＲＩＴＥであれば、引数として、ファイルディスクディスクリプタと、書き込みバッファのポインタ、書き込みサイズか取得できる。【００６５】
割り込みフック部１０４は、アクセス可否判定部１０５を実行しそれらの引数を渡す。【００６６】
アクセス可否判定部１０５は、例えば、以下のようなポリシーを読み込む。
ポリシー１：“ＳＹＳＴＥＭＣＡＬＬ＝ＷＲＩＴＥ、  ＰＲＯＣＥＳＳ＝ＷＩＮＮＹ⇒  ＤＥＮＹ”
次に、アクセス可否判定部１０５は、図４のようなシステムコール番号とシステムコール名の対応を記録したテーブルを参照し、システムコール番号からシステムコール名に変換を行う。例えばＬｉｎｕｘの場合、３番のシステムコール番号を“ＷＲＩＴＥ”に変換する。【００６７】
上記のポリシーが設定され、ＷＲＩＴＥシステムコールの実行が要求されたとき、アクセス可否判定部１０５は、プロセス情報が足りないと判断する。プロセス情報を取得するため、メモリ解析部１０６を呼び出し、システムコールの種類と引数の情報を渡す。【００６８】
続いて、メモリ解析部１０６のプロセス情報取得方法について説明する。【００６９】
Ｌｉｎｕｘでは、プロセスＩＤやユーザＩＤ、実行コマンドを格納するtask_struct構造体がプロセスごとに用意されている。システムコールを発行したプロセスのtask_struct構造体は、ＥＳＰレジスタが示すthread_info構造体からたどることが出来る。【００７０】
メモリ解析部は、ＥＳＰレジスタの値を読み込み、info_struct構造体のアドレスを特定する。さらに、info_struct構造体のtaskフィールドを参照し、task_struct構造体のアドレスを取得する。例えば、実行コマンド名を取得したいときは、task_structのcommフィールドを参照する。【００７１】
メモリ解析部１０６には、得られたプロセスの情報をアクセス可否判定部１０５へ返す。【００７２】
アクセス可否判定部１０５は、ポリシーとシステムコールの情報を比較し、判断を行う。例えば、アクセス可否判定部１０５は、ポリシー１が設定されており、ＷＲＩＴＥシステムコールの実行をＷＩＮＮＹが要求しているとき、システムコール実行禁止の判定を行う。【００７３】
システムコール変更部１０７は、アクセス可否判定部１０５が禁止の判断をしていれば、メモリ解析部１０６を呼び出す。【００７４】
次に、メモリ解析部１０６の無効なシステムコール引数の検索方法について、ファイルディスクリプタを例に説明する。【００７５】
Ｌｉｎｕｘでは、メモリ解析部１０６は、カレントプロセスのtask_struct構造体を参照し、ｆｉｌｅ構造体の配列へのポインタを取得する。次に、配列の先頭から順に要素を読み込み、値がｎｕｌｌであるか否かを確認し、値がｎｕｌｌである最初の要素のｉｎｄｅｘを無効なファイルディスクリプタとする。【００７６】
システムコール変更部１０７は、例えば、ＷＲＩＴＥシステムコールであるときは、ファイルディスクリプタをメモリ解析部１０６から渡された値に書き換え、割り込みハンドラ１０２を呼び出す。ｉｎｔｅｌ（登録商標）アーキテクチャのＬｉｎｕｘの場合、割り込みの引数はＣＰＵ１１２のレジスタを用いて渡される。第１引数はＥＢＸ、第２引数はＥＣＸ、第３引数はＥＤＸに格納されている。ＬｉｎｕｘのＷＲＩＴＥシステムコールのファイルディスクリプタは、第１引数であるため、ＥＢＸレジスタの値を変更する。【００７７】
割り込みハンドラ１０２は、システムコール番号を参照し、適切なシステムコール処理関数１０３を呼び出す。【００７８】
システムコール変更部１０７によって、システムコールの引数が無効な値に書き換えられていれば、システムコール処理関数１０３は、エラーの処理を行い、エラーコードを返す。例えば、ＬｉｎｕｘのＷＲＩＴＥシステムコールの場合、ファイルディスクリプタが無効な値に書きかえられているため、“EBADF“エラーメッセージを返す。【００７９】
上記の動作では、プロセスの情報を用いてシステムコールの実行の可否を判定していたが、アクセス対象の情報を用いて判定を行ってもよい。【００８０】
例えば、アクセス可否判定部１０５は、以下のようなポリシーを内部に保存する。ポリシー２：“ＳＹＳＴＥＭＣＡＬＬ=ＷＲＩＴＥ  ＦＩＬＥ＝／ｅｔｃ／ｐａｓｓｗｄ    ⇒  ＤＥＮＹ”  ＷＲＩＴＥシステムコールの実行が要求されたとき、アクセス可否判定部１０５は、メモリ解析部１０６へ、アクセス対象のファイル名を問い合わせる。【００８１】
メモリ解析部１０６は、例えばＬｉｎｕｘでは、ファイルディスクリプタからファイル構造体を参照し、さらにファイル構造体から参照されているd_entry構造体のファイル名のフィールドを取得することで、ファイル名を取得出来る。【００８２】
アクセス可否判定部１０５は、メモリ解析部１０６からアクセス対象のファイル名を受け取り、ポリシーで指定されているファイル名と文字列の比較を行うことにより、アクセスの可否を判定する。【００８３】
以上、アクセス対象のファイル名による判定の動作を説明したが、d_entry構造体から参照されているinode構造体には、ファイルのＵｓｅｒＩＤ、ＧｒｏｕｐＩＤなどが記録されているため、これらの情報を用いて判定を行っても良い。【００８４】
上記では、システムコールの引数を書き換えて、システムコールの処理をブロックする動作を説明した。以下に、システムコール番号を書き換えて、システムコールの処理をブロックする具体的な動作を説明する。【００８５】
管理者は、保持部１０８にあらかじめ無効なシステムコール番号を登録する。例えば、Ｌｉｎｕｘでは、５００番のシステムコール番号は存在しないため、５００番号を保持部１０８に記憶させる。【００８６】
システムコール変更部１０７は、保持部１０８へ、無効なシステムコール番号を問い合わせ、保持部１０８は、５００番を返す。例えば、Ｌｉｎｕｘのシステムコール番号はＣＰＵ１１２のＥＡＸレジスタに格納されているため、システムコール変更部１０７は、ＥＡＸレジスタを保持部１０８から受け取った値に変更する。【００８７】
割り込みハンドラ１０２は、呼び出すべきシステムコール処理関数１０３を判定しようとするが、５００番のシステムコールは存在しないため、エラーをユーザプロセスに返す。
［第２の実施の形態］
次に、本発明の第２の発明を実施するための最良の形態について図面を参照して詳細に説明する。図５は、本発明の第２の実施の形態に係るアクセス制御装置のブロック図である。ただし、第１の実施の形態と同様の箇所については、説明を省略する。【００８８】
図５を参照すると、第２の実施の形態では、仮想マシンモニタ（Virtual Machine monitor;以下、ＶＭＭという）２３０を用いて、１つのコンピュータ２００上で、管理用の仮想マシン（Virtual Machine for Control；以下、管理ＶＭ(Control Virtual Machine)という）２２０とユーザ用の仮想マシン（Virtual Machine for User；以下、ユーザＶＭ(User Virtual Machine)という）２１０が動作する。【００８９】
ＶＭＭ２３０は、ハードウェアをエミュレーションするソフトウェアである。管理ＶＭ２２０は、特権を持つ仮想マシンであり、メモリ２１１を自由に読み書きできる。【００９０】
ユーザＶＭ２１０は権限が制限された仮想マシンであり、ユーザＶＭ２１０から管理ＶＭ２２０にアクセスすることは出来ない。【００９１】
ユーザＶＭ２１０では、ユーザプロセス２０１と、割り込みハンドラ２０２と、システムコール処理関数２０３とが動作する。ＶＭＭ２３０では、割り込みフック部２０４が動作する。管理ＶＭ２２０では、アクセス可否判定部２０５と、メモリ解析部２０６と、システムコール変更部２０７とが動作する。【００９２】
第1の実施形態では、メモリ解析部１０６は、プロセス情報と、無効なシステムコールの引数を検索するだけであったが、第２の実施形態では、メモリ解析部２０６は、ユーザＶＭ２１０のＯＳの特定を行う。【００９３】
ＯＳの特定は、ＬｉｎｕｘやＷｉｎｄｏｗｓ（登録商標）に固有のパターンを、メモリ２１１のユーザＶＭ２１０に割り当てられた領域より検索することによって行われる。【００９４】
システムコール番号とシステムコール名の対応は、オペレーティングシステム（以下、ＯＳという）の種類によって異なっている。アクセス可否判定部２０５は、第1の実施の形態では、１つのシステムコール番号とシステムコール名を対応付けるテーブルしか持たなかったが、第２の実施の形態では、複数のＯＳに対応するため、ＯＳごとにシステムコール番号とシステムコール名を対応付けるテーブルを持つ。【００９５】
アクセス可否判定部２０５は、メモリ解析部２０６にＯＳの種類を問い合わせることによって、どのＯＳのテーブルを使用すればよいか決定する。それ以外の動作は、第１の実施形態と同様である。【００９６】
この第２の実施の形態では、メモリ解析部２０６と、システムコール変更部２０７と、アクセス可否判定部２０５を管理ＶＭ２２０に配置することで、一つのバイナリで様々なＯＳの制御が可能になる効果がある。また、ユーザＶＭ２１０から管理ＶＭ２２０には、直接アクセスすることはできないため、メモリ解析部２０６と、システムコール変更部２０７と、アクセス可否判定部２０５とがユーザＶＭ２１０上のソフトウェアから攻撃されることは無く、より安全性が高まる効果がある。【００９７】
第２の実施の形態の動作として、システムコール変更部２０７がシステムコールの引数を変更し、割り込みフック部２０４が割り込みハンドラ２０２を呼び出す動作を説明したが、システムコール変更部２０７が適切なエラーを示す戻り値を設定し、割り込みフック部２０４が、割り込みハンドラ２０２とシステムコール処理関数２０３を飛ばして、ユーザプロセス２０１に直接エラーを返してもよい。【００９８】
この動作では、割り込みハンドラ２０２とシステムコール処理関数２０３とが呼び出されないため、それらが改竄されていたとしても、アクセス制御を行うことが出来る。【００９９】
図１１は、本発明の第２の実施の形態に係る他の構成のアクセス制御装置のブロック図である。図１１に示す構成では、システムコール番号を変更することによって、割り込みハンドラ２０２にエラー処理をさせている。図５に示すアクセス制御装置との違いは、メモリ解析部２０６の代わりに、ＯＳで定義されていないシステムコール番号の情報を内部に保持する保持部２０８が設けられていることである。第１の実施の形態の別の動作として、図１０を用いてシステムコール番号を変更する動作を説明した。システムコールの種類はＯＳやそのバージョンによって異なるため、第２の実施形態では、システムコール変更部２０７は、ＯＳごとに無効なシステムコール番号を記録したテーブルを内部に保存する。そして、保持部２０８へＯＳの種類を問い合わせることにより、ユーザＶＭのＯＳに合った無効なシステムコール番号を選択し、変更を行う。【０１００】
上記の動作では、ＯＳごとに無効なシステムコール番号を選択している。ユーザＶＭ２１０のＯＳが限られている場合は、それらのＯＳに共通な無効なシステムコール番号にすることで、ＯＳごとに無効なシステムコール番号を選択する処理を省略してもよい。【０１０１】
システムコールの引数を変更する動作、システムコール番号を変更する動作、ユーザプロセスに直接エラーを返す動作のいずれの場合でも、システムコールがブロックされると、ユーザプロセス２０１にはエラーが通知され、ユーザプロセス２０１は動作を続行する。【０１０２】
ユーザプロセス２０１の動作を停止させるために、システムコール変更部２０７は、システムコール番号を、プロセス終了を行うシステムコールの番号に変更することによって、ユーザプロセス２０１を強制停止させても良い。【０１０３】
続いて、実際にＬｉｎｕｘやＷｉｎｄｏｗｓ（登録商標）等のＯＳを用いた場合に、第２の実施の形態がどのように動作するのかを説明する。第１の実施の形態と同様の箇所については説明を省略する。【０１０４】
仮想マシンを用いると、ＣＰＵ２１２が仮想化されるため、割り込みの処理はＣＰＵ２１２ではなくＶＭＭ２３０で行われる。第２の実施の形態では、割り込みフック部２０４は、ＶＭＭ２３０の割り込みベクタテーブルを、ユーザＶＭ２１０の割り込みハンドラ２０２ではなく、管理ＶＭ２２０のアクセス可否判定部２０５のアドレスに変更する。また、フックすべき割り込みは、ＯＳによって異なるため、割り込みフック部２０４は、図６に示されるテーブルを持つ。メモリ解析部２０６にＯＳの種類を問い合わせ、テーブルを参照することにより、フックする割り込みを特定する。【０１０５】
第１の実施の形態では、対象とするＯＳはマシンにインストールされている1種類のＯＳに限られていた。第２の発明の形態では、複数のＯＳに対応するために、アクセス可否判定部２０５は、図７のようなシステムコール情報テーブルを、ＯＳごとに持つ。【０１０６】
例えば、Ｌｉｎｕｘ２．４では、ＥＸＥＣＶＥシステムコールの番号は１１番なのに対して、ＦｒｅｅＢＳＤ４．５では５９番であるため、Ｌｉｎｕｘのテーブルには、”１１→ＥＸＥＣＶＥ”が記録され、ＦｒｅｅＢＳＤでは、”５９→ＥＸＥＣＶＥ”が記録されている。それに従って、ユーザＶＭ２１０がＬｉｎｕｘ２．４の場合、１１番のシステムコール番号はＷＲＩＴＥに変換され、ＦｒｅｅＢＳＤ４．５では５９番のシステムコール番号がＷＲＩＴＥに変換される。そして、システムコール名とポリシーを比較し、システムコール実行の可否を決定する。【０１０７】
メモリ解析部２０６は、メモリ２１１のユーザＶＭ２１０に割り当てられている領域を検索し、ＯＳ特有のコードがメモリにロードされていることを確認して特定する。例えば、ＬｉｎｕｘのカーネルであるＶＭＬＩＮＵＺが、メモリ２１１上に存在すれば、Ｌｉｎｕｘであると特定できる。また、ＸＥＮやＶＭＷＡＲＥ（登録商標）では、設定ファイルにＯＳ名が書かれているため、設定ファイルを読み込み、ＯＳ名のフィールドを参照することで特定してもよい。【０１０８】
メモリ解析部２０６の無効なシステムコール引数の検索方法と、プロセス情報の取得方法は、ユーザＶＭ２１０のＯＳの種類によって異なる。よって、あらかじめ内部に複数のＯＳのための検索アルコリズムを内蔵し、ＯＳの種類によってそれらのアルゴリズムを使い分ける。例えば、task_structを取得するアルゴリズムと、eProcess構造体を取得するアルゴリズムを用意しておき、上述した動作でＯＳの種類を特定し、Ｌｉｎｕｘであれば前者のアルゴリズムを用い、Ｗｉｎｄｏｗｓ（登録商標）であれば後者のアルゴリズムによってプロセスの情報を取得する。無効な引数の検索も同様に、ＯＳの判定後に、対応するアルゴリズムによって検索を行う。【０１０９】
システムコール番号を書き換えて、システムコールの処理をブロックする場合、図１１の保持部２０８は、あらかじめ管理者が作成した、図８のようなＯＳごとに無効なシステムコール番号を記録したテーブルを内部に記憶する。【０１１０】
保持部２０８は、システムコール変更部から問い合わせを受けると、前述した動作によってＯＳの種類を確認し、無効なシステムコール番号を記録したテーブルを参照し、無効なシステムコール番号をシステムコール変更部２０７へ返す。【０１１１】
上記以外の動作は、第1の実施形態と同様のため説明を省略する。【０１１２】
上記の動作では、ＯＳを判別し、テーブルを参照して、どのシステムコールに書き換えればよいかを定めていた。ユーザＶＭ２１０で使用されるＯＳの種類が事前に分かっている場合は、それらのＯＳに共通な、無効なシステムコール番号をあらかじめ求めておいてもよい。【０１１３】
ポリシーに“ＬｉｎｕｘとＦｒｅｅＢＳＤのみを利用”と記述されていた場合、保持部は、ＬｉｎｕｘとＦｒｅｅＢＳＤのシステムコール一覧表を読み込み、どちらのＯＳにも定義されていないシステムコール番号を求める。【０１１４】
例えば、２．６以下のバージョンのＬｉｎｕｘと、６．０以下のバージョンのＦｒｅｅＢＳＤでは、どちらも５００番のシステムコールは予約されていないため、５００番が無効なシステムコール番号となる。【０１１５】
アクセス可否判定部２０５から呼び出されたとき、保持部２０８はＯＳの種類を特定する処理を省略し、５００番をアクセス可否判定部２０５に返す。そして、アクセス可否判定部２０５が５００番のシステムコール番号に変更することで、ＯＳに依存せずにシステムコールの実行をブロックできる。【０１１６】
上記の動作では、システムコール変更部２０７がシステムコールの引数か、システムコール番号を変更することによって、割り込みハンドラ２０２またはシステムコール処理関数２０３にエラー処理をさせ、システムコールの実行をブロックしていた。【０１１７】
ここでは、システムコール変更部２０７がエラー値を生成し、割り込みフック部２０４が、割り込みハンドラ２０２とシステムコール処理関数２０３の処理を飛ばし、直接ユーザプロセス２０１へエラーを返す具体的な動作を説明する。【０１１８】
システムコール変更部２０７は、メモリ解析部２０６へユーザＶＭ２１０のＯＳの種類を問い合わせ、ＯＳの種類を取得する。次に、システムコール変更部２０７は、図９のようなＯＳごとのエラーコードを記録したテーブルを参照し、エラーコードをＣＰＵ２１２のレジスタにセットする。例えば、Ｌｉｎｕｘの場合、−１のエラーコードを、ＥＡＸレジスタにセットすればよい。割り込みフック部２０４は、ユーザプロセス２０１のシステムコール呼び出しの次のアドレスから、実行を再開する。【０１１９】
上記の動作では、エラーコードをユーザプロセス２０１に返すことで、ユーザプロセス２０１はシステムコールが実行されなかったことを知ることが出来る。例えば、ウィルスなどに対して、システムコールのブロックを知られたくない場合は、図９のテーブルにエラーコードではなく、成功を示すコードを記録し、システムコール変更部２０７は、ＣＰＵ２１２のレジスタに当該コードをセットすればよい。【０１２０】
上記の動作では、システムコールの実行がブロックされた場合でも、ユーザプロセス２０１はエラーコードを受け取るだけであり、終了するわけではない。例えば、システムコール変更部２０７は、システムコール番号をＥＸＩＴの番号に変更することによって、ユーザプロセス２０１を終了させることが出来る。【０１２１】
ユーザプロセス２０１がＷＲＩＴＥシステムコールの実行を要求し、アクセス可否判定部２０５が実行を禁止した場合、アクセス可否判定部２０５は、システムコールの番号をＥＸＩＴに変更する。割り込みハンドラ２０２は、ＷＲＩＴＥ命令に代わって、プロセスの終了処理を行うＥＸＩＴ関数を呼び出すため、ユーザプロセス２０１は強制的に終了する。【０１２２】
図１、図５、図１０、図１１に示したアクセス制御装置の機能及び図２及び図３に示したフローを実現するプログラムは、ＦＤ（フロッピィディスク）等のフレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ、フラッシュメモリ等のコンピュータ読み取り可能な情報記録媒体に記憶されたり、インターネット等のネットワークを通して提供される。そして、それらのプログラムがコンピュータの記憶部となるハードディスク等に読み込まれて実行されることによってアクセス制御装置が実現される。【０１２３】
以上、本発明の代表的な実施形態について説明したが、本発明は、本願の請求の範囲によって規定される、その精神または主要な特徴から逸脱することなく、他の種々の形で実施することができる。そのため、前述した各実施形態は単なる例示にすぎず、限定的に解釈されるべきではない。本発明の範囲は特許請求の範囲によって示すものであって、明細書や要約書の記載には拘束されない。さらに、特許請求の範囲の均等範囲に属する変形や変更はすべて本発明の範囲内のものである。【０１２４】
本願は、２００８年２月１４日に出願された特願２００８−０３３１０２号に基づき、優先権の利益を主張するものである。そして、特願２００８−０３３１０２号の内容は本願の明細書の内容に含まれる。
【産業上の利用可能性】
【０１２５】
本発明によれば、エラー処理を意図的に行わせてシステムコールの実行をブロックすることによりウィルスなどの特定プロセスがシステムコールを実行することを防止でき、ウィルスの動作を防止するアンチウィルスプログラムに適している。
【図１】
0005382450.tif 000002
【図２】
0005382450.tif 000003
【図３】
0005382450.tif 000004
【図４】
0005382450.tif 000005
【図５】
0005382450.tif 000006
【図６】
0005382450.tif 000007
【図７】
0005382450.tif 000008
【図８】
0005382450.tif 000009
【図９】
0005382450.tif 000010
【図１０】
0005382450.tif 000011
【図１１】
0005382450.tif 000012