JP5081480B2 - ソフトウェア挙動モデル化装置、ソフトウェア挙動モデル化方法、ソフトウェア挙動検証装置及びソフトウェア挙動検証方法 - Google Patents

ソフトウェア挙動モデル化装置、ソフトウェア挙動モデル化方法、ソフトウェア挙動検証装置及びソフトウェア挙動検証方法 Download PDF

Info

Publication number
JP5081480B2
JP5081480B2 JP2007085598A JP2007085598A JP5081480B2 JP 5081480 B2 JP5081480 B2 JP 5081480B2 JP 2007085598 A JP2007085598 A JP 2007085598A JP 2007085598 A JP2007085598 A JP 2007085598A JP 5081480 B2 JP5081480 B2 JP 5081480B2
Authority
JP
Japan
Prior art keywords
behavior
software
stack
score
modeling
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.)
Active
Application number
JP2007085598A
Other languages
English (en)
Other versions
JP2008243034A (ja
Inventor
雄大 中山
優佳 池部
敦 竹下
和彦 加藤
洋丈 阿部
勝博 鈴木
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.)
NTT Docomo Inc
Original Assignee
NTT Docomo Inc
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 NTT Docomo Inc filed Critical NTT Docomo Inc
Priority to JP2007085598A priority Critical patent/JP5081480B2/ja
Priority to PCT/JP2008/056177 priority patent/WO2008117872A1/ja
Priority to EP08739295A priority patent/EP2141598A4/en
Priority to CN200880010524.1A priority patent/CN101652755B/zh
Priority to US12/593,376 priority patent/US8407799B2/en
Publication of JP2008243034A publication Critical patent/JP2008243034A/ja
Application granted granted Critical
Publication of JP5081480B2 publication Critical patent/JP5081480B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow

Description

本発明は、ソフトウェアの挙動をモデル化するソフトウェア挙動モデル化装置及びソフトウェア挙動モデル化方法、ソフトウェアの挙動を検証するソフトウェア挙動検証装置及びソフトウェア挙動検証方法に関する。
PC、ワークステーション、サーバ、ルータ、携帯電話、PDAなどの計算機は、計算機の外部又は計算機の内部から攻撃を受ける可能性がある。代表的な攻撃としては、計算機上で実行されているソフトウェアの脆弱性を悪用する攻撃が挙げられる。攻撃者は、ソフトウェアの脆弱性を悪用するコードを計算機に送り込み、計算機上で実行されているソフトウェアに含まれるプロセスの制御を奪う。攻撃者は、制御を奪ったプロセスの権限を利用して不正な操作を行う。
これに対して、ソフトウェアの脆弱性を悪用する攻撃、特に、計算機にとって未知の攻撃を検出する異常検出システムが知られている。
具体的には、異常検出システムでは、ソフトウェアの正常な挙動が予めモデル化されており、モデル化された挙動モデルが格納されている。異常検出システムは、ソフトウェアの実行中において、ソフトウェアの挙動が挙動モデルから乖離しているか否かを判定する。
ここで、攻撃者は、プロセスがカーネルに重要な処理を依頼するシステムコールを用いて、計算機に任意の動作を行わせる。従って、ソフトウェアの挙動を監視する際において、システムコールの正当性を検証することが重要である。
これを受けて、ソフトウェアの実行中において、システムコールの正当性を検証する検証方法が提案されている。しかしながら、システムコール列を正常に保ちつつ、攻撃を行うことが可能であることが分かったため、検証精度を向上させるために、システムコールのみではなくて、リターンアドレスも検証に用いる方法が提案されている。この検証方法は、リターンアドレスなどが格納されるコールスタックの状況を利用する。具体的には、この検証方法は、ソフトウェアの挙動を学習する段階と、ソフトウェアの挙動を検証する段階とを含む(例えば、非特許文献1)。
ソフトウェアの挙動の学習段階では、ソフトウェアを予め正常に実行した上で、ソフトウェアの挙動モデルを生成する。
具体的には、システムコールが発生した際に、コールスタックの状況、(コールスタックに格納されるリターンアドレスの列)を取得するとともに、プログラムカウンタの値を取得する。リターンアドレスの列及びプログラムカウンタの値が記録された仮想スタックリスト(Virtual Stack List)を生成する。続いて、一のシステムコールが発生した際に生成された仮想スタックリストと、一のシステムコールに続いて他のシステムコールが発生した際に生成された仮想スタックリストとの差分情報(Virtual Path)を取得する。さらに、仮想スタックリスト(Virtual Stack List)及び差分情報(Virtual Path)に基づいてハッシュテーブルを生成して、ハッシュテーブルを挙動モデルとして利用する。
ソフトウェアの挙動の検証段階では、ソフトウェアの実行中においてシステムコールが発生した際に、ソフトウェアの挙動の学習段階と同様に、ハッシュテーブルを生成する。続いて、ソフトウェアの挙動の学習段階で生成されたハッシュテーブルと、ソフトウェアの実行中において生成されたハッシュテーブルとのマッチングを行う。ハッシュテーブルが合致する場合には、システムコールが許可され、ハッシュテーブルが合致しない場合には、ソフトウェアの挙動が異常であると判定される。
H.Feng等、"Anomaly Detection Using Call Stack Information"、The proc. of IEEE Symposium on Security and Privacy 2003、 pp.62.
しかしながら、上述した検証方法では、仮想スタックリスト(Virtual Stack List)及び差分情報(Virtual Path)に基づいてハッシュテーブルを生成する必要がある。特に、ソフトウェアの挙動の検証段階では、ソフトウェアの実行中においてハッシュテーブルを生成する必要があるため、計算機の処理負荷が重くなり、計算機の処理速度が遅くなってしまう。特に、ハッシュテーブルを取得するために差分情報(Virtual Path)を生成する負荷が重いことに留意すべきである。
また、非特許文献1では、学習したもののみを正常とみなし、学習していないものは全て異常とみなす。つまり、学習の漏れがあると、正常挙動であっても異常と判断する誤検知が発生する恐れがある。ソフトウェアの正常挙動を網羅的に学習することは、現実的に困難であることから、これは問題であると考えられる。
そこで、本発明は、上述した課題を解決するためになされたものであり、ソフトウェアの挙動の検証精度を保ちながら、ソフトウェアの挙動を簡易に検証することを可能とするソフトウェア挙動モデル化装置、ソフトウェア挙動モデル化方法、ソフトウェア挙動検証装置及びソフトウェア挙動検証方法を提供することを目的とする。
本発明の一の特徴では、ソフトウェアの挙動をモデル化するソフトウェア挙動モデル化装置は、前記ソフトウェアの実行中に発生した特定のイベント(例えば、システムコール)を示すイベント情報を取得するイベント情報取得部(イベント情報取得部110)と、前記特定のイベントが発生した時点において、コールスタックに格納されたスタック情報を取得するスタック情報取得部(スタック情報取得部120)と、前記スタック情報に含まれる要素(例えば、リターンアドレス)が前記コールスタックに格納されている格納位置に応じて、スコアを設定するスコア設定部(スコア設定部125)と、前記格納位置及び前記スコアを用いて、前記特定のイベントと前記要素との関係をモデル化して、前記ソフトウェアの挙動モデルを生成するモデル生成部(挙動モデル生成部130)とを備える。
かかる特徴によれば、モデル生成部は、リターンアドレスの格納位置と、格納位置に応じて設定されたスコアとを用いて、ソフトウェアの挙動モデルを生成する。このように、リターンアドレスの格納位置に着目することによって、ソフトウェアの挙動のモデル化精度を高めることができる。
また、従来技術のように、差分情報(Virtual Path)を用いる必要がないため、ソフトウェア挙動モデル化装置の処理負荷の軽減、ソフトウェア挙動モデル化装置の処理速度の向上を図ることができる。
本発明の上述した特徴において、前記モデル生成部は、前記コールスタックに格納された前記要素から、前記挙動モデルの生成に用いるモデル化対象要素を抽出した上で、前記モデル化対象要素に対応する前記格納位置及び前記スコアを用いて、前記挙動モデルを生成することが好ましい。
本発明の上述した特徴において、前記モデル化対象要素は、前記コールスタックに格納された前記要素のうち、上位から順に抽出された所定数の要素であることが好ましい。
本発明の上述した特徴において、前記モデル化対象要素は、前記コールスタックに格納された前記要素のうち、前記スコアが所定閾値以上である要素であることが好ましい。
本発明の上述した特徴において、前記モデル生成部は、前記特定のイベントと前記要素の処理順序との関係をモデル化して、前記挙動モデルを生成することが好ましい。
本発明の一の特徴では、ソフトウェアの挙動をモデル化するソフトウェア挙動モデル化方法は、前記ソフトウェアの実行中に発生した特定のイベントを示すイベント情報を取得するステップAと、前記特定のイベントが発生した時点において、コールスタックに格納されたスタック情報を取得するステップBと、前記スタック情報に含まれる要素が前記コールスタックに格納されている格納位置に応じて、スコアを設定するステップCと、前記格納位置及び前記スコアを用いて、前記特定のイベントと前記要素との関係をモデル化して、前記ソフトウェアの挙動モデルを生成するステップDとを含む。
本発明の一の特徴では、ソフトウェアの挙動を検証するソフトウェア挙動検証装置は、前記ソフトウェアの実行中に発生した特定のイベントを示すイベント情報を取得するイベント情報取得部(イベント情報取得部210)と、前記特定のイベントが発生した時点において、コールスタックに格納されたスタック情報を取得するスタック情報取得部(スタック情報取得部220)と、前記特定のイベントと前記要素との関係が予めモデル化された挙動モデルを取得する挙動モデル取得部(挙動モデル取得部230)と、前記イベント情報取得部によって取得された前記特定のイベント及び前記スタック情報取得部によって取得された前記スタック情報に基づいて、前記ソフトウェアの挙動が前記挙動モデルから乖離しているか否かを検証する挙動検証部(挙動検証部240)とを備え、前記挙動モデルは、前記ソフトウェアが予め実行された際において、前記スタック情報に含まれる要素が前記コールスタックに格納されている位置である格納位置及び前記格納位置に応じて設定されるスコアを用いて生成されており、前記挙動検証部は、前記格納位置及び前記スコアに基づいて、前記ソフトウェアの挙動が前記挙動モデルから乖離しているか否かを検証する。
かかる特徴によれば、挙動検証部は、リターンアドレスの格納位置と、格納位置に応じて設定されたスコアとを用いて、ソフトウェアの挙動が挙動モデルから乖離しているか否かを判定する。このように、リターンアドレスの格納位置に着目することによって、ソフトウェアの挙動の検証精度を高めることができる。
また、従来技術のように、差分情報(Virtual Path)を用いる必要がないため、ソフトウェア挙動検証装置の処理負荷の軽減、ソフトウェア挙動検証装置の処理速度の向上を図ることができる。
本発明の上述した特徴において、前記挙動検証部は、前記スコアを前記格納位置毎に累積的に加算し、累積的に加算された前記スコアに基づいて、前記ソフトウェアの異常挙動を検出することが好ましい。
本発明の一の特徴では、ソフトウェアの挙動を検証するソフトウェア挙動検証方法は、前記ソフトウェアの実行中に発生した特定のイベントを示すイベント情報を取得するステップAと、前記特定のイベントが発生した時点において、コールスタックに格納されたスタック情報を取得するステップBと、前記特定のイベントと前記要素との関係が予めモデル化された挙動モデルを取得するステップCと、前記ステップAでによって取得された前記特定のイベント及び前記ステップBで取得された前記スタック情報に基づいて、前記ソフトウェアの挙動が前記挙動モデルから乖離しているか否かを検証するステップDとを含み、前記挙動モデルは、前記ソフトウェアが予め実行された際において、前記スタック情報に含まれる要素が前記コールスタックに格納されている位置である格納位置及び前記格納位置に応じて設定されるスコアを用いて生成されており、前記ステップDでは、前記格納位置及び前記スコアに基づいて、前記ソフトウェアの挙動が前記挙動モデルから乖離しているか否かを検証する。
本発明によれば、ソフトウェアの挙動の検証精度を保ちながら、ソフトウェアの挙動を簡易に検証することを可能とするソフトウェア挙動モデル化装置、ソフトウェア挙動モデル化方法、ソフトウェア挙動検証装置及びソフトウェア挙動検証方法を提供することができる。
以下において、本発明の実施形態に係るソフトウェア挙動モデル化装置及びソフトウェア挙動検証装置について、図面を参照しながら説明する。なお、以下の図面の記載において、同一又は類似の部分には、同一又は類似の符号を付している。
ただし、図面は模式的なものであり、各寸法の比率などは現実のものとは異なることに留意すべきである。従って、具体的な寸法などは以下の説明を参酌して判断すべきである。また、図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることは勿論である。
[第1実施形態]
(ソフトウェア挙動モデル化装置)
以下において、第1実施形態に係るソフトウェア挙動モデル化装置の構成について、図面を参照しながら説明する。図1は、第1実施形態に係るソフトウェア挙動モデル化装置100の構成を示すブロック図である。
図1に示すように、ソフトウェア挙動モデル化装置100は、学習対象ソフトウェア(プログラム)の正常挙動をモデル化して、ソフトウェアの挙動モデルを生成する。具体的には、ソフトウェア挙動モデル化装置100は、イベント情報取得部110と、スタック情報取得部120と、スコア設定部125と、挙動モデル生成部130とを備える。
イベント情報取得部110は、学習対象ソフトウェアの実行中において、学習対象ソフトウェアに含まれる各プロセスが発行する特定のイベント(以下、システムコール)を示すシステムコール情報を取得する。システムコールは、ソフトウェアに含まれるプロセスがオペレーションシステム(カーネル)に重要な処理を依頼する際に発行される命令である。
スタック情報取得部120は、コールスタックに格納された情報であるスタック情報を取得する。スタック情報は、複数のリターンアドレスがコールスタックに格納されている順に記録されたものである。リターンアドレスは、プロセスの実行中に呼ばれたサブルーチンが終了した際に、処理を戻すべきプロセスのアドレスである。
ここで、第1実施形態では、コールスタックには、コールスタックの下位(底)からコールスタックの上位に向けて、複数のリターンアドレスが処理順序に従って格納されている。例えば、各リターンアドレスの格納位置としては、コールスタックの上位から順に、すなわち、最も直近に処理されたリターンアドレス順に、「0」、「1」・・・「n」が割り当てられている。
スタック情報取得部120は、学習対象ソフトウェアの実行中において、システムコール情報をイベント情報取得部110から取得する。
スタック情報取得部120は、イベント情報取得部110から取得したシステムコール情報によって示されるシステムコールが発生した際にコールスタックから取得したスタック情報を記憶する。具体的には、図2に示すように、スタック情報取得部120は、システムコール(Sys)が発生した際にコールスタックに記憶されているリターンアドレス(RA)をスタック情報として記憶する。
例えば、スタック情報取得部120は、図2に示すように、システムコール1が発生した場合には、システムコール1が発生した際にコールスタックに記憶されているリターンアドレス(0x80000001、0x80000123、0x80000345)を記憶する。
スタック情報取得部120は、システムコール1に続いてシステムコール2が発生した場合には、システムコール2が発生した際にコールスタックに記憶されているリターンアドレス(0x80000001、0x80000123、0x80000456、0x80000567)を記憶する。
スタック情報取得部120は、システムコール2に続いてシステムコール2が再び発生した場合には、システムコール2が発生した際にコールスタックに記憶されているリターンアドレス(0x80000001、0x80000321、0x80000654)を記憶する。
スコア設定部125は、スタック情報取得部120からスタック情報を取得する。続いて、スコア設定部125は、スタック情報に含まれる各要素(リターンアドレス)がコールスタックに格納されている位置(格納位置)に応じて、各要素にスコアを設定する。
挙動モデル生成部130は、イベント情報取得部110からシステムコール情報を取得するとともに、スタック情報取得部120からスタック情報を取得する。また、挙動モデル生成部130は、スコア設定部125によって各要素(リターンアドレス)に設定されたスコアを取得する。続いて、挙動モデル生成部130は、システムコールとスタック情報(リターンアドレス)との関係をモデル化して、ソフトウェアの挙動モデルを生成する。挙動モデル生成部130は、システムコール毎に挙動モデルを生成する。
具体的には、図3(a)に示すように、システムコール1(Sys1)、システムコール2(Sys2)及びシステムコール2(Sys2)が順に発生した場合において、挙動モデルを生成するケースを例に挙げて説明する。
図3(a)に示すように、システムコール1(Sys1)が発生した時点において、コールスタックには、リターンアドレスA〜リターンアドレスFが格納されている。なお、リターンアドレスFが最も直近に処理されたものであり、リターンアドレスFの格納位置は「0」であることに留意すべきである。
同様に、システムコール1(Sys1)に続いてシステムコール2(Sys2)が発生した時点において、コールスタックには、リターンアドレスA〜リターンアドレスDが順に格納されている。なお、リターンアドレスDが最も直近に処理されたものであり、リターンアドレスDの格納位置は「0」であることに留意すべきである。
また、システムコール2(Sys2)に続いてシステムコール2(Sys2)が発生した時点において、コールスタックには、リターンアドレスA〜リターンアドレスCが順に格納されている。なお、リターンアドレスCが最も直近に処理されたものであり、リターンアドレスCの格納位置は「0」であることに留意すべきである。
挙動モデル生成部130は、図3(b)に示すように、システムコールの種類(Sys)、コールスタックにおけるリターンアドレスの格納位置、リターンアドレスの種類及びスコアを対応付けるテーブルを挙動モデルとして生成する。
ここで、上述したスコア設定部125は、格納位置が下位になれば下位になるほど、スコアが小さくなるようにスコアを設定する。また、スコア設定部125は、格納位置が同じであるリターンアドレスの数が多ければ多いほど、スコアが小さくなるようにスコアを設定してもよい。
例えば、格納位置を“P”、格納位置が同じリターンアドレスの種類数を“N”とした場合には、以下に示す式(1)〜式(4)に従ってスコア(W)が設定される。格納位置は、0以上の整数(「0」、「1」・・・「n」)で表されていることを前提とする。
Figure 0005081480
なお、上述した式(3)〜式(4)において、格納位置が同じリターンアドレスの種類数(N)に代えて、格納位置が同じリターンアドレスのカウント数(C)を用いてもよい。また、種類数(N)及びカウント数(C)の双方を用いてもよい。
なお、図3(b)では、式(3)を用いてスコア(W)を算出している。但し、xの値は“2”であることに留意すべきである。
(ソフトウェア挙動モデル化方法)
以下において、第1実施形態に係るソフトウェア挙動モデル化方法について、図面を参照しながら説明する。図4は、第1実施形態に係るソフトウェア挙動モデル化方法を示すフロー図である。なお、図4では、学習対象ソフトウェアが正常に動作することを前提として説明する。
図4に示すように、ステップ10において、ソフトウェア挙動モデル化装置100は、学習対象ソフトウェアの挙動モデルを生成するために必要な情報の学習を開始する。
ステップ11において、ソフトウェア挙動モデル化装置100は、学習対象ソフトウェアに含まれる各プロセスが発行するシステムコールを示すイベント情報を取得する。
ステップ12において、ソフトウェア挙動モデル化装置100は、システムコールが発生した時点において、コールスタックに格納されているスタック情報(複数のリターンアドレス)を取得する(上述した図2を参照)。
ステップ13において、ソフトウェア挙動モデル化装置100は、挙動モデルの生成に必要な情報が揃ったか否か、例えば、学習対象ソフトウェアの実行が終了したか否かを判定する。ソフトウェア挙動モデル化装置100は、挙動モデルの生成に必要な情報が揃った場合には、学習対象ソフトウェアの挙動モデルを生成するために必要な情報の学習を終了する。一方で、ソフトウェア挙動モデル化装置100は、挙動モデルの生成に必要な情報が揃っていない場合には、ステップ11及びステップ12の処理を繰り返す。
ステップ14において、ソフトウェア挙動モデル化装置100は、システムコール情報及びスタック情報を用いて、学習対象ソフトウェアの挙動モデルを生成する。具体的には、ソフトウェア挙動モデル化装置100は、リターンアドレスの格納位置及びリターンアドレスの種類に基づいて、各リターンアドレスにスコアを設定する。続いて、ソフトウェア挙動モデル化装置100は、システムコールの種類、リターンアドレスの格納位置、リターンアドレスの種類及びスコアを対応付けるテーブルを挙動モデルとして生成する(上述した図3(b)を参照)。
(作用及び効果)
第1実施形態に係るソフトウェア挙動モデル化装置100(ソフトウェア挙動モデル化方法)によれば、挙動モデル生成部130は、リターンアドレスの格納位置と、格納位置に応じて設定されたスコアとを用いて、学習対象ソフトウェアの挙動モデルを生成する。このように、リターンアドレスの格納位置に着目することによって、学習対象ソフトウェアの挙動のモデル化精度を高めることができる。
また、従来技術のように、差分情報(Virtual Path)を用いる必要がないため、ソフトウェア挙動モデル化装置100の処理負荷の軽減、ソフトウェア挙動モデル化装置100の処理速度の向上を図ることができる。
第1実施形態に係るソフトウェア挙動モデル化装置100(ソフトウェア挙動モデル化方法)によれば、リターンアドレスの格納位置及び格納位置に応じて設定されるスコアを含むテーブルによって簡易に挙動モデルを表すため、挙動モデルのサイズを小さくすることができる。
[第2実施形態]
(ソフトウェア挙動検証装置)
以下において、第2実施形態に係るソフトウェア挙動検証装置の構成について、図面を参照しながら説明する。図5は、第2実施形態に係るソフトウェア挙動検証装置200の構成を示すブロック図である。
図5に示すように、ソフトウェア挙動検証装置200は、イベント情報取得部210と、スタック情報取得部220と、挙動モデル取得部230と、挙動検証部240とを備える。
イベント情報取得部210は、イベント情報取得部110と同様に、監視対象ソフトウェアの実行中において、監視対象ソフトウェアに含まれる各プロセスが発行する特定のイベント(システムコール)を示すシステムコール情報を取得する。
スタック情報取得部220は、スタック情報取得部120と同様に、システムコールが発生した時点において、コールスタックに格納されたスタック情報を取得する。なお、スタック情報は、第1実施形態と同様に、複数のリターンアドレスがコールスタックに格納されている順に記録されたものである。
挙動モデル取得部230は、第1実施形態で示したように、システムコール情報及びスタック情報を用いて生成された挙動モデルを取得する。ここで、挙動モデル取得部230は、監視対象ソフトウェアに対応する挙動モデルを取得することは勿論である。
挙動検証部240は、監視対象ソフトウェアの挙動が挙動モデルから乖離しているか否かを検証する。具体的には、挙動検証部240は、システムコール情報によって示されるシステムコールに対応する挙動モデルを取得する。続いて、挙動検証部240は、リターンアドレスの格納位置毎に、スタック情報取得部220によって取得されたリターンアドレスと挙動モデルに含まれるリターンアドレスとを比較する。
ここで、挙動検証部240は、リターンアドレスが一致する場合には、監視対象ソフトウェアの挙動が正常であるか否かを判定するための判定値に、格納位置に対応するスコアを加算しない。一方で、挙動検証部240は、リターンアドレスが不一致である場合には、格納位置に対応するスコアを判定値に累積的に加算する。挙動検証部240は、累積的にスコアが加算された判定値が所定判定値を超えた場合に、監視対象ソフトウェアの挙動が異常であると判定する。
例えば、監視対象ソフトウェアの挙動モデルが図6(a)に示すモデルであり、システムコール2(Sys2)が発生した時点においてコールスタックに格納されているリターンアドレスが図6(b)に示すアドレスであるケースを例に挙げて説明する。
挙動検証部240は、システムコール2(Sys2)に対応する挙動モデルを取得する。続いて、挙動検証部240は、格納位置“0”において、リターンアドレスGが挙動モデルと一致するか否かを検証する。図6では、挙動検証部240は、リターンアドレスGが挙動モデルと一致しないため、格納位置“0”に対応するスコア(1/2)を判定値に加算する。なお、判定値の初期値は“0”であることに留意すべきである。
同様に、挙動検証部240は、格納位置“1”において、リターンアドレスBが挙動モデルと一致するか否かを検証する。図6では、挙動検証部240は、リターンアドレスBが挙動モデルと一致するため、格納位置“1”に対応するスコアを判定値に加算しない。
さらに、挙動検証部240は、格納位置“2”において、リターンアドレスAが挙動モデルと一致するか否かを検証する。図6では、挙動検証部240は、リターンアドレスAが挙動モデルと一致するため、格納位置“2”に対応するスコアを判定値に加算しない。
続いて、挙動検証部240は、スコアが累積的に加算された判定値(図6では、1/2)を当該スタック情報の累積スコアとして、複数のスタック情報毎に算出された累積スコアを異常スコアに加算する。
最終的には、挙動検証部240は、異常スコアが所定判定値を超えているか否かを判定し、監視対象ソフトウェアの挙動が正常であるか否かを判定する。
なお、累積スコアは、システムコールの発行回数に応じて正規化されてもよい。また、監視対象ソフトウェアの挙動が正常であるか否かは、予め定められた回数のシステムコールに対応する判定値の合計(累積値)で判断されてもよい。例えば、予め定められた回数が5回である場合には、システムコール1〜5に対応する判定値の合計(累積値)、システムコール2〜6に対応する判定値の合計(累積値)、システムコール3〜7に対応する判定値の合計(累積値)をそれぞれ算出した上で、各累積値に基づいて監視対象ソフトウェアの挙動が正常であるか否かを判断する。
(ソフトウェア挙動検証方法)
以下において、第2実施形態に係るソフトウェア挙動検証方法について、図面を参照しながら説明する。図7は、第2実施形態に係るソフトウェア挙動検証方法を示すフロー図である。
図7に示すように、ステップ20において、ソフトウェア挙動検証装置200は、監視対象ソフトウェアの挙動モデルを取得する(上述した図6(a)を参照)。
ステップ21において、ソフトウェア挙動検証装置200は、監視対象ソフトウェアの監視を開始する。
ステップ22において、ソフトウェア挙動検証装置200は、監視対象ソフトウェアに含まれるプロセスが発行するシステムコールを示すシステムコール情報を取得する。
ステップ23において、ソフトウェア挙動検証装置200は、システムコールが発生した時点において、コールスタックに格納されているスタック情報(複数のリターンアドレス)を取得する(上述した図6(b)を参照)。
ステップ24において、ソフトウェア挙動検証装置200は、システムコール情報に対応する挙動モデルを参照して、ステップ23で取得したリターンアドレスと挙動モデルに含まれるリターンアドレスとが一致するか否かをリターンアドレスの格納位置毎に判定する。また、ソフトウェア挙動検証装置200は、リターンアドレスが一致する場合には、ステップ26の処理に移り、リターンアドレスが不一致である場合には、ステップ25の処理に移る。
ステップ25において、ソフトウェア挙動検証装置200は、リターンアドレスの格納位置に対応するスコアを判定値に加算する。
ステップ26において、ソフトウェア挙動検証装置200は、判定値が所定判定値を超えているか否か、及び、監視対象ソフトウェアの実行が終了したか否かを判定する。ソフトウェア挙動検証装置200は、判定値が所定判定値を超えている場合には、監視対象ソフトウェアの挙動が異常であると判定する。一方で、監視対象ソフトウェアの実行が終了した場合には、監視対象ソフトウェアの挙動が正常であると判定する。
なお、ソフトウェア挙動検証装置200は、判定値が所定判定値を超えておらず、かつ、監視対象ソフトウェアの実行が終了していない場合には、ステップ22〜ステップ25の処理を繰り返す。
(作用及び効果)
第2実施形態に係るソフトウェア挙動検証装置200(ソフトウェア挙動検証方法)によれば、挙動検証部240は、リターンアドレスの格納位置と、格納位置に応じて設定されたスコアとを用いて、監視対象ソフトウェアの挙動が挙動モデルから乖離しているか否かを判定する。このように、リターンアドレスの格納位置に着目することによって、監視対象ソフトウェアの挙動の検証精度を高めることができる。
また、従来技術のように、差分情報(Virtual Path)を用いる必要がないため、ソフトウェア挙動検証装置200の処理負荷の軽減、ソフトウェア挙動検証装置200の処理速度の向上を図ることができる。
第2実施形態に係るソフトウェア挙動検証装置200(ソフトウェア挙動検証方法)によれば、挙動検証部240は、コールスタックに格納されたリターンアドレスと挙動モデルに含まれるリターンアドレスとを格納位置毎に比較して、リターンアドレスが不一致である場合にスコアを累積的に加算する。挙動検証部240は、累積的に加算されたスコア(判定値)に基づいて、監視対象ソフトウェアの挙動を検証する。従って、攻撃者の攻撃によってソフトウェア挙動検証装置200にとって全く未知のソフトウェアが実行されてしまった場合であっても、ソフトウェアの異常を検出することができる。
[その他の実施形態]
本発明は上述した実施形態によって説明したが、この開示の一部をなす論述及び図面は、この発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施形態、実施例及び運用技術が明らかとなろう。
例えば、上述した実施形態では特に触れていないが、スコア設定部125及び挙動モデル生成部130は、コールスタックに格納されたリターンアドレスのうち、挙動モデルの生成に用いるモデル化対象リターンアドレスを抽出した上で、モデル化対象リターンアドレスの格納位置及び格納位置に応じて設定されたスコアを用いて、学習対象モデルの挙動モデルを生成してもよい。
ここで、モデル化対象リターンアドレスは、コールスタックに格納されたリターンアドレスのうち、コールスタックの上位から順に抽出された所定数のリターンアドレスであってもよい。また、モデル化対象リターンアドレスは、コールスタックに格納されたリターンアドレスのうち、スコアが所定閾値以上であるリターンアドレスであってもよい。
上述した実施形態では、スコア設定部125は、一つのシステムコールと一つのリターンアドレスとの関係において、一つのリターンアドレスに対応するスコアを設定するが、これに限定されるものではない。すなわち、挙動モデル生成部130は、一つのシステムコールと一つのリターンアドレスとの関係をモデル化するが、これに限定されるものではない。
具体的には、スコア設定部125は、一つのシステムコールとコールスタックの上位からの順序が考慮された複数のリターンアドレスの順列との関係において、複数のリターンアドレスに対応するスコアを設定してもよい。すなわち、挙動モデル生成部130は、一つのシステムコールとコールスタックの上位からの順序が考慮された複数のリターンアドレスの順列との関係をモデル化してもよい。
上述した実施形態では特に触れていないが、スコア設定部125は、システムコールが発生した時点においてコールスタックに格納されているリターンアドレスについて、そのシステムコール内で出現回数が相対的に少ないリターンアドレスに対して、そのシステムコール内で出現回数が相対的に多いリターンアドレスよりも高いスコアを設定してもよい。
上述した実施形態では特に触れていないが、スコア設定部125は、システムコールが発生した時点においてコールスタックに格納されているリターンアドレスについて、そのシステムコール内で出現回数が絶対的に少ないリターンアドレスに対して、そのシステムコール内で出現回数が絶対的に多いリターンアドレスよりも高いスコアを設定してもよい。
上述した実施形態では特に触れていないが、スコア設定部125は、システムコールが発生した時点においてコールスタックに格納されているリターンアドレスについて、そのシステムコール内における出現回数の割合を考慮して、リターンアドレスにスコアを設定してもよい。
上述した実施形態では特に触れていないが、スコア設定部125は、複数のリターンアドレスの相関関係を考慮して、リターンアドレスにスコアを設定してもよい。
例えば、リターンアドレスAとリターンアドレスBとの相関が高いケースにおいて、リターンアドレスBがリターンアドレスAとともに出現する場合に、リターンアドレスBが単独で出現する場合よりも、リターンアドレスBに高いスコアを設定してもよい。リターンアドレスAが出現した場合に、リターンアドレスBにスコアを設定しなくてもよい。
第1実施形態に係るソフトウェア挙動モデル化装置100の構成を示すブロック図である。 第1実施形態に係るスタック情報の一例を示す図である。 第1実施形態に係るソフトウェアの挙動モデルの生成の一例を示す図である。 第1実施形態に係るソフトウェア挙動モデル化方法を示すフロー図である。 第2実施形態に係るソフトウェア挙動検証装置200の構成を示すブロック図である。 第2実施形態に係るソフトウェアの挙動の検証の一例を示す図である。 第2実施形態に係るソフトウェア挙動検証方法を示すフロー図である。
符号の説明
100・・・ソフトウェア挙動モデル化装置、110・・・イベント情報取得部、120・・・スタック情報取得部、125・・・スコア設定部、130・・・挙動モデル生成部、200・・・ソフトウェア挙動検証装置、210・・・イベント情報取得部、220・・・スタック情報取得部、230・・・挙動モデル取得部、240・・・挙動検証部

Claims (9)

  1. ソフトウェアの挙動をモデル化するソフトウェア挙動モデル化装置であって、
    前記ソフトウェアの実行中に発生した特定のイベントを示すイベント情報を取得するイベント情報取得部と、
    前記特定のイベントが発生した時点において、コールスタックに格納されたスタック情報を取得するスタック情報取得部と、
    前記スタック情報に含まれる要素が前記コールスタックに格納されている格納位置が下位になるほど小さくなるようにスコアを設定するスコア設定部と、
    前記格納位置及び前記スコアを用いて、前記特定のイベントと前記要素との関係をモデル化して、前記ソフトウェアの挙動モデルを生成するモデル生成部とを備えることを特徴とするソフトウェア挙動モデル化装置。
  2. 前記モデル生成部は、前記コールスタックに格納された前記要素から、前記挙動モデルの生成に用いるモデル化対象要素を抽出した上で、前記モデル化対象要素に対応する前記格納位置及び前記スコアを用いて、前記挙動モデルを生成することを特徴とする請求項1に記載のソフトウェア挙動モデル化装置。
  3. 前記モデル化対象要素は、前記コールスタックに格納された前記要素のうち、上位から抽出された所定数の要素であることを特徴とする請求項2に記載のソフトウェア挙動モデル化装置。
  4. 前記モデル化対象要素は、前記コールスタックに格納された前記要素のうち、前記スコアが所定閾値以上である要素であることを特徴とする請求項2に記載のソフトウェア挙動モデル化装置。
  5. 前記モデル生成部は、前記特定のイベントと前記要素の処理順序との関係をモデル化して、前記挙動モデルを生成することを特徴とする請求項1に記載のソフトウェア挙動モデル化装置。
  6. ソフトウェアの挙動をモデル化するソフトウェア挙動モデル化方法であって、
    前記ソフトウェアの実行中に発生した特定のイベントを示すイベント情報を取得するステップAと、
    前記特定のイベントが発生した時点において、コールスタックに格納されたスタック情報を取得するステップBと、
    前記スタック情報に含まれる要素が前記コールスタックに格納されている格納位置が下位になるほど小さくなるようにスコアを設定するステップCと、
    前記格納位置及び前記スコアを用いて、前記特定のイベントと前記要素との関係をモデル化して、前記ソフトウェアの挙動モデルを生成するステップDとを含むことを特徴とするソフトウェア挙動モデル化方法。
  7. ソフトウェアの挙動を検証するソフトウェア挙動検証装置であって、
    前記ソフトウェアの実行中に発生した特定のイベントを示すイベント情報を取得するイベント情報取得部と、
    前記特定のイベントが発生した時点において、コールスタックに格納されたスタック情報を取得するスタック情報取得部と、
    前記特定のイベントと前記要素との関係が予めモデル化された挙動モデルを取得する挙動モデル取得部と、
    前記イベント情報取得部によって取得された前記特定のイベント及び前記スタック情報取得部によって取得された前記スタック情報に基づいて、前記ソフトウェアの挙動が前記挙動モデルから乖離しているか否かを検証する挙動検証部とを備え、
    前記挙動モデルは、前記ソフトウェアが予め正常に実行された際において、前記スタック情報に含まれる要素が前記コールスタックに格納されている位置である格納位置及び前記格納位置が下位になるほど小さくなるように設定されるスコアを用いて生成されており、
    前記挙動検証部は、前記格納位置及び前記スコアに基づいて、前記ソフトウェアの挙動が前記挙動モデルから乖離しているか否かを検証することを特徴とするソフトウェア挙動検証装置。
  8. 前記挙動検証部は、前記スコアを累積的に加算し、累積的に加算された前記スコアに基づいて、前記ソフトウェアの異常挙動を検出することを特徴とする請求項7に記載のソフトウェア挙動検証装置。
  9. ソフトウェアの挙動を検証するソフトウェア挙動検証方法であって、
    前記ソフトウェアの実行中に発生した特定のイベントを示すイベント情報を取得するステップAと、
    前記特定のイベントが発生した時点において、コールスタックに格納されたスタック情報を取得するステップBと、
    前記特定のイベントと前記要素との関係が予めモデル化された挙動モデルを取得するステップCと、
    前記ステップAで取得された前記特定のイベント及び前記ステップBで取得された前記スタック情報に基づいて、前記ソフトウェアの挙動が前記挙動モデルから乖離しているか否かを検証するステップDとを含み、
    前記挙動モデルは、前記ソフトウェアが予め実行された際において、前記スタック情報に含まれる要素が前記コールスタックに格納されている位置である格納位置及び前記格納位置が下位になるほど小さくなるように設定されるスコアを用いて生成されており、
    前記ステップDでは、前記格納位置及び前記スコアに基づいて、前記ソフトウェアの挙動が前記挙動モデルから乖離しているか否かを検証することを特徴とするソフトウェア挙動検証方法。
JP2007085598A 2007-03-28 2007-03-28 ソフトウェア挙動モデル化装置、ソフトウェア挙動モデル化方法、ソフトウェア挙動検証装置及びソフトウェア挙動検証方法 Active JP5081480B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2007085598A JP5081480B2 (ja) 2007-03-28 2007-03-28 ソフトウェア挙動モデル化装置、ソフトウェア挙動モデル化方法、ソフトウェア挙動検証装置及びソフトウェア挙動検証方法
PCT/JP2008/056177 WO2008117872A1 (ja) 2007-03-28 2008-03-28 ソフトウェア挙動モデル化装置、ソフトウェア挙動モデル化方法、ソフトウェア挙動検証装置及びソフトウェア挙動検証方法
EP08739295A EP2141598A4 (en) 2007-03-28 2008-03-28 SOFTWARE BEHAVIOR MODELING DEVICE, SOFTWARE BEHAVIOR MODELING METHOD, SOFTWARE BEHAVIOR VERIFICATION DEVICE, AND SOFTWARE BEHAVIOR VERIFICATION METHOD
CN200880010524.1A CN101652755B (zh) 2007-03-28 2008-03-28 软件行为模型化装置、软件行为模型化方法、软件行为验证装置以及软件行为验证方法
US12/593,376 US8407799B2 (en) 2007-03-28 2008-03-28 Software behavior modeling device, software behavior modeling method, software behavior verification device, and software behavior verification method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007085598A JP5081480B2 (ja) 2007-03-28 2007-03-28 ソフトウェア挙動モデル化装置、ソフトウェア挙動モデル化方法、ソフトウェア挙動検証装置及びソフトウェア挙動検証方法

Publications (2)

Publication Number Publication Date
JP2008243034A JP2008243034A (ja) 2008-10-09
JP5081480B2 true JP5081480B2 (ja) 2012-11-28

Family

ID=39788603

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007085598A Active JP5081480B2 (ja) 2007-03-28 2007-03-28 ソフトウェア挙動モデル化装置、ソフトウェア挙動モデル化方法、ソフトウェア挙動検証装置及びソフトウェア挙動検証方法

Country Status (5)

Country Link
US (1) US8407799B2 (ja)
EP (1) EP2141598A4 (ja)
JP (1) JP5081480B2 (ja)
CN (1) CN101652755B (ja)
WO (1) WO2008117872A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8745361B2 (en) 2008-12-02 2014-06-03 Microsoft Corporation Sandboxed execution of plug-ins
JP4572259B1 (ja) * 2009-04-27 2010-11-04 株式会社フォティーンフォティ技術研究所 情報機器、プログラム及び不正なプログラムコードの実行防止方法
CN103577753B (zh) * 2012-08-01 2017-07-25 联想(北京)有限公司 一种提示伪装应用隐患的方法和电子设备
US9817742B2 (en) * 2013-06-25 2017-11-14 Dell International L.L.C. Detecting hardware and software problems in remote systems
CN103714456B (zh) * 2014-01-06 2015-08-19 同济大学 软件行为监控验证系统
CN107077341B (zh) * 2014-10-24 2020-07-14 谷歌有限责任公司 用于基于软件执行跟踪自动加标签的方法和系统
US10467409B2 (en) 2014-12-23 2019-11-05 Mcafee, Llc Identification of malicious execution of a process
KR20160099160A (ko) * 2015-02-11 2016-08-22 한국전자통신연구원 명령어 집합의 행위 패턴을 엔-그램 방식으로 모델링하는 방법, 그 방법으로 동작하는 컴퓨팅 장치, 및 그 방법을 컴퓨팅 장치에서 실행하도록 구성되는 기록 매체에 저장된 프로그램
US10091076B2 (en) 2015-08-25 2018-10-02 Google Llc Systems and methods for configuring a resource for network traffic analysis
US10032031B1 (en) 2015-08-27 2018-07-24 Amazon Technologies, Inc. Detecting unknown software vulnerabilities and system compromises
US10019572B1 (en) * 2015-08-27 2018-07-10 Amazon Technologies, Inc. Detecting malicious activities by imported software packages
RU2651196C1 (ru) * 2017-06-16 2018-04-18 Акционерное общество "Лаборатория Касперского" Способ обнаружения аномальных событий по популярности свертки события
RU2682003C1 (ru) * 2017-11-27 2019-03-14 Федеральное государственное бюджетное учреждение науки Институт системного программирования им. В.П. Иванникова Российской академии наук Способ верификации формальной автоматной модели поведения программной системы
JP6976365B2 (ja) * 2020-01-24 2021-12-08 三菱電機株式会社 車載制御装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003122599A (ja) * 2001-10-11 2003-04-25 Hitachi Ltd 計算機システムおよび計算機システムにおけるプログラム実行監視方法
JP2004126854A (ja) 2002-10-01 2004-04-22 Mitsubishi Electric Corp 攻撃対策装置
CN1323351C (zh) * 2003-01-23 2007-06-27 中兴通讯股份有限公司 一种流程状态机的实现方法
JP2006031109A (ja) 2004-07-12 2006-02-02 Ntt Docomo Inc 管理システム及び管理方法
JP2006053788A (ja) * 2004-08-12 2006-02-23 Ntt Docomo Inc ソフトウェア動作監視装置及びソフトウェア動作監視方法
US8108929B2 (en) * 2004-10-19 2012-01-31 Reflex Systems, LLC Method and system for detecting intrusive anomalous use of a software system using multiple detection algorithms
JP2006146600A (ja) * 2004-11-19 2006-06-08 Ntt Docomo Inc 動作監視サーバ、端末装置及び動作監視システム
JP4913353B2 (ja) * 2005-03-25 2012-04-11 株式会社エヌ・ティ・ティ・ドコモ ソフトウェア動作モデル化装置及びソフトウェア動作監視装置
JP2006330864A (ja) 2005-05-24 2006-12-07 Hitachi Ltd サーバ計算機システムの制御方法
US7849509B2 (en) * 2005-10-07 2010-12-07 Microsoft Corporation Detection of security vulnerabilities in computer programs
JP4732874B2 (ja) * 2005-11-28 2011-07-27 株式会社エヌ・ティ・ティ・ドコモ ソフトウェア動作モデル化装置、ソフトウェア動作監視装置、ソフトウェア動作モデル化方法及びソフトウェア動作監視方法

Also Published As

Publication number Publication date
US20110154487A1 (en) 2011-06-23
JP2008243034A (ja) 2008-10-09
EP2141598A4 (en) 2012-11-21
CN101652755B (zh) 2013-03-27
US8407799B2 (en) 2013-03-26
WO2008117872A1 (ja) 2008-10-02
EP2141598A1 (en) 2010-01-06
CN101652755A (zh) 2010-02-17

Similar Documents

Publication Publication Date Title
JP5081480B2 (ja) ソフトウェア挙動モデル化装置、ソフトウェア挙動モデル化方法、ソフトウェア挙動検証装置及びソフトウェア挙動検証方法
JP4732874B2 (ja) ソフトウェア動作モデル化装置、ソフトウェア動作監視装置、ソフトウェア動作モデル化方法及びソフトウェア動作監視方法
US8453244B2 (en) Server, user device and malware detection method thereof
KR102238612B1 (ko) DoS/DDoS 공격의 탐지 방법, 장치, 서버 및 저장 매체
JP6432210B2 (ja) セキュリティシステム、セキュリティ方法、セキュリティ装置、及び、プログラム
TW201931187A (zh) 統一資源定位符(url)攻擊檢測方法、裝置及電子設備
US20100169973A1 (en) System and Method For Detecting Unknown Malicious Code By Analyzing Kernel Based System Actions
Rathnayaka et al. An efficient approach for advanced malware analysis using memory forensic technique
JP5090661B2 (ja) ソフトウェア動作モデル化装置、ソフトウェア動作監視装置、ソフトウェア動作モデル化方法及びソフトウェア動作監視方法
RU2617654C2 (ru) Система и способ формирования набора антивирусных записей, используемых для обнаружения вредоносных файлов на компьютере пользователя
US9003537B2 (en) CVSS information update by analyzing vulnerability information
WO2014122662A1 (en) Method and product for providing a predictive security product and evaluating existing security products
JP2006527488A5 (ja)
JP6557774B2 (ja) プロセストレースを用いたグラフベースの侵入検知
JP6656211B2 (ja) 情報処理装置、情報処理方法及び情報処理プログラム
JP5779334B2 (ja) 出力制御装置、出力制御プログラム、出力制御方法および出力制御システム
JP6282217B2 (ja) 不正プログラム対策システムおよび不正プログラム対策方法
CN113055407A (zh) 一种资产的风险信息确定方法、装置、设备及存储介质
CN116827677A (zh) 检测异常的系统和方法
JP7019533B2 (ja) 攻撃検知装置、攻撃検知システム、攻撃検知方法および攻撃検知プログラム
CN109995751B (zh) 上网设备标记方法、装置及存储介质、计算机设备
EP2728472B1 (en) User terminal, reliability management server, and method and program for preventing unauthorized remote operation
JP4913353B2 (ja) ソフトウェア動作モデル化装置及びソフトウェア動作監視装置
CN107135199B (zh) 网页后门的检测方法和装置
JP2006277414A (ja) 異常データ検出装置、異常データ検出プログラム及び異常データ検出方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100303

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120605

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120802

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120828

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120903

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150907

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313117

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350