(57)【特許請求の範囲】
【請求項１】
プロセスから要求された処理を実行する実行部と、
前記処理の対象が条件を満たしていれば、前記実行部に前記処理を実行させ、前記処理の対象が前記条件を満たしていなくても、前記処理の要求元のプロセスが、他のプログラムのファイルを参照して前記他のプログラムを実行しているプログラムに該当する場合は、前記処理の権限が付与されたプログラムを示す権限情報をメモリから読み取って、前記他のプログラムに前記処理の権限が付与されていれば、前記実行部に前記処理を実行させる制御部と
を備える処理実行装置。
【請求項２】
前記処理の要求元のプロセスは、前記他のプログラムとしてスクリプトプログラムを実行しているシェルであれば、前記他のプログラムのファイルを参照して前記他のプログラムを実行しているプログラムに該当する請求項１に記載の処理実行装置。
【請求項３】
前記権限情報は、前記処理の権限が付与されたプログラムのファイルを識別するファイルＩＤであり、
前記制御部は、前記処理の対象が前記条件を満たしていなくても、前記処理の要求元のプロセスが前記シェルである場合は、前記シェルが参照するファイルを示すファイルディスクリプタと前記権限情報とを参照し、前記ファイルディスクリプタで示されるファイルと前記権限情報で識別されるファイルとが一致していれば、前記実行部に前記処理を実行させる請求項２に記載の処理実行装置。
【請求項４】
前記制御部は、前記処理の対象が前記条件を満たしていなくても、前記処理の要求元のプロセスと前記処理の要求元のプロセスの先祖プロセスとのいずれかに前記処理の権限が付与されていれば、前記実行部に前記処理を実行させる請求項１から３のいずれか１項に記載の処理実行装置。
【請求項５】
前記処理は、前記処理の対象としてプログラムを起動する処理であり、
前記条件は、前記処理により起動されるプログラムが前記メモリに記憶されたホワイトリストに登録されている場合に満たされる請求項１から４のいずれか１項に記載の処理実行装置。
【請求項６】
前記処理は、前記処理の対象としてライブラリをロードする処理であり、
前記条件は、前記処理によりロードされるライブラリが前記メモリに記憶されたホワイトリストに登録されている場合に満たされる請求項１から４のいずれか１項に記載の処理実行装置。
【請求項７】
前記処理は、前記処理の対象としてファイルを書き込みモードでオープンする処理であり、
前記条件は、前記処理によりオープンされるファイルが前記メモリに記憶されたホワイトリストに登録されていない場合に満たされる請求項１から４のいずれか１項に記載の処理実行装置。
【請求項８】
コンピュータが、プロセスから要求された処理の対象が条件を満たしていれば、前記処理を実行し、
前記コンピュータが、前記処理の対象が前記条件を満たしていなくても、前記処理の要求元のプロセスが、他のプログラムのファイルを参照して前記他のプログラムを実行しているプログラムに該当する場合は、前記処理の権限が付与されたプログラムを示す権限情報をメモリから読み取って、前記他のプログラムに前記処理の権限が付与されていれば、前記処理を実行する処理実行方法。
【請求項９】
コンピュータに、
プロセスから要求された処理の対象が条件を満たしていれば、前記処理を実行させ、
前記処理の対象が前記条件を満たしていなくても、前記処理の要求元のプロセスが、他のプログラムのファイルを参照して前記他のプログラムを実行しているプログラムに該当する場合は、前記処理の権限が付与されたプログラムを示す権限情報をメモリから読み取らせて、前記他のプログラムに前記処理の権限が付与されていれば、前記処理を実行させる制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理実行装置、処理実行方法及び制御プログラムに関するものである。
【背景技術】
【０００２】
工場やプラント等の機器を監視、制御する計算機システムは、一般にはインターネットに接続せず、閉じたネットワーク構成下で利用される。そのため、一般のＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）で利用される、インターネットに接続して最新のウィルスパターンファイルをダウンロードして利用するウィルス対策ソフトウェアを利用することは難しい。しかし、閉じたネットワークであっても、外部から持ち込まれたＰＣや記録媒体を介してコンピュータウィルスが入り込む危険性がある。
【０００３】
特許文献１には、プログラムの不正な改竄を防止しつつプログラムの正当な更新を可能にする技術が記載されている。この技術では、プログラムを実行してよいかどうか判定する際に、プログラムのハッシュ値がホワイトリストにあるかどうか、また、ホワイトリストにない場合は親プロセスのハッシュ値がホワイトリストにあるかどうかを確認している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２３８１６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来の技術では、正当なプログラムにより動的に作成されたプログラムを起動する場合、対象のプログラムはホワイトリストに登録されていないため実行することはできない。ただし、親プロセスがホワイトリストに登録されている場合、そのプロセスから起動されたホワイトリスト未登録プログラムは実行可能となる。
【０００６】
ＵＮＩＸ（登録商標）  ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のシェルコマンドで実行するスクリプトプログラムから起動するホワイトリスト未登録プログラムの親プロセスは、スクリプトプログラムではなくシェルとなる。しかし、シェルをホワイトリストに登録し、そこから起動されるホワイトリスト未登録子プロセスも実行可能にすると、侵入者がシェルコマンドから起動したマルウェアの実行を阻止できない。
【０００７】
本発明は、処理の対象によって処理の実行可否を決めている場合であっても、特別な権限を与えたプログラムを実行しているプロセスから要求される処理については、処理の対象に関わらず、処理の実行を許可できるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一態様に係る処理実行装置は、
プロセスから要求された処理を実行する実行部と、
前記処理の対象が条件を満たしていれば、前記実行部に前記処理を実行させ、前記処理の対象が前記条件を満たしていなくても、前記処理の要求元のプロセスが、他のプログラムのファイルを参照して前記他のプログラムを実行しているプログラムに該当する場合は、前記処理の権限が付与されたプログラムを示す権限情報をメモリから読み取って、前記他のプログラムに前記処理の権限が付与されていれば、前記実行部に前記処理を実行させる制御部とを備える。
【発明の効果】
【０００９】
本発明では、処理の権限が付与されたプログラムを示す権限情報を管理している。このため、本発明によれば、特別な権限を与えたプログラムを実行しているプロセスから要求される処理については、処理の対象に関わらず、処理の実行を許可できるようになる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１に係る処理実行装置の構成を示すブロック図。
【図２】実施の形態１に係る処理実行装置の動作を示すフローチャート。
【図３】実施の形態１に係る処理実行装置の動作を示すフローチャート。
【図４】実施の形態２に係る処理実行装置の構成を示すブロック図。
【図５】実施の形態２に係る処理実行装置の動作を示すフローチャート。
【図６】実施の形態２に係る処理実行装置の動作を示すフローチャート。
【図７】実施の形態３に係る処理実行装置の構成を示すブロック図。
【図８】実施の形態３に係る処理実行装置の動作を示すフローチャート。
【図９】実施の形態３に係る処理実行装置の動作を示すフローチャート。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一又は相当する部分には、同一符号を付している。実施の形態の説明において、同一又は相当する部分については、その説明を適宜省略又は簡略化する。
【００１２】
実施の形態１．
本実施の形態に係る装置は、プログラムのリストを基に実行可否の判別を行い、リストに掲載されていないプログラムについては、起動元プログラムが参照するファイルに付与された権限を基に実行可否を判断する。なお、１つ１つのファイルは、ファイルＩＤ（ＩＤｅｎｔｉｆｉｅｒ）によって識別される。
【００１３】
以下では、本実施の形態に係る装置の構成、本実施の形態に係る装置の動作、本実施の形態の効果を順番に説明する。
【００１４】
＊＊＊構成の説明＊＊＊
図１を参照して、本実施の形態に係る装置である処理実行装置１００の構成を説明する。
【００１５】
処理実行装置１００は、コンピュータである。処理実行装置１００は、プロセッサ１０１、ネットワークコントローラ１０２、入力デバイス１０３、表示デバイス１０４、メモリ１０５、補助記憶装置１０６といったハードウェアを備える。プロセッサ１０１は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００１６】
処理実行装置１００は、機能部として、実行部１１０と、制御部１２０とを備える。実行部１１０と、制御部１２０とのそれぞれの機能は、ソフトウェアにより実現される。
【００１７】
プロセッサ１０１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ１０１は、具体的には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
【００１８】
ネットワークコントローラ１０２は、データを受信するレシーバ及びデータを送信するトランスミッタを含む。ネットワークコントローラ１０２は、具体的には、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
【００１９】
入力デバイス１０３は、具体的には、マウス、キーボード、又は、タッチパネルである。
【００２０】
表示デバイス１０４は、具体的には、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）である。
【００２１】
メモリ１０５は、具体的には、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
【００２２】
補助記憶装置１０６は、具体的には、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、又は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。
【００２３】
補助記憶装置１０６には、実行部１１０、制御部１２０といった「部」の機能を実現するプログラムが記憶されている。プログラムは、メモリ１０５にロードされ、プロセッサ１０１によって実行される。本実施の形態において、実行部１１０の機能を実現するプログラムは、ＯＳである。制御部１２０の機能を実現するプログラムは、ＯＳ上で実行されてもよいし、ＯＳに統合されてもよい。
【００２４】
補助記憶装置１０６には、「部」の機能を実現するプログラムのほかにも、複数のプログラム１３１と、複数のライブラリ１３２と、少なくとも１つのスクリプトプログラム１４０とが記憶されている。プログラム１３１は、ライブラリ１３２とともにメモリ１０５にロードされ、ライブラリ１３２と結合され、プロセッサ１０１によって実行される。ライブラリ１３２と結合されたプログラム１３１は、プロセス１３０としてＯＳにより管理される。スクリプトプログラム１４０は、プログラム１３１の１つであるシェルにより実行される。
【００２５】
補助記憶装置１０６には、さらに、ホワイトリスト１２４と、実行特権プログラムのファイルＩＤ１２５と、シェルのファイルＩＤ１２６と、シェルのファイルディスクリプタ１２７とが記憶されている。ホワイトリスト１２４には、実行を許可するプログラム１３１のファイルＩＤを登録する。具体的には、実行を許可するプログラム１３１をＯＳが補助記憶装置１０６上でファイルとして管理するためのユニークな番号等を登録しておく。実行特権プログラムのファイルＩＤ１２５も、特別な権限が与えられたプログラムをＯＳが補助記憶装置１０６上でファイルとして管理するための識別子である。具体的には、プログラム１３１のファイルＩＤや、スクリプトプログラム１４０のファイルＩＤである。本実施の形態において、実行特権プログラムのファイルＩＤ１２５は、処理の権限としてプログラムの起動処理の権限が付与されたプログラムを示す権限情報１２９である。シェルのファイルＩＤ１２６は、シェルのファイルの識別子である。シェルのファイルディスクリプタ１２７は、シェルがスクリプトプログラム１４０を読み込むときに使用するファイルの記述子である。具体的には、シェルがオープンしている入力ファイルを識別するための番号である。
【００２６】
実行部１１０は、プロセス１３０から要求されてプログラム起動処理１１１を実行する。
【００２７】
制御部１２０は、起動可否判断処理１２１を実行する。制御部１２０は、起動可否判断処理１２１において、ホワイトリスト１２４、実行特権プログラムのファイルＩＤ１２５、シェルのファイルＩＤ１２６、シェルのファイルディスクリプタ１２７といったデータを参照する。制御部１２０が参照するデータは、メモリ１０５にあれば、メモリ１０５から読み取られ、メモリ１０５になければ、補助記憶装置１０６からメモリ１０５に転送されてから読み取られる。
【００２８】
処理実行装置１００は、１つのプロセッサ１０１のみを備えていてもよいし、複数のプロセッサ１０１を備えていてもよい。複数のプロセッサ１０１が「部」の機能を実現するプログラムを連携して実行してもよい。
【００２９】
「部」の処理の結果を示す情報、データ、信号値、及び、変数値は、補助記憶装置１０６、メモリ１０５、又は、プロセッサ１０１内のレジスタ又はキャッシュメモリに記憶される。
【００３０】
「部」の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）等の可搬記録媒体に記憶されてもよい。
【００３１】
＊＊＊動作の説明＊＊＊
図２及び図３を参照して、処理実行装置１００の動作を説明する。処理実行装置１００の動作は、本実施の形態に係る処理実行方法に相当する。
【００３２】
図２は、実行部１１０により実行されるプログラム起動処理１１１の流れを示すフローチャートである。
【００３３】
ステップＳ１１において、プログラム起動処理１１１は、起動可否判断処理１２１を呼び出す。その結果、ステップＳ１２で起動許可と判定されると、ステップＳ１３において、プログラム起動処理１１１は、プログラム１３１の起動処理を実行する。具体的には、プログラム起動処理１１１は、プログラム１３１を補助記憶装置１０６からメモリ１０５に読み出して起動する。ステップＳ１２で起動不可であると判定されると、ステップＳ１４において、プログラム起動処理１１１は、エラーを返す。なお、ステップＳ１２での許可は、起動可否判断処理１２１としての許可であり、ＯＳが確認する実行権やアクセス権の処理はステップＳ１３の処理に含むものとする。
【００３４】
図３は、制御部１２０により実行される起動可否判断処理１２１の流れを示すフローチャートである。起動可否判断処理１２１の流れは、本実施の形態に係る制御プログラムの処理手順に相当する。
【００３５】
ステップＳ２１において、起動可否判断処理１２１は、起動しようとしたプログラム１３１がホワイトリスト１２４に登録済であるかどうかを確認する。登録済プログラムであれば、ステップＳ２８において、起動可否判断処理１２１は、プログラム１３１の起動許可を与える。登録済プログラムでない場合は、ステップＳ２２において、起動可否判断処理１２１は、親のプロセス１３０が存在するかを確認する。ここで、親のプロセス１３０とは、プログラム１３１を起動しようとしているプロセス１３０のことである。親のプロセス１３０が存在しない場合は、ステップＳ２７において、起動可否判断処理１２１は、プログラム１３１を起動不可とする。ステップＳ２２で親のプロセス１３０が存在する場合は、ステップＳ２３において、起動可否判断処理１２１は、親のプロセス１３０のプログラム１３１のファイルＩＤが実行特権プログラムのファイルＩＤ１２５に合致するかどうかを確認する。実行特権プログラムのファイルＩＤ１２５に合致する場合は、ステップＳ２８において、起動可否判断処理１２１は、プログラム１３１の起動許可を与える。ステップＳ２３で実行特権プログラムのファイルＩＤ１２５に合致しない場合は、ステップＳ２４において、起動可否判断処理１２１は、親のプロセス１３０がシェルであるかどうかを、シェルのファイルＩＤ１２６を用いて確認する。シェルでなければ、ステップＳ２６において、起動可否判断処理１２１は、さらに親のプロセス１３０を遡って確認を行う。ステップＳ２４で親のプロセス１３０がシェルであれば、ステップＳ２５において、起動可否判断処理１２１は、シェルのファイルディスクリプタ１２７に結び付けられたスクリプトプログラム１４０のファイルＩＤが実行特権プログラムのファイルＩＤ１２５に一致するかどうかを確認する。一致した場合は、ステップＳ２８において、起動可否判断処理１２１は、プログラム１３１の起動許可を与える。ステップＳ２５で一致しない場合は、ステップＳ２６において、起動可否判断処理１２１は、親のプロセス１３０を遡って確認を行う。
【００３６】
ここで、起動可否判断処理１２１を、制御部１２０の動作として説明する。
【００３７】
制御部１２０は、ステップＳ２１において、起動処理の対象となるプログラム１３１が条件を満たしているかどうかを確認する。本実施の形態では、起動処理により起動されるプログラム１３１がメモリ１０５に記憶されたホワイトリスト１２４に登録されている場合に、条件が満たされることになる。よって、制御部１２０は、起動処理の対象となるプログラム１３１のファイルＩＤをキーとして、メモリ１０５に記憶されたホワイトリスト１２４を検索する。キーと一致するファイルＩＤがホワイトリスト１２４に含まれていれば、起動処理の対象が条件を満たしていることになる。
【００３８】
起動処理の対象が条件を満たしていれば、制御部１２０は、ステップＳ２８において、実行部１１０に起動処理を実行させる。具体的には、制御部１２０は、起動処理の実行を許可することを示すデータをメモリ１０５、又は、プロセッサ１０１のレジスタに格納する。実行部１１０は、このデータを参照して起動処理を実行する。
【００３９】
起動処理の対象が条件を満たしていなくても、制御部１２０は、ステップＳ２２及びステップＳ２３において、起動処理の要求元のプロセス１３０、即ち、親のプロセス１３０が存在するかどうか、もし存在していれば親のプロセス１３０に起動処理の権限が付与されているかどうかを確認する。親のプロセス１３０が存在するかどうかを確認する方法については、特許文献１と同様の方法を用いることができる。親のプロセス１３０に起動処理の権限が付与されているかどうかを確認する際には、制御部１２０は、権限情報１２９をメモリ１０５から読み取って、権限情報１２９を参照する。権限情報１２９は、本実施の形態では、起動処理の権限が付与されたプログラムのファイルを識別するファイルＩＤ１２５である。よって、制御部１２０は、親のプロセス１３０として動作しているプログラム１３１のファイルＩＤと、権限情報１２９であるファイルＩＤ１２５とを比較する。両者が一致していれば、親のプロセス１３０に起動処理の権限が付与されていることになる。
【００４０】
親のプロセス１３０に起動処理の権限が付与されていれば、制御部１２０は、ステップＳ２８において、実行部１１０に起動処理を実行させる。その結果、制御部１２０は、ステップＳ１３において、親のプロセス１３０から要求された処理を実行することになる。この処理は、処理の対象としてプログラム１３１を起動する処理である。
【００４１】
親のプロセス１３０に起動処理の権限が付与されていなくても、制御部１２０は、ステップＳ２４において、親のプロセス１３０が、他のプログラムのファイルを参照して当該他のプログラムを実行しているプログラム１３１に該当するかどうかを確認する。そして、もし該当していれば、制御部１２０は、ステップＳ２５において、当該他のプログラムに起動処理の権限が付与されているかどうかを確認する。本実施の形態では、親のプロセス１３０が、他のプログラムとしてスクリプトプログラム１４０を実行しているシェルであれば、他のプログラムのファイルを参照して当該他のプログラムを実行しているプログラム１３１に該当することになる。よって、制御部１２０は、親のプロセス１３０がシェルであるかどうかを確認する。具体的には、制御部１２０は、親のプロセス１３０として動作しているプログラム１３１のファイルＩＤとメモリ１０５に記憶されたシェルのファイルＩＤ１２６とを比較する。両者が一致していれば、親のプロセス１３０がシェルであることになる。親のプロセス１３０がシェルである場合、制御部１２０は、シェルが参照するファイルを示すファイルディスクリプタ１２７と権限情報１２９とをメモリ１０５から読み取って、ファイルディスクリプタ１２７と権限情報１２９とを参照する。ファイルディスクリプタ１２７は、ファイルＩＤ等を含むファイル情報へのインデックスである。また、前述したように、権限情報１２９は、本実施の形態では、起動処理の権限が付与されたプログラムのファイルを識別するファイルＩＤ１２５である。よって、制御部１２０は、ファイルディスクリプタ１２７で示されるスクリプトプログラム１４０のファイルＩＤと、権限情報１２９であるファイルＩＤ１２５とを比較する。両者が一致していれば、スクリプトプログラム１４０に起動処理の権限が付与されていることになる。
【００４２】
スクリプトプログラム１４０に起動処理の権限が付与されていれば、制御部１２０は、ステップＳ２８において、実行部１１０に起動処理を実行させる。その結果、制御部１２０は、ステップＳ１３において、親のプロセス１３０から要求された処理を実行することになる。前述したように、この処理は、処理の対象としてプログラム１３１を起動する処理である。
【００４３】
親のプロセス１３０がシェルでないか、シェルであってもスクリプトプログラム１４０に起動処理の権限が付与されていなければ、制御部１２０は、ステップＳ２６を経て、親のプロセス１３０の先祖について、ステップＳ２４及びステップＳ２５を含む同様の処理を行う。ここで、あるプロセス１３０に対して、そのプロセス１３０を子とするプロセス１３０を先代とすると、親のプロセス１３０から先代、先々代と順番に初代まで遡ったとき、親のプロセス１３０の先代から初代までのそれぞれのプロセス１３０が、親のプロセス１３０の先祖に該当する。よって、制御部１２０は、親のプロセス１３０と、その先祖のプロセス１３０とのいずれかに起動処理の権限が付与されていれば、ステップＳ２８において、実行部１１０に起動処理を実行させる。
【００４４】
以上のように、本実施の形態では、親のプロセス１３０が実行特権プログラムであるかどうかの確認に加え、親のプロセス１３０がシェルの場合は、処理しているスクリプトプログラム１４０に特権が与えられているかどうかを確認する。これにより、シェルに特権を与えずにスクリプトプログラム１４０に特権を与え、ホワイトリスト１２４に登録されていないプログラム１３１を起動することができる。具体的には、スクリプトプログラム１４０の中でプログラム１３１のソースコードをコンパイルし、生成された未登録のプログラム１３１をスクリプトプログラム１４０から起動することができる。しかし、シェルには特権を与えていないため、侵入者が不正にログインして実行しているシェルコマンド上でコンパイルした不正プログラムを実行することはできない。
【００４５】
＊＊＊実施の形態の効果の説明＊＊＊
本実施の形態では、処理実行装置１００が、特別にプログラム１３１の起動処理の権限が付与されたプログラムを示す権限情報１２９を管理している。このため、本実施の形態によれば、処理実行装置１００が、特別な権限を与えたプログラムを実行しているプロセス１３０から要求される処理については、起動処理の対象がどのプログラム１３１であるかに関わらず、プログラム１３１の起動処理の実行を許可できるようになる。
【００４６】
＊＊＊他の構成＊＊＊
本実施の形態では、「部」の機能がソフトウェアにより実現されるが、変形例として、「部」の機能がソフトウェアとハードウェアとの組み合わせにより実現されてもよい。即ち、「部」の一部の機能が専用の電子回路により実現され、残りの機能がソフトウェアにより実現されてもよい。専用の電子回路としては、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、又は、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を用いることができる。
【００４７】
プロセッサ１０１、メモリ１０５、及び、専用の電子回路を、総称して「プロセッシングサーキットリ」という。つまり、「部」の機能は、プロセッシングサーキットリにより実現される。
【００４８】
「部」を「工程」又は「手順」又は「処理」に読み替えてもよい。また、「部」の機能をファームウェアにより実現してもよい。
【００４９】
実施の形態２．
本実施の形態に係る装置は、ライブラリのリストを基にロード可否の判別を行い、リストに掲載されていないライブラリについては、ライブラリをロードするプログラムの起動元プログラムが参照するファイルに付与された権限を基にロード可否を判断する。
【００５０】
以下では、本実施の形態に係る装置の構成、本実施の形態に係る装置の動作、本実施の形態の効果を順番に説明する。主に実施の形態１との差異を説明する。
【００５１】
＊＊＊構成の説明＊＊＊
図４を参照して、本実施の形態に係る装置である処理実行装置１００の構成を説明する。
【００５２】
処理実行装置１００は、実施の形態１と同じように、コンピュータである。
【００５３】
処理実行装置１００は、実施の形態１と同じように、機能部として、実行部１１０と、制御部１２０とを備える。実行部１１０と、制御部１２０とのそれぞれの機能は、ソフトウェアにより実現される。
【００５４】
補助記憶装置１０６には、ホワイトリスト１２４と、実行特権プログラムのファイルＩＤ１２５と、シェルのファイルＩＤ１２６と、シェルのファイルディスクリプタ１２７とが記憶されている。ホワイトリスト１２４には、ロードを許可するライブラリ１３２のファイルＩＤを登録する。具体的には、ロードを許可するライブラリ１３２をＯＳが補助記憶装置１０６上でファイルとして管理するためのユニークな番号等を登録しておく。実行特権プログラムのファイルＩＤ１２５も、特別な権限が与えられたプログラム１３１をＯＳが補助記憶装置１０６上でファイルとして管理するための識別子である。具体的には、プログラム１３１のファイルＩＤや、スクリプトプログラム１４０のファイルＩＤである。本実施の形態において、実行特権プログラムのファイルＩＤ１２５は、処理の権限としてライブラリ１３２のロード処理の権限が付与されたプログラムを示す権限情報１２９である。シェルのファイルＩＤ１２６、及び、シェルのファイルディスクリプタ１２７については、実施の形態１のものと同じである。
【００５５】
本実施の形態では、実行部１１０が、ライブラリロード処理１１２を実行する。
【００５６】
また、本実施の形態では、制御部１２０が、ライブラリロード可否判断処理１２２を実行する。制御部１２０は、ライブラリロード可否判断処理１２２において、ホワイトリスト１２４、実行特権プログラムのファイルＩＤ１２５、シェルのファイルＩＤ１２６、シェルのファイルディスクリプタ１２７といったデータを参照する。
【００５７】
＊＊＊動作の説明＊＊＊
図５及び図６を参照して、処理実行装置１００の動作を説明する。処理実行装置１００の動作は、本実施の形態に係る処理実行方法に相当する。
【００５８】
図５は、実行部１１０により実行されるライブラリロード処理１１２の流れを示すフローチャートである。
【００５９】
ステップＳ３１において、ライブラリロード処理１１２は、ライブラリロード可否判断処理１２２を呼び出す。その結果、ステップＳ３２でロード許可と判定されると、ステップＳ３３において、ライブラリロード処理１１２は、ライブラリ１３２のロード処理を実行する。具体的には、ライブラリロード処理１１２は、ライブラリ１３２を補助記憶装置１０６からメモリ１０５にロードする。ステップＳ３２でロード不可であると判定されると、ステップＳ３４において、ライブラリロード処理１１２は、エラーを返す。なお、ステップＳ３２での許可は、ライブラリロード可否判断処理１２２としての許可であり、ＯＳが確認する実行権やアクセス権の処理はステップＳ３３の処理に含むものとする。
【００６０】
図６は、制御部１２０により実行されるライブラリロード可否判断処理１２２の流れを示すフローチャートである。ライブラリロード可否判断処理１２２の流れは、本実施の形態に係る制御プログラムの処理手順に相当する。
【００６１】
ステップＳ４１において、ライブラリロード可否判断処理１２２は、ロードしようとしたライブラリ１３２がホワイトリスト１２４に登録済であるかどうかを確認する。登録済ライブラリであれば、ステップＳ４８において、ライブラリロード可否判断処理１２２は、ライブラリ１３２のロード許可を与える。登録済ライブラリでない場合は、ステップＳ４２において、ライブラリロード可否判断処理１２２は、親のプロセス１３０が存在するかを確認する。ここで、親のプロセス１３０とは、ライブラリ１３２をロードしようとしているプロセス１３０のことである。親のプロセス１３０が存在しない場合は、ステップＳ４７において、ライブラリロード可否判断処理１２２は、ライブラリ１３２をロード不可とする。ステップＳ４２で親のプロセス１３０が存在する場合は、ステップＳ４３において、ライブラリロード可否判断処理１２２は、親のプロセス１３０のプログラム１３１のファイルＩＤが実行特権プログラムのファイルＩＤ１２５に合致するかどうかを確認する。実行特権プログラムのファイルＩＤ１２５に合致する場合は、ステップＳ４８において、ライブラリロード可否判断処理１２２は、ライブラリ１３２のロード許可を与える。ステップＳ４３で実行特権プログラムのファイルＩＤ１２５に合致しない場合は、ステップＳ４４において、ライブラリロード可否判断処理１２２は、親のプロセス１３０がシェルであるかどうかを、シェルのファイルＩＤ１２６を用いて確認する。シェルでなければ、ステップＳ４６において、ライブラリロード可否判断処理１２２は、さらに親のプロセス１３０を遡って確認を行う。ステップＳ４４で親のプロセス１３０がシェルであれば、ステップＳ４５において、ライブラリロード可否判断処理１２２は、シェルのファイルディスクリプタ１２７に結び付けられたスクリプトプログラム１４０のファイルＩＤが実行特権プログラムのファイルＩＤ１２５に一致するかどうかを確認する。一致した場合は、ステップＳ４８において、ライブラリロード可否判断処理１２２は、ライブラリ１３２のロード許可を与える。ステップＳ４５で一致しない場合は、ステップＳ４６において、ライブラリロード可否判断処理１２２は、親のプロセス１３０を遡って確認を行う。
【００６２】
ここで、ライブラリロード可否判断処理１２２を、制御部１２０の動作として説明する。
【００６３】
制御部１２０は、ステップＳ４１において、ロード処理の対象となるライブラリ１３２が条件を満たしているかどうかを確認する。本実施の形態では、ロード処理によりロードされるライブラリ１３２がメモリ１０５に記憶されたホワイトリスト１２４に登録されている場合に、条件が満たされることになる。よって、制御部１２０は、ロード処理の対象となるライブラリ１３２のファイルＩＤをキーとして、メモリ１０５に記憶されたホワイトリスト１２４を検索する。キーと一致するファイルＩＤがホワイトリスト１２４に含まれていれば、ロード処理の対象が条件を満たしていることになる。
【００６４】
上記のように、本実施の形態では、プロセス１３０から要求される処理が、処理の対象としてプログラム１３１を起動する処理から、処理の対象としてライブラリ１３２をロードする処理に変わっているだけで、ステップＳ４１の動作は、実施の形態１におけるステップＳ２１の動作とほぼ同じである。ステップＳ４２以降の動作についても、実施の形態１におけるステップＳ２２以降の動作とほぼ同じであるため、説明を省略する。
【００６５】
以上のように、本実施の形態では、実施の形態１と同様に、シェルに特権を与えずにスクリプトプログラム１４０に特権を与え、ホワイトリスト１２４に登録されていないライブラリ１３２をロードすることができる。
【００６６】
＊＊＊実施の形態の効果の説明＊＊＊
本実施の形態では、処理実行装置１００が、特別にライブラリ１３２のロード処理の権限が付与されたプログラムを示す権限情報１２９を管理している。このため、本実施の形態によれば、処理実行装置１００が、特別な権限を与えたプログラムを実行しているプロセス１３０から要求される処理については、ロード処理の対象がどのライブラリ１３２であるかに関わらず、ライブラリ１３２のロード処理の実行を許可できるようになる。
【００６７】
＊＊＊他の構成＊＊＊
本実施の形態では、実施の形態１と同じように、「部」の機能がソフトウェアにより実現されるが、実施の形態１の変形例と同じように、「部」の機能がソフトウェアとハードウェアとの組み合わせにより実現されてもよい。
【００６８】
実施の形態３．
本実施の形態に係る装置は、ファイルのリストを基に更新可否の判別を行い、リストに掲載されているファイルについては、更新を実行するプログラムの起動元プログラムが参照するファイルに付与された権限を基に更新可否を判断する。
【００６９】
以下では、本実施の形態に係る装置の構成、本実施の形態に係る装置の動作、本実施の形態の効果を順番に説明する。主に実施の形態１との差異を説明する。
【００７０】
＊＊＊構成の説明＊＊＊
図７を参照して、本実施の形態に係る装置である処理実行装置１００の構成を説明する。
【００７１】
処理実行装置１００は、実施の形態１と同じように、コンピュータである。
【００７２】
処理実行装置１００は、実施の形態１と同じように、機能部として、実行部１１０と、制御部１２０とを備える。実行部１１０と、制御部１２０とのそれぞれの機能は、ソフトウェアにより実現される。
【００７３】
補助記憶装置１０６には、ホワイトリスト１２４と、書き込み特権プログラムのファイルＩＤ１２８と、シェルのファイルＩＤ１２６と、シェルのファイルディスクリプタ１２７とが記憶されている。ホワイトリスト１２４には、更新を許可するファイルのファイルＩＤを登録する。具体的には、更新を許可するプログラム１３１をＯＳが補助記憶装置１０６上でファイルとして管理するためのユニークな番号等を登録しておく。書き込み特権プログラムのファイルＩＤ１２８も、特別な権限が与えられたプログラム１３１をＯＳが補助記憶装置１０６上でファイルとして管理するための識別子である。具体的には、プログラム１３１のファイルＩＤや、スクリプトプログラム１４０のファイルＩＤである。本実施の形態において、書き込み特権プログラムのファイルＩＤ１２８は、処理の権限として書き込みモードでのファイルのオープン処理の権限が付与されたプログラムを示す権限情報１２９である。シェルのファイルＩＤ１２６、及び、シェルのファイルディスクリプタ１２７については、実施の形態１のものと同じである。
【００７４】
本実施の形態では、実行部１１０が、ファイルオープン処理１１３を実行する。
【００７５】
また、本実施の形態では、制御部１２０が、ファイルオープン可否判断処理１２３を実行する。制御部１２０は、ファイルオープン可否判断処理１２３において、ホワイトリスト１２４、書き込み特権プログラムのファイルＩＤ１２８、シェルのファイルＩＤ１２６、シェルのファイルディスクリプタ１２７といったデータを参照する。
【００７６】
＊＊＊動作の説明＊＊＊
図８及び図９を参照して、処理実行装置１００の動作を説明する。処理実行装置１００の動作は、本実施の形態に係る処理実行方法に相当する。
【００７７】
図８は、実行部１１０により実行されるファイルオープン処理１１３の流れを示すフローチャートである。なお、ファイルオープン処理１１３の対象となるファイルは、データファイルでもよいが、本実施の形態では、プログラム１３１の改竄の防止や保守時のプログラム１３１の更新を想定し、プログラム１３１のファイルであるとする。
【００７８】
ステップＳ５１において、ファイルオープン処理１１３は、ファイルオープン可否判断処理１２３を呼び出す。その結果、ステップＳ５２でオープン許可と判定されると、ステップＳ５３において、ファイルオープン処理１１３は、ファイルのオープン処理を実行する。具体的には、ファイルオープン処理１１３は、補助記憶装置１０６上のプログラム１３１のファイルを開く。ファイルが開かれると、メモリ１０５を介してファイルからのデータの読み込みとファイルへのデータの書き込みとの少なくともいずれかが可能となる。ステップＳ５２でオープン不可であると判定されると、ステップＳ５４において、ファイルオープン処理１１３は、エラーを返す。なお、ステップＳ５２での許可は、ファイルオープン可否判断処理１２３としての許可であり、ＯＳが確認する実行権やアクセス権の処理はステップＳ５３の処理に含むものとする。
【００７９】
図９は、制御部１２０により実行されるファイルオープン可否判断処理１２３の流れを示すフローチャートである。ファイルオープン可否判断処理１２３の流れは、本実施の形態に係る制御プログラムの処理手順に相当する。
【００８０】
ステップＳ６１において、ファイルオープン可否判断処理１２３は、ファイルを書き込みモードでオープンしようとしているかどうかを確認する。書き込みモードでなければ、ステップＳ６９において、ファイルオープン可否判断処理１２３は、ファイルのオープン許可を与える。ステップＳ６１で書き込みモードであった場合は、ステップＳ６２において、ファイルオープン可否判断処理１２３は、オープンしようとしたプログラム１３１のファイルがホワイトリスト１２４に登録済であるかどうかを確認する。未登録プログラムであれば、ステップＳ６９において、ファイルオープン可否判断処理１２３は、ファイルのオープン許可を与える。登録済プログラムの場合は、ステップＳ６３において、ファイルオープン可否判断処理１２３は、親のプロセス１３０が存在するかを確認する。ここで、親のプロセス１３０とは、ファイルを書き込みモードでオープンしようとしているプロセス１３０のことである。親のプロセス１３０が存在しない場合は、ステップＳ６８において、ファイルオープン可否判断処理１２３は、ファイルをオープン不可とする。ステップＳ６３で親のプロセス１３０が存在する場合は、ステップＳ６４において、ファイルオープン可否判断処理１２３は、親のプロセス１３０のプログラム１３１のファイルＩＤが書き込み特権プログラムのファイルＩＤ１２８に合致するかどうかを確認する。書き込み特権プログラムのファイルＩＤ１２８に合致する場合は、ステップＳ６９において、ファイルオープン可否判断処理１２３は、プログラム１３１のファイルのオープン許可を与える。ステップＳ６４で書き込み特権プログラムのファイルＩＤ１２８に合致しない場合は、ステップＳ６５において、ファイルオープン可否判断処理１２３は、親のプロセス１３０がシェルであるかどうかを、シェルのファイルＩＤ１２６を用いて確認する。シェルでなければ、ステップＳ６７において、ファイルオープン可否判断処理１２３は、さらに親のプロセス１３０を遡って確認を行う。ステップＳ６５で親のプロセス１３０がシェルであれば、ステップＳ６６において、ファイルオープン可否判断処理１２３は、シェルのファイルディスクリプタ１２７に結び付けられたスクリプトプログラム１４０のファイルＩＤが書き込み特権プログラムのファイルＩＤ１２８に一致するかどうかを確認する。一致した場合は、ステップＳ６９において、ファイルオープン可否判断処理１２３は、プログラム１３１のファイルのオープン許可を与える。ステップＳ６６で一致しない場合は、ステップＳ６７において、ファイルオープン可否判断処理１２３は、親のプロセス１３０を遡って確認を行う。
【００８１】
ここで、ファイルオープン可否判断処理１２３を、制御部１２０の動作として説明する。
【００８２】
制御部１２０は、ステップＳ６２において、書き込みモードでのオープン処理の対象となるファイルが条件を満たしているかどうかを確認する。本実施の形態では、オープン処理によりオープンされるファイルがメモリ１０５に記憶されたホワイトリスト１２４に登録されていない場合に、条件が満たされることになる。よって、制御部１２０は、オープン処理の対象となるファイルのファイルＩＤをキーとして、メモリ１０５に記憶されたホワイトリスト１２４を検索する。キーと一致するファイルＩＤがホワイトリスト１２４に含まれていなければ、オープン処理の対象が条件を満たしていることになる。
【００８３】
上記のように、本実施の形態では、プロセス１３０から要求される処理が、処理の対象としてプログラム１３１を起動する処理から、処理の対象としてファイルを書き込みモードでオープンする処理に変わっているだけで、ステップＳ６２の動作は、実施の形態１におけるステップＳ２１の動作とほぼ同じである。ステップＳ６３以降の動作についても、実施の形態１におけるステップＳ２２以降の動作とほぼ同じであるため、説明を省略する。
【００８４】
以上のように、本実施の形態では、ファイルを書き込みモードでオープンするとき、対象のファイルがホワイトリスト１２４に登録されているものである場合は、通常の場合は拒絶するため、プログラム１３１の改竄を防止することができる。ホワイトリスト１２４を補助記憶装置１０６上にファイルとして保存しておく場合は、そのファイル自体をホワイトリスト１２４に登録しておくことで、ホワイトリスト１２４の改竄を防止することもできる。変更させたくない設定ファイル、認証や署名に用いる鍵ファイル等もホワイトリスト１２４に登録しておくことで改竄を防止することができる。また、プログラム１３１の保守のためにホワイトリスト１２４に登録済のファイルを更新する場合、更新用のスクリプトプログラム１４０を書き込み特権プログラムとすることにより、通常は書き込みができない登録済のファイルを更新することができる。なお、スクリプトプログラム１４０の中では、一般に用いられる方法で、署名による更新プログラムの正当性を確認することが望ましい。
【００８５】
＊＊＊実施の形態の効果の説明＊＊＊
本実施の形態では、処理実行装置１００が、特別に書き込みモードでのファイルのオープン処理の権限が付与されたプログラムを示す権限情報１２９を管理している。このため、本実施の形態によれば、処理実行装置１００が、特別な権限を与えたプログラムを実行しているプロセス１３０から要求される処理については、オープン処理の対象がどのファイルであるかに関わらず、書き込みモードでのファイルのオープン処理の実行を許可できるようになる。
【００８６】
また、本実施の形態では、処理実行装置１００が、ハッシュ値による改竄のチェックを行わないので、プログラム１３１等を更新したときのハッシュ値の更新が不要となる。
【００８７】
＊＊＊他の構成＊＊＊
本実施の形態では、実施の形態１と同じように、「部」の機能がソフトウェアにより実現されるが、実施の形態１の変形例と同じように、「部」の機能がソフトウェアとハードウェアとの組み合わせにより実現されてもよい。
【００８８】
以上、本発明の実施の形態について説明したが、これらの実施の形態のうち、いくつかを組み合わせて実施しても構わない。或いは、これらの実施の形態のうち、いずれか１つ又はいくつかを部分的に実施しても構わない。具体的には、これらの実施の形態の説明において「部」として説明するもののうち、いずれか１つのみを採用してもよいし、いくつかの任意の組み合わせを採用してもよい。なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【００８９】
１００  処理実行装置、１０１  プロセッサ、１０２  ネットワークコントローラ、１０３  入力デバイス、１０４  表示デバイス、１０５  メモリ、１０６  補助記憶装置、１１０  実行部、１１１  プログラム起動処理、１１２  ライブラリロード処理、１１３  ファイルオープン処理、１２０  制御部、１２１  起動可否判断処理、１２２  ライブラリロード可否判断処理、１２３  ファイルオープン可否判断処理、１２４  ホワイトリスト、１２５  ファイルＩＤ、１２６  ファイルＩＤ、１２７  ファイルディスクリプタ、１２８  ファイルＩＤ、１２９  権限情報、１３０  プロセス、１３１  プログラム、１３２  ライブラリ、１４０  スクリプトプログラム。
【図１】
0006355657.tif 000002
【図２】
0006355657.tif 000003
【図３】
0006355657.tif 000004
【図４】
0006355657.tif 000005
【図５】
0006355657.tif 000006
【図６】
0006355657.tif 000007
【図７】
0006355657.tif 000008
【図８】
0006355657.tif 000009
【図９】
0006355657.tif 000010