JP2019096271A - プログラム実行装置、プログラムおよびプログラム実行方法 - Google Patents

プログラム実行装置、プログラムおよびプログラム実行方法 Download PDF

Info

Publication number
JP2019096271A
JP2019096271A JP2017227762A JP2017227762A JP2019096271A JP 2019096271 A JP2019096271 A JP 2019096271A JP 2017227762 A JP2017227762 A JP 2017227762A JP 2017227762 A JP2017227762 A JP 2017227762A JP 2019096271 A JP2019096271 A JP 2019096271A
Authority
JP
Japan
Prior art keywords
program
execution
information
linkage
unit
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
Application number
JP2017227762A
Other languages
English (en)
Inventor
友作 瀬川
Yusaku Segawa
友作 瀬川
雅巳 岡本
Masami Okamoto
雅巳 岡本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Toshiba Energy Systems and Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Energy Systems and Solutions Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toshiba Corp, Toshiba Energy Systems and Solutions Corp filed Critical Toshiba Corp
Priority to JP2017227762A priority Critical patent/JP2019096271A/ja
Publication of JP2019096271A publication Critical patent/JP2019096271A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】プログラム実行装置にプログラムをより安全に実行させる。【解決手段】実施形態のプログラム実行装置は、記憶部、取得部、評価部、実行部を備える。取得部は連係プログラムが動作する際に、オペレーティングシステムが管理するプロセス情報から、連係プログラムと設定情報の保存場所と、連係プログラムが動作した日時と、連係プログラムを実行したユーザの識別情報と、連係プログラム、設定情報の符号値とを含む第2実行情報を取得する。評価部は取得部により取得された第2実行情報と、記憶部に予め登録した第1実行情報とを比較して、互いの情報が一致すれば前記連係プログラムを健全、不一致の場合は不健全と評価する。実行部は評価部による評価の結果、健全と評価された連係プログラムの動作を継続させ、不健全と評価された連係プログラムを停止させる。【選択図】図1

Description

本発明の実施形態は、プログラム実行装置、プログラムおよびプログラム実行方法に関する。
近年、インターネットに接続されたコンピュータに対して、コンピュータの脆弱性を悪用したサイバー攻撃が増加しており、発電プラントなどに導入されるコンピュータシステムについてもサイバー攻撃に備えたセキュリティ対策が急務となっている。
発電プラントのコンピュータシステムの中でも、特にプラントの運転員や保守作業員等が操作する機会が多いプロセス計算機は、サイバー攻撃の起点になり易いため、悪意のあるユーザやマルウェアによる不正なプログラムの実行を制限することが求められる。
不正なプログラムの実行を制限する従来の技術として以下に示すような第1および第2の技術がある。第1の技術は、プログラムの起動にあたり、実行が許可されたプログラムのリストを作成しておき、プログラムの実行要求があったときに、互いを比較することにより、実行が許可されていないプログラムの実行を制限するホワイトリスト方式の技術である。
この第1の技術は、具体的には、コンピュータに監視プログラムをインストールしておき、監視プログラムがプログラムの起動を制限する際に、システムコールをフックすると共に、プログラムを起動する前にハッシュ値を取得して、そのハッシュ値が予め登録されているホワイトリストのものと一致していた場合にのみプロセスの起動を許可するものである。このホワイトリスト方式では、実行が許可されたプログラムのリストにないプログラムについては起動を制限することができる。
また、第2の技術は、電子データの作成履歴に関する情報を自動的に登録し、原本性を保証する技術である。
この第2の技術は、電子データの作成履歴に関する情報(入力データ、処理プログラム、出力データのセットのハッシュ値)をリストとして自動的に登録し、新たな処理プログラムの実行に際して、入力データ、処理プログラム、出力データのハッシュ値を取得し、リストのハッシュ値と比較し、ハッシュ値が一致する場合は、呼び出している処理プログラムは正常なものと判断し、ハッシュ値が一致しない場合は、所定のプログラムではないためそれを不正なプログラム、つまりマルウェアとして判断するものである。
特許第5191043号公報 特開2014−74952号公報
しかしながら、上記従来の技術は、いずれも実行を開始するプログラムに関するリストのハッシュ値に基づいて不正なプログラムの実行を制限するものであり、リストのハッシュ値以外に、例えばプログラムの実行ファイルや設定ファイルが事前に改ざんされていた場合や、プログラムが不正なユーザによって実行されている場合は、実行が許可されたプログラムであっても安全であるとは限らない。またリストに載っていないプログラムを起動する親プログラムなどは実行制限の対象から除外されてしまう。
本発明が解決しようとする課題は、プログラムをより安全に実行させることができるプログラム実行装置、プログラムおよびプログラム実行方法を提供することにある。
実施形態のプログラム実行装置は、記憶部、取得部、評価部、実行部を備える。記憶部は実行が許可されたプログラムとこのプログラムを子プロセスとして起動する実行元プログラムを含む連係プログラムとこの連係プログラムの設定情報とのそれぞれの保存場所と、連係プログラム、前記設定情報の符号値と、連係プログラムが実行される正規の時期と、連係プログラムを実行する正規のユーザの識別情報とを第1実行情報として予め登録している。取得部は連係プログラムが動作する際に、オペレーティングシステムが管理するプロセス情報から、連係プログラムと設定情報の保存場所と、連係プログラムが動作した日時と、連係プログラムを実行したユーザの識別情報と、連係プログラム、設定情報の符号値とを含む第2実行情報を取得する。評価部は取得部により取得された第2実行情報と、記憶部に予め登録した第1実行情報とを比較して、互いの情報が一致すれば前記連係プログラムを健全、不一致の場合は不健全と評価する。実行部は評価部による評価の結果、健全と評価された連係プログラムの動作を継続させ、不健全と評価された連係プログラムを停止させる。
本発明によれば、プログラムをより安全に実行させることができるプログラム実行装置、プログラムおよびプログラム実行方法を提供することができる。
第1実施形態のプロセス計算機の構成を示す図である。 出力されるログファイルの一例を示す図である。 実行情報DBに登録されたプログラム実行情報の一例を示す図である。 実行情報DBに登録された実行元プログラム実行情報の一例を示す図である。 第1実施形態のプロセス計算機の実行情報取得動作を示すフローチャートである。 プロセス計算機により取得されたプログラム実行情報の一例を示す図である。 プロセス計算機により取得された実行元プログラム実行情報の一例を示す図である。 第1実施形態のプロセス計算機の評価動作を示すフローチャートである。 第2実施形態のプロセス計算機の構成を示す図である。 第2実施形態のプロセス計算機の動作を示すフローチャートである。
以下、図面を参照して、実施形態を詳細に説明する。
(第1実施形態)
図1は第1実施形態のプロセス計算機を示す図である。
図1に示すように、プログラム実行装置の一つの実施形態としてのプロセス計算機1は、ハードウェアとして、CPU、メモリ、ハードディスク装置、通信インタフェースなどを有するコンピュータであり、キーボード、マウスなどの入力部2、モニタなどの表示部3、エラー発生報知手段(通信ネットワーク4、警報ライト5、スピーカ6など)が接続されている。
入力部2は運転員により操作されてプロセス計算やプログラムの監視などを指示する。表示部3はプロセス計算の結果の表示や不正プログラムを停止したときのエラー表示などを行う。警報ライト5、スピーカ6などは、不正プログラムを停止したことでの異常発生を音や光で近くの作業者へ報知するためのものである。また、通信ネットワーク4は、予め登録しておいた所定の電子メールアドレス(管理者への所定の宛先など)へエラー発生を通知する電子メールを送信するための伝送路である。
ハードディスク装置には、起動時にCPUによりメモリに読み込まれて実行されるオペレーティングシステム(以下「OS」と称す)の他に、プロセスを実行する子プログラムとしてのプログラム11とこのプログラム11を起動して実行させる実行元の親プログラムとしてのプログラム12(以下「実行元プログラム12」と称す)など、親子関係にあるプログラムが連係して動作するプログラム(以下「連係プログラム13」と称す)がインストールされている。
プロセス計算機1は、上記ハードウェアにより実現される機能構成として、実行情報データベース14(以下「実行情報DB14」と称す)、制御部15、報知制御部16、ログ記憶部18などを有する。
実行情報DB14には、実行を許可された連係プログラム13、プロセスの実行情報(第1実行情報)が予め登録されている。具体的には、実行情報DB14は、実行が許可されたプログラム11とこのプログラム11を子プロセスとして起動する実行元プログラム12を含む連係プログラム13とこの連係プログラム13の設定ファイルとのそれぞれのファイルパス(保存場所)と、連係プログラム13や設定ファイルのファイルの内容により一意に決まる符号値であるハッシュ値と、連係プログラム13が実行される実行日時(正規の時期)と、連係プログラム13を実行する実行ユーザID(正規のユーザの識別情報)とを第1実行情報として予め登録する記憶部として機能する。連係プログラム13およびプロセスの実行情報の詳細については下記図3、図4の説明で詳述する。
制御部15は、プロセス計算機1で実行中のプロセスを周期的に監視する。取得部151は、プロセス計算機1で連係プログラム13が起動(動作)する際に、OSが管理するプロセスの情報(プロセス名)から、連係プログラム13とその設定ファイル(設定情報)の保存場所であるファイルパスと、連係プログラム13が動作した日時と、連係プログラム13を実行したユーザの識別情報であるユーザIDと、連係プログラム13と設定ファイルのハッシュ値(符号値)とを含む実行情報(第2実行情報)を取得する。
評価部152は、取得部151により取得された実行情報(第2実行情報)と、実行情報DB14に予め登録されていた実行情報(第1実行情報)とを比較して、互いの情報が一致すれば連係プログラム13を健全、不一致の場合は不健全と評価する。
実行部153は、評価部152による評価の結果に応じて、連係プログラム13(プログラム11や実行元プログラム12など)の動作(開始した起動動作)または実行中のプロセスの動作を継続または停止する。
具体的には、実行部153は、評価部152による評価の結果、健全と評価された連係プログラム13の動作または実行中のプロセスの動作を継続させる一方、評価の結果、不健全と評価された連係プログラム13の動作または実行中のプロセスの動作を停止させる。
実行部153は、連係プログラム13を停止させると同時に、報知制御部16へ警報の発報を指示する。報知制御部16は、制御部15(実行部153)からの指示により、表示部3、通信ネットワーク4、警報ライト5、スピーカ6などのうち少なくとも一つを利用して発報する。
なお、報知制御部16とエラー発生報知手段(通信ネットワーク4、警報ライト5、スピーカ6など)とを報知部と言う。報知部は不健全と評価された連係プログラム13の異常を報知する。報知部は、報知制御部16に予めエラー発生時の発報設定を行っておくことで、所定の宛先への電子メールを送信、警報ライト5を点灯、スピーカ6から警報音を発報のうち、少なくとも一つを行うようにできる。
詳細には、報知制御部16は、実行部153からの指示に従い予めメモリに登録されている異常発生を知らせるメッセージを読み出して表示部3に送り、表示部3の画面にメッセージを表示する。
この他、報知制御部16は、予めメモリに設定されている発報設定に従い、電子メールで異常発生を知らせる内容を送信、警報ライト5を点灯、スピーカ6から異常発生を知らせる音声やブザーを発生させるなどを行い、これらエラー発生報知手段の設置場所近くの運転員に対してこのプロセス計算機1内で動作中(起動中)のプログラム11に異常が生じていることを報知する。
ログ記憶部18には、図2に示すようなログファイル17が記憶される。ログファイル17は、連係プログラム13やそれに関連する情報が不健全とされ、実行が停止された場合に制御部15により生成されるエラー履歴のファイル(エラーログ)であり、プログラムの停止などでエラーが発生したエラー箇所、プログラム名、エラー発生時刻(時刻)が一行ずつレコードとして記憶される。
より詳細には、不健全と評価したプログラム(不正プログラム)を停止させた時刻、つまりエラー発生日時である「年月日時分秒」と、不正プログラムの名称であるプログラム名(「プログラム」、「実行元プログラム」のいずれか)と、異常種別であるエラー箇所(プロセス名、ハッシュ値、実行日時、実行ユーザIDのうちいずれかの項目)とが対応付けられてログ記憶部18へ出力され、ログファイル17として記憶される。
このログファイル17のエラー箇所で、例えばプログラム名が「プログラム」のエラーのうち、プロセス名というエラーは、プログラム11のプロセス名を基に実行情報DB14からプロセス名を検索できなかった場合に出力されるログである。ハッシュ値のエラーは、例えばプログラム11の実行ファイルと設定ファイルのハッシュ値が実行情報DB14の内容と取得情報とで一致しなかった場合に出力されるログである。
実行日時のエラーは、プログラム11の実行ファイルと設定ファイルの実行日時が実行情報DB14の内容と取得情報とで一致しなかった場合に出力されるログである。実行ユーザIDのエラーは、プログラム11の実行ファイルと設定ファイルの実行ユーザIDが実行情報DB14の内容と取得情報とで一致しなかった場合に出力されるログである。
ログファイル17のエラー箇所で、例えばプログラム名が「実行元プログラム」のエラーのうち、ハッシュ値のエラーは、実行元プログラム12の実行ファイルと設定ファイルのハッシュ値が実行情報DB14の内容と取得情報とで一致しなかった場合に出力されるログである。
実行日時のエラーは、実行元プログラム12の実行ファイルと設定ファイルの実行日時が実行情報DB14の内容と取得情報とで一致しなかった場合に出力されるログである。実行ユーザIDのエラーは、実行元プログラム12の実行ファイルと設定ファイルの実行ユーザIDが実行情報DB14の内容と取得情報とで一致しなかった場合に出力されるログである。
実行情報DB14には、実行が許可されたプログラム11に関する情報としてのプログラム実行情報21(図3参照)と、実行が許可された実行元プログラム12に関する情報としてのプログラム実行情報22(図4参照)とが予め記憶(登録)されている。
(プログラム実行情報21の説明)
図3は実行情報DB14に予め登録されているプログラム11のプログラム実行情報21を示す図であり、図3に示すプログラム実行情報21はプログラム11の実行ファイルと、パラメータ値などが記載された設定ファイルが登録された例を示している。
図3に示すように、プログラム実行情報21は、プロセス名、ファイルパス、ハッシュ値、実行日時、実行ユーザID、実行元プロセス名などの欄からなる複数のレコード(行)を有するテーブルである。
具体的に説明すると、初めのレコード(行)には、プロセス名“Process1”、ファイルパス“/Path1/File1”、ハッシュ値“Hash1”、実行日時“xxxx30x”、実行ユーザID“User1”、実行元プロセス名“Process2”が登録されている。
ファイルパス“/Path1/File1”はプログラム11の実行ファイルの絶対パスである。ハッシュ値“Hash1”は、実行ファイルが持つ、ファイル内容により一意に決まる符号値である。実行日時“xxxx30x”は、実行ファイルの実行日時の年月日時分秒をスペース区切りとし登録する値がない領域を“x”で表すことで、実行ファイルが30分毎に実行されることを表している。実行ユーザID“User1”は、実行ファイルを実行するユーザの識別情報である。実行元プロセス名“Process2”は、プログラム11のプロセスである“Process1”を生成する、実行元プログラム12のプロセス名である。
その下のレコード(行)には、プロセス名“Process1”、ファイルパス“/Path2/File2”、ハッシュ値“Hash2”、実行日時“xxxxxxx”、実行ユーザID“x”、実行元プロセス名“x”が登録されている。
ファイルパス“/Path2/File2は、プログラム11の設定ファイルの絶対パスである。ハッシュ値“Hash2”は、設定ファイルが持つ、ファイル内容により一意に決まる符号値である。実行日時“xxxxxxx”は、実行されることのない設定ファイルであるため、実行日時が指定されていないことを表している。実行ユーザID“x”はユーザによって実行されることのない設定ファイルであることを表している。実行元プロセス名“x”は、実行されることのない設定ファイルであるため、実行元となるプロセスがないことを表している。
すなわち、プログラム実行情報21には、実行が許可されたプロセスの名称(プロセス名)、このプロセスを実行するプログラム11および設定ファイル(設定情報)のファイルパス(記憶場所)、プログラム11および設定ファイルから一意に決まるハッシュ値(符号値)、実行が許可されている実行日時、実行が許可された実行ユーザID(ユーザの識別情報)、このプロセスを子プロセスとして起動する親プロセスである実行元プロセスの名称(実行元プロセス名)などが対応して記憶されている。
(実行元プログラム実行情報22の説明)
図4は実行情報DB14に予め登録された実行元プログラム12の実行元プログラム実行情報22を示す図であり、図4の実行元プログラム実行情報22は実行元プログラム12の実行ファイルと設定ファイルが登録された例を示している。
図4に示すように、実行元プログラム実行情報22は、プロセス名、ファイルパス、ハッシュ値、実行日時、実行ユーザID、実行元プロセス名などの欄からなる複数のレコード(行)を有するテーブルである。
具体的に説明すると、初めのレコード(行)には、プロセス名“Process2”、ファイルパス“/Path3/File3”、ハッシュ値“Hash3”、実行日時“xxxxxxx”、実行ユーザID“User2”、実行元プロセス名“x”が登録されている。
ファイルパス“/Path3/File3”はプログラム12の実行ファイルの絶対パスである。ハッシュ値“Hash3”は、実行ファイルが持つ、ファイル内容により一意に決まる符号値である。実行日時“xxxxxxx”は、実行ファイルの実行日時の年月日時分秒をスペース区切りとし、登録する値がない領域を“x”で表している。実行ユーザID“User2”は、実行ファイルを実行するユーザの識別情報である。実行元プロセス名“x”は、プログラム12のプロセスである“Process2”を生成する、実行元プログラムがないことを表している。
その下のレコード(行)には、プロセス名“Process2”、ファイルパス“/Path4/File4”、ハッシュ値“Hash4”、実行日時“xxxxxxx”、実行ユーザID“x”、実行元プロセス名“x”が登録されている。
ファイルパス“/Path4/File4は、プログラム12の設定ファイルの絶対パスである。ハッシュ値“Hash4”は、設定ファイルが持つ、ファイル内容により一意に決まる符号値である。実行日時“xxxxxxx”は、実行されることのない設定ファイルであるため、実行日時が指定されていないことを表している。実行ユーザID“x”はユーザによって実行されることのない設定ファイルであることを表している。実行元プロセス名“x”は、実行されることのない設定ファイルであるため、実行元となるプロセスがないことを表している。
すなわち、実行元プログラム実行情報22には、実行が許可された実行元プロセスの名称(プロセス名)、このプロセスを実行する実行元プログラムおよび設定ファイル(設定情報)のファイルパス(記憶場所)、実行元プログラムおよび設定ファイルから一意に決まるハッシュ値(符号値)、実行が許可されている実行日時、実行が許可されたユーザID(ユーザの識別情報)、この実行元プロセスを子プロセスとして起動する親プロセスである実行元プロセスの名称(実行元プロセス名)などが対応して記憶されている。
以下、図5乃至図8を参照して第1実施形態のプロセス計算機1の動作を説明する。まず図5乃至図7を参照してこのプロセス計算機1の実行情報取得動作(一部評価も含む)を説明する。
プロセス計算機1の場合、制御部15では、取得部151がプロセスを実行中、実行中のプロセスを周期的に監視している。
そして、ステップA1では、取得部151は、実行中のプロセスを周期的に監視する中で、起動を開始したプログラム、例えばプログラム11のプロセス名である“Process1”を取得する。
ステップA2では、評価部152は、上記ステップA1で取得部151が取得したプロセス名“Process1”を基に、実行情報DB14を検索し、実行情報DB14にプログラム11のプロセス名“Process1”が登録されているか否かを確認し、処理を開始するプロセスの健全性をリストのプロセス名でまず始めにチェック(評価)する。
ステップA3では、実行部153は、ステップA3のチェック(評価)結果に応じた処理(プロセス制御)を行う。
つまり、評価部152が実行情報DB14を検索した結果、実行情報DB14からプロセス名“Process1”を検索できなかった場合、つまり実行情報DB14にプロセス名“Process1”が登録されていなかった場合、ステップA4の処理(プロセスの停止)へ移行する一方、実行情報DB14からプロセス名“Process1”を検索できた場合(実行情報DB14にプロセス名が登録されていた場合)は(ステップA3のYes)、次のステップA6以降の実行情報取得処理へ移行する。
ステップA4では、検索したプロセス名が実行情報DB14に登録されていなかった場合、つまりプロセス名が検索されなかった場合(ステップA3のNo)、実行中のプロセスを停止させる。
詳細に説明すると、評価部152は、検索したプロセス名が実行情報DB14に登録されていなかった場合、不正なプロセスがプロセス計算機1で実行されているものと判定し、そのプロセスを実行しているプログラム11が健全ではないもの(不健全)と評価し、実行部153にプログラム11が不健全である旨を通知する。
実行部153は、評価部152からの不健全の通知を受けてプロセス名“Process1”のプロセスの実行を停止するようプログラム11に停止命令を送り、プログラム11によるプロセスの実行を停止させる。なお、プログラム11自体を停止させてもよい。
ステップA5では、上記ステップA4でプログラム11またはそのプロセスを停止させた後、ログを記憶するとともに、報知制御部16へ発報を指示し、この指示に従い報知制御部16が発報する。ここで、発報は、所定の宛先への電子メールを送信、警報ライト5を点灯、スピーカ6から警報音を発報のうち、予めメモリに設定されている発報設定に従い少なくとも一つを行うものとする。
なお、実行情報の取得処理でプロセス名の検索、評価を行っているのは起動時に単純な不正プロセスの動きを迅速に止めるためであり、下記の実行情報をすべて取得した後にプロセス名を含めて評価してもよい。
ステップA6以降では、取得部151は、プロセス名を基に他の実行情報(ファイルパス、ハッシュ値、実行日時、実行が許可された実行ユーザIDなど)を取得する。まずステップA6では、ファイルパスを取得する。
すなわち、ステップA2で実行情報DB14からプロセス名“Process1”を検索できた場合、評価部152は、取得部151に対してプロセス名のプロセスを実行するプログラムおよび設定ファイルのファイルパス、ハッシュ値、実行日時、実行が許可されたユーザIDなどの実行情報を取得するよう指示する。
取得部151は、この指示に従い実行情報DB14を検索し、プログラム実行情報21に登録されたプログラム11の実行ファイルのファイルパス“/Path1/File1”と設定ファイルのファイルパス“/Path2/File2”を取得する。
ステップA7では、取得部151は、ステップA6で取得した実行ファイルのファイルパス“/Path1/File1”と設定ファイルのファイルパス“/Path2/File2”を基に、図6に示すプログラム実行情報31(動作中のプログラムの情報)として、実際のプログラム11(プロセス)の実行ファイルと設定ファイルのファイルパス“/Path1/File1”およびファイルパス“/Path2/File2”と、ファイル内容により一意に決まるハッシュ値“Hash1”およびハッシュ値“Hash2”と、実行ファイルの実行日時(2017年1月1日0時30分0秒に実行されたことを表した)“2017110300”、および、設定ファイルの実行日時(この例の場合、実行日時がないことを表した“xxxxxxx”と、実行ファイルを実行した実行ユーザID“User1”、および、設定ファイルを実行した実行ユーザID(この例では実行ユーザIDがないことを表した)“x”とを取得する。なお、プログラム実行情報21の実行日時の項目では、実行日時の年月日時分秒をスペース区切りで表すと共に、取得する値がない領域を“x”で表している。
以下、続いて、制御部15では、プログラム11を子プロセスとして起動した実行元プログラム12の実行情報を取得する。
ステップA8では、取得部151は、ステップA1で取得したプロセス名“Process1”を基に、実行情報DB14を検索し、プログラム実行情報21(図3参照)に登録されているプログラム11のプロセス名“Process1”を生成する実行元プロセスの実行元プロセス名を取得する。
具体的には、実行情報DB14の、図3に示したプログラム実行情報21より、実行元プログラム12のプロセスのプロセス名である実行元プロセス名“Process2”を取得する。
ステップA9では、取得部151は、ステップA7で取得した実行元プロセス名“Process2”を基に、実行情報DB14の実行元プログラム実行情報22(図4参照)に登録されているプロセス名“Process2”を検索する。
ステップA10では、取得部151は、ステップA8で検索されたプロセス名“Process2”を基に、実行情報DB14に登録されている実行元プログラム12の実行ファイルと設定ファイルの絶対パスであるファイルパス“/Path3/File3”および“/Path4/File4”を取得する。
ステップA11では、ステップA10で取得したファイルパス“/Path3/File3”および“/Path4/File4”を基に、図7に示す実行元プログラム実行情報32(動作中の実行元プログラムの情報)として、実際の実行元プロセスの実行ファイルと設定ファイルについて、絶対パスであるファイルパス“/Path3/File3”およびファイルパス“/Path4/File4”と、ファイル内容により一意に決まるハッシュ値“Hash3”および“Hash4”と、実行ファイルの実行日時(この例では実行ファイルが2017年1月1日0時0分0秒に実行されたことを表した“201711000”)、および設定ファイルの実行日時(この例では実行日時がないことを表した“xxxxxxxx”)と、実行ファイルを実行した実行ユーザID“User2”、および、設定ファイルを実行したユーザID(この例ではユーザIDがないことを表す“x”)とを取得部151が取得する。なお、実行日時の項目のデータについて、実行日時の年月日時分秒をスペースで区切って表すと共に、取得する値がない領域を“x”で表している。
ステップA12では、取得部151が取得した実行元プログラム12のファイルパスを基に、プロセス計算機1にインストールされている実行元プログラム12の実行ファイルと設定ファイルの実行情報(実際に存在するファイル)を取得する。
このようにして連係プログラム13(プログラム11、実行元プログラム12)の実行情報を取得し、メモリに記憶する。
ここで、連係プログラム13(プログラム11、実行元プログラム12)から取り込む実行情報について説明する。
図6に制御部15の取得部151が取得しメモリに記憶するプログラム11のプログラム実行情報31を示す。図6はプロセス計算機1にあるプログラム11の実行ファイルと設定ファイルに関して取得した実行情報の例を示している。
図6に示すように、プログラム実行情報(実際に動作したプログラム11の実行情報)31は、プロセス名、ファイルパス、ハッシュ値、実行日時、実行ユーザIDなどの欄を有する。
プロセス名の欄にはプログラム11のプロセス名である“Process1”が格納される。ファイルパスの欄にはプログラム11の実行ファイルと設定ファイルの絶対パスである“/Path1/File1”と“/Path2/File2”が格納される。
「ハッシュ値」の欄には実行ファイルと設定ファイルが持つ、ファイル内容により一意に決まる符号値である“Hash1”と“Hash2”が格納されている。実行日時の欄には実行ファイルが2017年1月1日0時30分0秒に実行されたことを表す“2017110300”と、実行されることのない設定ファイルであるため実行日時が指定されていないことを表した“xxxxxxx”が格納される。
実行ユーザIDの欄には実行ファイルを実行したユーザ名またはユーザIDである“User2”と、実行されることのない設定ファイルであるため、実行ユーザがないことを表した“x”が格納される。
図7に制御部15が取得しメモリに記憶した実行元プログラム12の実行元プログラム実行情報32を示す。図7はプロセス計算機1にある実行元プログラム12の実行ファイルと設定ファイルに関して取得した実行情報の例を示している。
図7に示すように、実行元プログラム実行情報32(実際に動作した実行元プログラム12の実行情報)は、プロセス名、ファイルパス、ハッシュ値、実行日時、実行ユーザIDなどの欄を有する。
プロセス名の欄には実行元プログラム12のプロセス名である“Process2”が格納されている。ファイルパスの欄には実行元プログラム12の実行ファイルと設定ファイルの絶対パスである“/Path3/File3”および“/Path4/File4”が格納される。ハッシュ値の欄には実行ファイルと設定ファイルが持つ、ファイル内容により一意に決まる符号値である“Hash3”と“Hash4”が格納される。
実行日時の欄には実行ファイルが2017年1月1日0時0分0秒に実行されたことを表す“201711000”と、実行されることのない設定ファイルであることを表す“xxxxxxx”が格納される。実行ユーザIDの欄には実行ファイルを実行したユーザのユーザ名またはユーザIDである“User2”と、実行されることのない設定ファイルであることを表す“x”が格納される。
以下、図8のフローチャートを参照してこのプロセス計算機の評価動作を説明する。図8はこのプロセス計算機1における評価動作を示すフローチャートである。なお、実行情報DB14の実行情報とメモリに取り込んだ実行情報とが存在するためこれらを区別するために実際にメモリに取り込んだ連係プログラム13の実行情報を「取得情報」と称す。
このプロセス計算機1では、上述したように取得しメモリに取り込んだ連係プログラム13(プログラム11、実行元プログラム12)の取得情報を周期的に読み出して、以下のように実行情報DB14の内容と比較し評価する。
すなわち、ステップB1では、制御部15は、プログラム11および実行元プログラム12の実行ファイルと設定ファイルについて、実行情報DB14に登録された実行情報とメモリに取り込んだ取得情報とを比較してプログラム11の評価を行う。
ステップB2では、評価部152は、プログラム11の実行ファイルと設定ファイルについて、実行情報DB14に登録された実行情報とメモリの取得情報とのハッシュ値、実行日時、実行ユーザIDを比較する。
詳細に説明すると、評価部152は、プログラム11の実行ファイルと設定ファイルについて、実行情報DB14のプログラム実行情報21(図3参照)に登録されたハッシュ値“Hash1”および“Hash2”と、メモリに取り込んだ取得情報のハッシュ値“Hash1”および“Hash2”を比較し、互いのハッシュ値の一致・不一致を判定する。
互いのハッシュ値が一致した場合、続いて評価部152は、プログラム11の実行ファイルと設定ファイルについて、プログラム実行情報21に登録された実行日時“xxxx30x”および“xxxxxxxx”と、メモリに取り込んだ取得情報の実行日時“2017110300”および“xxxxxxxx”について“x”以外の値を比較し、互いの実行日時の一致・不一致を判定する。
互いの実行日時が一致した場合、続いて評価部152は、プログラム11の実行ファイルと設定ファイルについて、プログラム実行情報21に登録された実行ユーザID“User1”および“x”と、メモリに取り込んだ取得情報の実行ユーザID“User1”および“x”について“x”以外の値を比較し、互いの実行ユーザIDの一致・不一致を判定する。
ステップB3では、互いの情報(実行情報と取得情報)のハッシュ値、実行日時、実行ユーザIDが一つでも一致しなかった場合は(ステップB3のNo)、ステップB4の処理に移行し、互いの情報(実行情報と取得情報)がすべて一致した場合は、実行元プログラム12の評価ステップであるステップB5の処理に移行する。
ステップB4では、互いの情報が一つでも一致しなかった場合、評価部152は、不正なプロセスがプロセス計算機1で実行されていると判定して当該プロセスまたは当該プロセスを実行しているプログラム11を停止するよう実行部153に指示する。
この指示により実行部153は、停止命令をプログラム11へ発行し、プロセス名“Process1”のプロセスを停止させる。
ステップB5では、実行部153は、プログラム11またはそのプロセスを停止させた後、エラーログを生成し、ログファイル17(図2参照)としてログ記憶部18に記憶するとともに、報知制御部16へ発報を指示し、報知制御部16は、この指示に従い事前の設定に基づいて電子メール、音、光などで発報する。
ステップB6以降では、実行元プログラム12について評価する。
ステップB6では、評価部152は、実行元プログラム12の実行ファイルと設定ファイルについて、実行情報DB14に登録された実行情報とメモリの取得情報とのハッシュ値、実行日時、実行ユーザIDを比較する。
詳細に説明すると、評価部152は、実行情報DB14の実行元プログラム実行情報22(図4参照)に登録されたハッシュ値“Hash3”およびハッシュ値“Hash4”と、メモリに取り込んだ取得情報のハッシュ値“Hash3”およびハッシュ値“Hash4”とを比較し、互いのハッシュ値の一致・不一致を判定する。
互いのハッシュ値が一致した場合、続いて評価部152は、実行元プログラム12の実行ファイルと設定ファイルについて、実行元プログラム実行情報22に登録された実行日時“xxxxxxxx”と、メモリに取り込んだ取得情報の実行日時“2017110000”および実行日時“xxxxxxxx”について“x”以外の値を比較し、互いの実行日時の一致・不一致を判定する。
互いの実行日時が一致した場合、続いて評価部152は、実行元プログラム12の実行ファイルと設定ファイルについて、実行元プログラム実行情報22に登録された実行ユーザID“User2”および実行ユーザID“x”と、メモリに取り込んだ取得情報の実行ユーザID“User2”および実行ユーザID“x”について“x”以外の値を比較し、互いの実行ユーザIDの一致・不一致を判定する。
ステップB7では、互いの情報(実行情報と取得情報)のハッシュ値、実行日時、実行ユーザIDが一つでも一致しなかった場合(ステップB7のNo)は、ステップB4の処理に移行し、上記プログラム11の場合と同様に実行元プログラム12の停止とエラーログの生成、ログファイル17への書き込み、発報を行う。
例えば互いのハッシュ値、実行日時、実行ユーザIDが一つでも一致しなかった場合、評価部152は、不正なプロセスがプロセス計算機1で実行されていると判定し、実行部153は、プロセス名“Process1”とプロセス名“Process2”のプロセスを停止させる。
一方、互いの情報(実行情報と取得情報)がすべて一致した場合は、評価部152は、連係プログラム13が不正ではないものと判定し、評価を終了し、連係プログラム13(プログラム11、実行元プログラム12)の動作を継続させる。
このように第1実施形態のプロセス計算機1によれば、プログラム11とそれを起動する実行元プログラム12の実行ファイルや設定ファイルが改ざんされていないかどうか、プログラム11が正規のユーザにより実行されたかどうか、プログラム11が正規のタイミングで実行されたかどうか、プログラム11が正規の実行元となる実行元プログラム12によって実行されたか否か、といった、起動するプログラムだけでなくそのプログラムの実行元や実行日時、実行ユーザを含めて実行が許可されたプログラム11の健全性を評価することで、プログラム11をより安全に実行させることができる。
以上により、連係プログラム13(プログラム11、実行元プログラム12)の実行ファイルと設定ファイルについて、実行情報DB14に登録された実行情報とプロセス計算機1に実際にインストールされ起動しているものの実行情報とを比較することで、実行情報が一致しない不正なプロセスを停止させることが可能となる。
(第2実施形態)
図9、図10を参照して第2実施形態のプロセス計算機1について説明する。図9は第2実施形態のプロセス計算機1の機能構成を示す図である。なお、この第2実施形態を説明するにあたり、第1実施形態で説明した構成と同じ構成には同一の符号を付しその説明は省略する。
図9に示すように、第2実施形態のプロセス計算機は、起動中または起動を開始したプログラム11から発行されるオペレーティングシステム(以下「OS」と称す)へのシステムコールをフックするフック部154を有する。フック部154はプログラム11が起動する際に、プログラム11から発行されるOSへの要求であるシステムコールを、OSに代わって受け取り、実行情報の取得、評価、停止などを行わせる。
つまり、フック部154は、例えばフック関数などであり、プログラム11から発行されるシステムコールをフックして、プログラム11を評価するために実行情報を取得するよう取得部151に指示する。この指示に従い取得部151が実行情報を取得した後、評価部152が評価した結果、プログラム11を含む連係プログラム13が不健全と評価された場合、実行部153が停止指令を発行しプログラム11を終了させる。また評価部152が評価した結果、健全と評価された場合、実行部153は、フック部154がフックしたときのシステムコールをOSへ発行しプログラム11の起動動作を継続させる。
以下、図10のフローチャートを参照してこの第2実施形態のプロセス計算機1の動作を説明する。
この場合、プログラム11が実行元プログラム12から実行される、または、実行ユーザにより直接実行された際に、プログラム11が使用するOSのシステムコールを制御部15のフック部154で取得しフック関数にて以下の動作を取得部151、評価部152、実行部153に行わせる。
すなわち、ステップC1では、フック時にフック部154からの指示で取得部151は、プログラム11および実行元プログラム22より各実行情報を取得し、評価部152に渡す。
ステップC2では、評価部152は、プログラム11および実行元プログラム12の実行ファイルと設定ファイルについて、実行情報DB14に登録されているプログラム実行情報21(図3参照)および実行元プログラム実行情報22(図4参照)と、プログラム11より取得した図6のプログラム実行情報(取得情報)31および実行元プログラム12より取得した図7の実行元プログラム実行情報(取得情報)32とを比較し、健全か否かを評価する。
ステップC4では、評価部152による評価の結果、実行情報DB14に登録されている図3のプログラム実行情報21および図4の実行元プログラム実行情報22と、図6のプログラム実行情報31および図7の実行元プログラム実行情報32とが一致しなかった場合に、実行部153はプログラム11、実行元プログラム12を終了させる。なお、フック部154に評価結果を戻して、フック関数で連係プログラム13(プログラム11、実行元プログラム12)の動作を停止させてもよい。
ステップC5では、評価の結果、実行情報DB14に登録された図3プログラム実行情報21および図4の実行元プログラム実行情報22と、図6のプログラム実行情報31および図7の実行元プログラム実行情報32とが一致した場合(ステップC3のYes)に、実行部153はプログラム11で使用する本来のシステムコールをOSへ発行しプログラム11の起動およびプロセスの実行を継続させる。なお、このシステムコール発行動作についてもフック部154がフック関数で実行してもよい。
このようにこの第2実施形態のプロセス計算機によれば、プログラム11のシステムコールをフック部154がフックして、取得部151および評価部152にプログラム11および実行元プログラム12の実行情報の取得、評価を行わせ、実際のプログラム11および実行元プログラム12が実行情報DB14の登録内容と異なる実行情報を持つ場合、実行部153がプログラム11の実行を終了させるので、第1実施形態と同様の効果を得ることができる。
また、この第2実施形態では、起動時のプログラム11から発行されるシステムコールをトリガにして連係プログラム13を評価し不健全なプログラムを停止するので、不正プログラムによるOSへの関与や影響を防ぐことができる。
以上説明したように、上記実施形態によれば、起動するプログラム11のハッシュ値だけでなくそのプログラム11の実行元プログラム12や実行日時、実行ユーザを含めて実行が許可された連係プログラム13の健全性を評価することで、プログラム11をより安全に実行させることができる。
本発明のいくつかの実施形態を説明したが、これら実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これらの新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
例えば上記実施形態では、動作したプログラム11が不健全であると評価した場合に実行部153が連係プログラム13を停止したが、プロセス計算機1で実行されている全てのプログラムを停止させてもよい。
また上記実施形態に示したプロセス計算機1の各構成要素を、コンピュータのハードディスク装置などのストレージにインストールしたプログラムで実現してもよく、また上記プログラムを、コンピュータ読取可能な電子媒体:electronic mediaに記憶しておき、プログラムを電子媒体からコンピュータに読み取らせることで本発明の機能をコンピュータが実現するようにしてもよい。電子媒体としては、例えばCD−ROM等の記録媒体やフラッシュメモリ、リムーバブルメディア:Removable media等が含まれる。さらに、ネットワークを介して接続した異なるコンピュータに構成要素を分散して記憶し、各構成要素を機能させたコンピュータ間で通信することで実現してもよい。
1…プロセス計算機、2…入力部、3…表示部、4…通信ネットワーク、5…警報ライト、6…スピーカ、11…プログラム、12…実行元プログラム、13…連係プログラム、14…実行情報データベース(実行情報DB)、15…制御部、16…報知制御部、17…ログファイル、18…ログ記憶部、21…プログラム実行情報、22…実行元プログラム実行情報、31…プログラム実行情報(取得情報)、32…実行元プログラム実行情報(取得情報)、151…取得部、152…評価部、153…実行部、154…フック部。

Claims (7)

  1. 実行が許可されたプログラムとこのプログラムを子プロセスとして起動する実行元プログラムを含む連係プログラムとこの連係プログラムの設定情報とのそれぞれの保存場所と、前記連係プログラム、前記設定情報の符号値と、前記連係プログラムが実行される正規の時期と、前記連係プログラムを実行する正規のユーザの識別情報とを第1実行情報として予め登録した記憶部と、
    前記連係プログラムが動作する際に、オペレーティングシステムが管理するプロセス情報から、前記連係プログラムと前記設定情報の保存場所と、前記連係プログラムが動作した日時と、前記連係プログラムを実行したユーザの識別情報と、前記連係プログラム、前記設定情報の符号値とを含む第2実行情報を取得する取得部と、
    前記取得部により取得された第2実行情報と、前記記憶部に予め登録した第1実行情報とを比較して、互いの情報が一致すれば前記連係プログラムを健全、不一致の場合は不健全と評価する評価部と、
    前記評価部による評価の結果、健全と評価された前記連係プログラムの動作を継続させ、不健全と評価された前記連係プログラムを停止させる実行部と
    を具備するプログラム実行装置。
  2. 前記連係プログラムが起動する際に、前記連係プログラムから発行されるオペレーティングシステムへの要求を、前記オペレーティングシステムに代わって受け取るフック部を備え、
    前記フック部は、
    前記要求を受け取ったときに前記取得部に前記連係プログラムの実行ファイルと設定ファイルの実行情報を取得させ、
    前記実行部は、
    前記評価部により前記連係プログラムが健全であると評価された場合、前記要求を前記オペレーティングシステムへ渡し、前記連係プログラムの起動動作を継続させる請求項1記載のプログラム実行装置。
  3. 前記実行部は、
    前記プログラム実行装置が実行中の全てのプログラムを停止させる請求項1記載のプログラム実行装置。
  4. 不健全と評価された前記連係プログラムの異常を報知する報知部を具備する請求項1乃至3いずれか1項に記載のプログラム実行装置。
  5. 前記報知部は、
    前記連係プログラムの異常を示す情報を、画面へ出力、所定の宛先への電子メールを送信、警報ライトを点灯、警報音を発報、およびログファイルに記憶のうち、少なくとも一つを実行する請求項4記載のプログラム実行装置。
  6. プログラム実行装置に処理を実行させるプログラムであって、
    前記プログラム実行装置を、
    実行が許可されたプログラムとこのプログラムを子プロセスとして起動する実行元プログラムを含む連係プログラムとこの連係プログラムの設定情報とのそれぞれの保存場所と、前記連係プログラム、前記設定情報の符号値と、前記連係プログラムが実行される正規の時期と、前記連係プログラムを実行する正規のユーザの識別情報とを第1実行情報として予め登録した記憶部と、
    前記連係プログラムが動作する際に、オペレーティングシステムが管理するプロセス情報から、前記連係プログラムと前記設定情報の保存場所と、前記連係プログラムが動作した日時と、前記連係プログラムを実行したユーザの識別情報と、前記連係プログラム、前記設定情報の符号値とを含む第2実行情報を取得する取得部と、
    前記取得部により取得された第2実行情報と、前記記憶部に予め登録した第1実行情報とを比較して、互いの情報が一致すれば前記連係プログラムを健全、不一致の場合は不健全と評価する評価部と、
    前記評価部による評価の結果、健全と評価された前記連係プログラムの動作を継続させ、不健全と評価された前記連係プログラムを停止させる実行部
    として機能させるプログラム。
  7. プログラム実行装置によるプログラム実行方法であって、
    実行が許可されたプログラムとこのプログラムを子プロセスとして起動する実行元プログラムを含む連係プログラムとこの連係プログラムの設定情報とのそれぞれの保存場所と、前記連係プログラム、前記設定情報の符号値と、前記連係プログラムが実行される正規の時期と、前記連係プログラムを実行する正規のユーザの識別情報とを第1実行情報として予め記憶部に登録し、
    前記連係プログラムが動作する際に、オペレーティングシステムが管理するプロセス情報から、前記連係プログラムと前記設定情報の保存場所と、前記連係プログラムが起動した日時と、前記連係プログラムを実行したユーザの識別情報と、前記連係プログラム、前記設定情報の符号値とを含む第2実行情報を取得部が取得し、
    前記取得部が取得した第2実行情報と、前記記憶部に予め登録していた第1実行情報とを比較部が比較して、互いの情報が一致すれば前記連係プログラムを健全、不一致の場合は不健全と評価し、
    前記評価の結果、健全と評価された前記連係プログラムの動作を実行部が継続させ、不健全と評価された前記連係プログラムを停止させる、プログラム実行装置によるプログラム実行方法。
JP2017227762A 2017-11-28 2017-11-28 プログラム実行装置、プログラムおよびプログラム実行方法 Pending JP2019096271A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2017227762A JP2019096271A (ja) 2017-11-28 2017-11-28 プログラム実行装置、プログラムおよびプログラム実行方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017227762A JP2019096271A (ja) 2017-11-28 2017-11-28 プログラム実行装置、プログラムおよびプログラム実行方法

Publications (1)

Publication Number Publication Date
JP2019096271A true JP2019096271A (ja) 2019-06-20

Family

ID=66973032

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017227762A Pending JP2019096271A (ja) 2017-11-28 2017-11-28 プログラム実行装置、プログラムおよびプログラム実行方法

Country Status (1)

Country Link
JP (1) JP2019096271A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112380170A (zh) * 2020-11-25 2021-02-19 北京珞安科技有限责任公司 一种文件更新操作的关联方法、装置及计算机设备
WO2022145085A1 (ja) * 2020-12-28 2022-07-07 株式会社日立産機システム 情報処理装置、情報処理システムおよび情報処理装置のファイル処理方法
CN116541104A (zh) * 2023-07-04 2023-08-04 宁德时代新能源科技股份有限公司 程序管理方法、控制装置、平台、设备以及存储介质

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112380170A (zh) * 2020-11-25 2021-02-19 北京珞安科技有限责任公司 一种文件更新操作的关联方法、装置及计算机设备
WO2022145085A1 (ja) * 2020-12-28 2022-07-07 株式会社日立産機システム 情報処理装置、情報処理システムおよび情報処理装置のファイル処理方法
JP7462077B2 (ja) 2020-12-28 2024-04-04 株式会社日立産機システム 情報処理装置および情報処理装置のファイル処理方法
CN116541104A (zh) * 2023-07-04 2023-08-04 宁德时代新能源科技股份有限公司 程序管理方法、控制装置、平台、设备以及存储介质
CN116541104B (zh) * 2023-07-04 2023-09-29 宁德时代新能源科技股份有限公司 程序管理方法、控制装置、平台、设备以及存储介质

Similar Documents

Publication Publication Date Title
US9614867B2 (en) System and method for detection of malware on a user device using corrected antivirus records
JP2021518705A (ja) ブロックチェーン台帳のためのランタイム自己修正
US11455400B2 (en) Method, system, and storage medium for security of software components
US9094448B2 (en) Methods and systems for evaluating software for known vulnerabilities
JP4807970B2 (ja) 自動開始拡張ポイントを介したスパイウェアおよび不要ソフトウェアの管理
US8612398B2 (en) Clean store for operating system and software recovery
US10229251B1 (en) Library scan for live applications
US20070156644A1 (en) SQL injection detector
US10223185B2 (en) Automated defect diagnosis from machine diagnostic data
KR101899589B1 (ko) 안전 소프트웨어 인증 시스템 및 방법
US10911447B2 (en) Application error fingerprinting
EP3497917B1 (en) Detection of bulk operations associated with remotely stored content
US11290483B1 (en) Platform for developing high efficacy detection content
US20110107419A1 (en) Systems and methods for improved identification and analysis of threats to a computing system
EP3501158B1 (en) Interrupt synchronization of content between client device and cloud-based storage service
JP2019096271A (ja) プログラム実行装置、プログラムおよびプログラム実行方法
US20140130065A1 (en) Method and Device for Obtaining Using-Frequency of Application Program
JP6885255B2 (ja) フロー生成プログラム、フロー生成装置及びフロー生成方法
CN115982696A (zh) 工业软件的启动控制方法、电子设备和存储介质
US11354081B2 (en) Information processing apparatus with concealed information
US20240037243A1 (en) Artificial intelligence based security requirements identification and testing
Selvaraj Performance Monitoring and Debugging
CN115688103A (zh) 一种设备数据管理方法及系统
D’Angelo et al. A methodology and a platform to measure and assess software windows of vulnerability