JP4732874B2 - ソフトウェア動作モデル化装置、ソフトウェア動作監視装置、ソフトウェア動作モデル化方法及びソフトウェア動作監視方法 - Google Patents

ソフトウェア動作モデル化装置、ソフトウェア動作監視装置、ソフトウェア動作モデル化方法及びソフトウェア動作監視方法 Download PDF

Info

Publication number
JP4732874B2
JP4732874B2 JP2005342717A JP2005342717A JP4732874B2 JP 4732874 B2 JP4732874 B2 JP 4732874B2 JP 2005342717 A JP2005342717 A JP 2005342717A JP 2005342717 A JP2005342717 A JP 2005342717A JP 4732874 B2 JP4732874 B2 JP 4732874B2
Authority
JP
Japan
Prior art keywords
information
stack
software
order
system call
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.)
Expired - Fee Related
Application number
JP2005342717A
Other languages
English (en)
Other versions
JP2007148818A (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 JP2005342717A priority Critical patent/JP4732874B2/ja
Priority to US11/563,449 priority patent/US8015551B2/en
Priority to EP06024518.0A priority patent/EP1811381B1/en
Priority to CN2006101627824A priority patent/CN1975750B/zh
Publication of JP2007148818A publication Critical patent/JP2007148818A/ja
Application granted granted Critical
Publication of JP4732874B2 publication Critical patent/JP4732874B2/ja
Expired - Fee Related 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/28Error detection; Error correction; Monitoring by checking the correct order of processing
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Testing And Monitoring For Control Systems (AREA)

Description

本発明は、ソフトウェア動作モデル化装置、ソフトウェア動作監視装置、ソフトウェア動作モデル化方法及びソフトウェア動作監視方法に関する。
PCやワークステーション、サーバ、ルータ、携帯電話、PDAなど、すべての計算機は外部もしくは内部からの攻撃にさらされている。代表的な攻撃は、計算機上で実行されているソフトウェアの脆弱性を踏み台にしたものである。攻撃者はソフトウェアの脆弱性を利用した悪意のあるコードを計算機に送り込み、実行中のプロセスの制御を奪い、当該プロセスの権限を利用して不正操作をおこなう。
脆弱性を利用した攻撃、特に未知の攻撃を検知するために、プログラムの正常な動作をモデル化し、プログラム実行中にモデルからの乖離の有無を判定する異常検知システムがある。システムコールは、プロセスがカーネルにシステム上重要な処理を依頼する際に行う命令であり、攻撃者は、プロセスが依頼するシステムコールを用いて、システムに任意の行動をさせる。そのため、プログラムの動作を監視する際にシステムコールの正当性を検証することが行われる。
プログラム実行中にシステムコールの正当性を検証する手法として、例えば、システムコール発行元の関数がメモリのコード領域に存在することを正常とし、プログラム(タスク)から発行されたシステムコール要求を入力し、正当性検査機能へのジャンプアドレスを出力するシステムコールテーブルと、システムコール要求発行時にOSによって特定のメモリ領域に格納されるシステムコール呼び出し元のリターン関数アドレスから、システムコール要求の正当性を判定し判定結果を出力するとともに、不正なシステムコール要求と断定した場合、そのシステムコール要求を棄却する正当性検査機能手段と、正当性検査機能手段の不正システムコール要求判定結果を入力し、対策を講ずる攻撃対策機能手段と、正当性検査機能手段の正当システムコール要求判定結果を入力して呼び出され、命令を実行するシステムコールとを備える攻撃対策装置が開示されている(例えば、特許文献1参照。)。
又、システムコールの正当性を検証するために、コールスタックの状況(スタックに詰まれたリターンアドレスの列)を利用する攻撃検知システムが開示されている(例えば、非特許文献1参照。)。このシステムでは、まずプログラムを事前に実行し、得られた結果からモデルを学習する。プログラム実行中にシステムコール発生時のコールスタックの状況を取得し、システムコール発生時のプログラムカウンタとともに記録したVirtual Stack Listを生成し、又、現在のVirtual Stack Listと一つ前のVirtual Stack Listとの差分情報、すなわち比較対象のコールスタックの状況のスタック最下位より比較検証を順次行い異なるリターンアドレスを検出してから以降のリターンアドレスの列(Virtual Path)とを生成する。生成されたVirtual Stack ListとVirtual Pathからハッシュテーブルを生成し、そのテーブルをプログラムのモデルとして利用する。プログラムを検証する際には、プログラム実行中に、Virtual Stack ListとVirtual Pathを生成し、モデルであるハッシュテーブルとのマッチングを行い、合致していればシステムコール要求に対し許可をし、合致しなければ、異常であると判定する。
特開2004−126854号公報 H.Fengら、 "Anomaly Detection Using Call Stack Information", The proc. of IEEE Symposium on Security and Privacy 2003, pp.62.
LinuxをはじめとするOSにおいては、通常システムコールがWrapper関数を介して発行される。Wrapper関数はコード領域に存在しているため、システムコール発行元の関数は常にコード領域に存在する。又、攻撃として主流であるReturn-to-libc攻撃の場合、攻撃者はlibcへReturnをさせて任意のシステムコールを発行する。以上の状況を考えると、システムコール発行元の関数のアドレスがコード領域にあることで正当とみなしてしまう特許文献1記載の攻撃対策装置では、検知できない攻撃が存在する。又、非特許文献1記載の攻撃検知システムは、コールスタックに詰まれたリターンアドレスを用いて検証をしているため、特許文献1記載の攻撃対策装置よりも詳細なモデル化を行っているといえる。そのため、非特許文献1記載の攻撃検知システムは、特許文献1記載の攻撃対策装置よりも、攻撃の見逃しを低減しているといえる。
しかしながら、非特許文献1記載の攻撃検知システムは、検証時にはハッシュによるマッチングを行っているため、モデル化をする際、学習を十分行わないと、検証時に未学習の動作が起きた時に、たとえ正常であったとしても異常であると判断(誤り検出)せざるを得ず、誤り検出が大きくなってしまう。
又、携帯電話など処理能力の低い計算機において動作を検証するシステムを搭載するためには、限られた資源での処理の高速化、使用メモリ量の抑制が重要となる。
そこで、本発明は、上記の問題に鑑み、誤り検出を低減するとともに、限られた資源での処理の高速化、使用メモリ量の抑制を実現するソフトウェア動作モデル化装置、ソフトウェア動作監視装置、ソフトウェア動作モデル化方法及びソフトウェア動作監視方法を提供することを目的とする。
上記目的を達成するため、本発明の第1の特徴は、(a)ソフトウェアの実行中に、特定のイベントごとに、特定のイベント間で実行された関数コールの発行順を取得もしくは推定する、関数コール順取得手段と、(b)関数コール順取得手段によって取得もしくは推定された関数コールの発行順と特定のイベントとの共起関係を統計的に把握し、把握した共起関係を当該ソフトウェアの動作モデルとして記録する、モデル生成手段とを備えるソフトウェア動作モデル化装置であることを要旨とする。
又、第1の特徴に係るソフトウェア動作モデル化装置の関数コール順取得手段は、関数コールの発行順に加えて、関数リターンの発行順もあわせて取得もしくは推定してもよい。
又、第1の特徴に係るソフトウェア動作モデル化装置の関数コール順取得手段は、特定のイベントが発生した時点でのプロセススタックに詰まれたリターンアドレスをスタックに詰まれた順がわかるように取得し、特定のイベント発生順に記録し、記録した情報を関数コールの発行順とするスタック情報取得手段を含んでもよい。
又、第1の特徴に係るソフトウェア動作モデル化装置の関数コール順取得手段は、iを自然数として、スタック情報取得手段によって取得されたi-1番目のスタック情報とi番目のスタック情報との差分情報を関数コールの発行順として生成するスタック差分情報生成手段を含んでもよい。
又、第1の特徴に係るソフトウェア動作モデル化装置のモデル生成手段は、スタック情報あるいは差分情報の一部を使用して共起関係を統計的に把握してもよい。
又、第1の特徴に係るソフトウェア動作モデル化装置のモデル生成手段は、把握した共起関係から相関規則を生成してもよい。
又、第1の特徴に係るソフトウェア動作モデル化装置のモデル生成手段は、関数コールの発行順に登録された関数コール識別子のうち、頻度の高いものを根ノードの近くに配置し、特定のイベントの識別子を葉ノードとする木構造を構築した木構造情報を生成し、木構造情報と、関数コールの発行順に登録された関数コール識別子の頻度順情報とをあわせて記録することにより、相関規則を生成してもよい。
又、第1の特徴に係るソフトウェア動作モデル化装置において、特定のイベントとは、システムコールであってもよい。
本発明の第2の特徴は、(a)ソフトウェアの実行中に、特定のイベントごとに、特定のイベント間で実行された関数コールの発行順を取得もしくは推定するステップと、(b)関数コール順取得手段によって取得もしくは推定された関数コールの発行順と特定のイベントとの共起関係を統計的に把握し、把握した共起関係を当該ソフトウェアの動作モデルとして記録するステップとを含むソフトウェア動作モデル化方法であることを要旨とする。
本発明の第3の特徴は、(a)監視対象のソフトウェアが発行した特定のイベントと、特定のイベントごとに、特定のイベント間で実行された関数コールの発行順との共起関係を統計的に把握し、把握した共起関係を示した動作モデルを取得する動作モデル取得手段と、(b)ソフトウェアの実行中に、ソフトウェアが実行した関数コールの発行順を取得もしくは推定する、関数コール順取得手段と、(c)関数コール順取得手段が取得した関数コールの発行順と特定のイベントとの共起関係と動作モデルとの乖離を判定する動作監視手段とを備えるソフトウェア動作監視装置であることを要旨とする。
又、第3の特徴に係るソフトウェア動作監視装置の関数コール順取得手段は、特定のイベントが発生した時点でのプロセススタックに詰まれたリターンアドレスをスタックに詰まれた順がわかるように取得し、特定のイベント発生順に記録し、記録した情報を関数コール順とするスタック情報取得手段を含んでもよい。
又、第3の特徴に係るソフトウェア動作監視装置の関数コール順取得手段は、iを自然数として、スタック情報取得手段によって取得されたi-1番目のスタック情報とi番目のスタック情報との差分情報を関数コールの発行順として生成するスタック差分情報生成手段を含んでもよい。
又、第3の特徴に係るソフトウェア動作監視装置の動作モデル取得手段が取得する動作モデルは、監視対象のソフトウェアが発行した特定のイベントと関数コール順との相関規則を示してもよい。
又、第3の特徴に係るソフトウェア動作監視装置の動作モデル取得手段が取得するモデルは、関数コールの発行順に登録された関数コール識別子のうち、頻度の高いものを根ノードの近くに配置し、特定のイベントの識別子を葉ノードとするような木構造を構築した木構造情報と、関数コールの発行順に登録された関数コール識別子の頻度順情報が記されたモデルであって、関数コール順取得手段は、取得した関数コール順を頻度順情報に従って、並べ替え、動作監視手段は、並べ替えた関数コール順が、木構造情報に存在しているかどうかを探索してもよい。
又、第3の特徴に係るソフトウェア動作監視装置の動作監視手段は、監視対象のソフトウェアが発行した特定のイベントと関数コール順との共起関係と、動作モデルが示す相関規則との乖離を監視する際、相関規則が示す信頼度をパラメータとしたスコアを計測し、スコアが、あらかじめ定めた閾値を超えた場合を検知してもよい。
又、第3の特徴に係るソフトウェア動作監視装置において、特定のイベントとは、システムコールであってもよい。
又、第3の特徴に係るソフトウェア動作監視装置は、関数コール順取得手段によって取得もしくは推定された関数コールの発行順と特定のイベントとの共起関係を統計的に把握し、把握した共起関係を当該ソフトウェアの動作モデルとして記録する、モデル生成手段を更に備えてもよい。
本発明の第4の特徴は、(a)監視対象のソフトウェアが発行した特定のイベントと、特定のイベントごとに、特定のイベント間で実行された関数コールの発行順との共起関係を統計的に把握し、把握した共起関係を示した動作モデルを取得するステップと、(b)ソフトウェアの実行中に、ソフトウェアが実行した関数コールの発行順を取得もしくは推定するステップと、(c)関数コール順取得手段が取得した関数コールの発行順と特定のイベントとの共起関係と動作モデルとの乖離を判定するステップとを含むソフトウェア動作監視方法であることを要旨とする。
本発明によると、誤り検出を低減するとともに、限られた資源での処理の高速化、使用メモリ量の抑制を実現するソフトウェア動作モデル化装置、ソフトウェア動作監視装置、ソフトウェア動作モデル化方法及びソフトウェア動作監視方法を提供することができる。
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面の記載において、同一又は類似の部分には、同一又は類似の符号を付している。ただし、図面は模式的なものであることに留意すべきである。
<第1の実施の形態>
(ソフトウェア動作モデル化装置及びソフトウェア動作モデル化方法)
第1の実施形態に係るソフトウェア動作モデル化装置100は、図1に示すように、ソフトウェアの特定のイベント発生(例えば、システムコール)のときに、特定のイベントの間で行われた、ソフトウェアが実行する関数コールの発行順および任意で関数リターンの発行順(以下において、「関数コール順」という。)を把握する関数コール順取得手段104と、関数コール順と特定のイベントの共起関係を統計量として表したものをソフトウェアの動作モデルとして生成するモデル生成手段103とを備える。又、ソフトウェア動作モデル化装置100は、ソフトウェア200の動作をモデル化し、モデル記録装置300に、その動作モデル304を記録する。
関数コール順取得手段104は、スタック情報取得手段101とスタック差分情報生成手段102とを備える。尚、図1に示す関数コール順取得手段104の構成は、一例であり、スタック情報取得手段101はなくてもよい。スタック情報取得手段101がない場合は、プログラムをシングルステップで動作させ、関数コールと任意で関数リターンをフックすればよい。第1の実施の形態では、この構成をとることによって、プログラムをシングルステップで動作させることなく、特定のイベント発生時に停止させる効率のよい関数コール順の把握を採用するものとする。
又、スタック情報取得手段101がある場合、スタック差分情報生成手段102はあってもなくてもよい。スタック差分情報生成手段102がない場合、ソフトウェア動作モデル化装置100は、プロセススタックの情報をもちいた関数コールの順序を把握する装置となる。スタック差分情報生成手段102を備えることにより、関数コールだけでなく関数リターンを含めた関数コール順を把握することができ、より詳細な動作をモデルに含めることができるので、第1の実施の形態では、この構成を採用するものとする。
スタック情報取得手段101は、ソフトウェアの特定のイベント発生(例えば、システムコール201)時に、特定のイベントの識別子(例えば、システムコール番号205)とプロセススタック情報202とを取得し、特定のイベントの識別子(例えば、システムコール番号205)とプロセススタック情報202とをソフトウェア200の動作モデルとして、モデル記録装置300に記録する。又、スタック情報取得手段101は、特定のイベントの識別子(例えば、システムコール番号205)と、スタック情報202とをスタック差分情報生成手段102に伝える。尚、特定のイベント識別子、スタック情報は、動作モデルとして記録されてもされなくてもよい。
ここで、システムコール201は、スタック情報取得手段101が取得する特定のイベントの例であり、システムコール以外にも、jmpやbranch命令、プロセッサ例外時などがあげられる。システムコールは、システム上重要な処理を行うための命令であるため、重要な監視ポイントである。第1の実施の形態では、システムコールすべてを特定のイベントとする。尚、監視するシステムコールをソフトウェアの特性などにあわせて選択してもよい。例えば、execve(プロセスを起動する)を実施するソフトウェアの場合、もし攻撃者にこのソフトウェアの脆弱性をつかれた場合、execveを巧みに発行され、/bin/shを立ち上げられる可能性がある。よって、execveを監視するシステムコールとして選択してもよい。又、writeは、ファイルに書き込むシステムコールであるが、悪意ある攻撃者はwriteを巧みに発行し、ファイルの改ざんに利用する。よって、writeを監視するシステムコールとして選択してもよい。限られた計算資源の中で監視するために、execveやwriteのような非常に重要な監視ポイントだけを選択して監視することは効果的であるといえる。
スタック情報202とは、システムコールが発生した時の、プロセスコールスタックに関数コールで詰まれたリターンアドレスの集合であり、スタックに詰まれた順序がわかる情報である。デバッグツール(Linuxのptraceなど)を用いることにより、ソフトウェアをシステムコール発生ごとに停止させることができ、かつその時点でのレジスタの値をみることができる。例えば、スタックポインタやスタックベースポインタが格納されるレジスタの値を見れば、それぞれが指し示すアドレスを取得することができる。スタックベースポインタの直後のアドレスには、リターンアドレスが詰まれているため、その値をピックアップすることで、プロセススタック情報202を得ることができる。
図2は、スタック情報とシステムコールを取得するスタック情報取得手段101の概念図である。尚、図2に示したスタック例では、スタック下位方向へ詰まれていくものとする。iを自然数とすると、状態i-1から状態iに移る際、システムコールCiが発行される。この時点でのスタック情報Siを取得し、Siの最下位にシステムコール発行時のプログラムカウンタ値Piを追加する。スタック情報取得手段101は、システムコールCiを識別する識別子と、スタック情報Siを例えば上述の仕組みで取得する。
図3は、スタック情報取得手段101の動作例を示すフローチャートである。
スタック情報取得手段101は、監視対象ソフトウェアの終了判定(ステップS100)を経て、ソフトウェアが終了していなければ、ソフトウェアが発行するシステムコールをフックする(ステップS101)。フックするためにptraceなどを用いることができる。システムコールをフックすると、スタック情報を読み込み(ステップS102)、スタック情報を生成し(ステップS103)、スタック情報を記録する(ステップS104)。
ステップS100において、ソフトウェアが終了したと判定した場合は、スタック情報取得手段101の動作を終了する。ここで得られたスタック情報の例を図4に示す。図4の左側の列は、システムコール番号が発行順に記録されている。図4の右側の列は、システムコール番号に対応したスタック情報が記録されている。すなわち、システムコール122番が最初に発行され、この時点でのスタックに詰まれたリターンアドレスは、スタックの下から0x80000001、 0x80000123、 0x80000345の順(すなわち、0x80000345から処理される)である。次に、システムコール4番が発行され、この時点でのスタックに詰まれたリターンアドレスは、スタックの下から、0x80000001、 0x80000456、 0x80000567である。次に、システムコール4番が発行され、この時点でのスタックに詰まれたリターンアドレスは、スタックの下から、0x80000001、 0x80000321、 0x80000654である。同様に、システムコールが発行されるたびに、スタック情報が記録されていく。
スタック差分情報生成手段102は、スタック情報202を取得し、スタック差分情報203をソフトウェア200の動作モデルとしてモデル記録装置300に記録する。又、スタック差分情報生成手段102は、システムコール番号205と、スタック情報202とをモデル生成手段103に伝える。尚、スタック差分情報は、動作モデルとして、記録されてもされなくてもよい。
ここで、スタック差分情報203とは、現在受け取ったスタック情報202と、それ以前に受け取ったスタック情報202との差分を表す情報である。図5は、スタック差分情報203の概念を示す図である。スタック差分情報生成手段102は、iを自然数として、スタック情報Si-1とスタック情報Si(それぞれ図2に示すのものと同じ)を用い、それぞれを差分比較する。すなわち、スタックの最上位から順次比較し、同一の値でない箇所までたどり着いたところ(本例では、最上位から数えて3つ目)で、それ以下を差分情報として抽出する。スタック差分情報Diは、スタック情報Si-1の最下位から「2」まで、スタック情報Siは「3」から最下位までをこの順序で並べたものである。スタック情報Si-1の最下位から「2」までの情報は、状態i-1から状態iにいたるまでに、リターンされた関数の順列であり、又、スタック情報Siの「3」から最下位までの情報は、状態i-1から状態iにいたるまでにコールされた関数の順列である。すなわち、スタック差分情報Diは、システムコールCiが発行されるまでに起こったリターンとコールの順序を推測する情報といえる。ソフトウェア動作監視において、システムコールの発生のみをモデルに加えたものには、偽装攻撃(Mimicry Attack)の脆弱性があるといわれており、その解決のために関数コールやリターンをモデルに加える提案が多数されてきた。関数コールやリターンは、システムコールと比較すると、OSからすれば他のインストラクション(movやjmpなど)と同じレベルの命令であるため、関数コールやリターンを正しく取得するためには、ソフトウェアをステップ実行するしかない。しかし、ステップ実行はソフトウェア実行速度への大きなオーバーヘッドとなり、携帯電話など計算能力が低い計算機では実用的でない。一方、スタック差分情報は、システムコール発生時に取得可能な情報なので、ソフトウェアはシステムコール発生時にとめるよう実行すればよい。これはステップ実行よりもはるかに実行速度へのオーバーヘッドを削減できる。
図6は、スタック差分情報生成手段102の動作例を示すフローチャートである。スタック差分情報生成手段102は、スタック情報終了判定(ステップS200)を経て、終了していなければ、スタック情報を順次読み込み(ステップS201)、過去のスタック情報と現在のスタック情報の差分を比較し(ステップS202)、スタック差分情報を生成(ステップS203)し、スタック差分情報を記録する(ステップS204)。
ステップS200で終了と判断された場合は、スタック差分情報生成手段102の動作を終了する。図7は、スタック差分情報生成手段102に、図4に示すスタック情報が入力された場合、スタック差分情報生成手段102によって生成されたスタック差分情報とシステムコール番号の例である。図4に示す、1行目と2行目を読み込み(図6のステップS201)、差分を比較する(図6のステップS202)。比較する際、スタックの下から順に(すなわち図4において左から)行っていく。すると、1行3列目の0x80000345と、2行3列目の0x80000456、同じく4列目の 0x80000567が異なっていることがわかる。スタック差分情報を生成する(図6のステップS203)際は、過去のスタック情報はスタックの上から(すなわち図4において右から)変化のなくなる行までをその順に並べ替えて抽出(図4の1行目の場合、0x80000345のみとなる)し、記録する(図6のステップS204)。現在のスタック情報は、スタックの下から初めて変化した箇所から、スタックの最上位までをその順で抽出(図4の2行目の場合、0x80000456、0x80000567となる)し、記録する。この記録の際、現在のシステムコール番号(図4の2行目の場合、4)を合わせて記録する。その結果、図7の2行目に表されるようなスタック差分情報が生成される。以下同様に、図4の2行目、3行目から、図7の3行目に表されるようなスタック差分情報が生成される。
モデル生成手段103は、スタック差分情報203を受け、相関情報206をソフトウェア200の動作モデル204として、モデル記録装置300に記録する。
ここで、相関情報206とは、システムコール番号205とスタック差分情報203との共起関係を表す情報であり、例えば、N-gramや、相関規則等が挙げられる。N-gramを利用して共起関係を把握する場合は、例えば、「“A New Method of N-gram Statistics for Large Number of n and Automatic Extraction of Words and Phrases from Large Text Data of Japanese”、長尾真著、In proceedings of the 15th International Conference on Computational Linguistics(1994) pp611-615」に記載のアルゴリズムを用いることにより、実施できる。
第1の実施の形態では、相関情報206として、相関規則を生成するものとして説明する。相関規則とは、トランザクションセットから、あるアイテム集合Aが起きたときのあるアイテムBの出現確率P(すなわち、条件付確率)を求め、トランザクションセット全体でのルールとしたものである。ここで、アイテム集合Aを前例、アイテムBを結果、出現確率Pを信頼度と呼ぶ。本実施形態では、スタック差分情報203から前例を抽出し、システムコール番号205を結果とした相関規則を生成する。
図7は、上述したように、スタック差分情報203の例である。左側の列はシステムコール番号であり、右側の列は、システムコール番号に対応するスタック差分情報である。システムコール番号が共に4である2行目と3行目に着目すると、0x80000567はスタック差分情報としてどちらにも存在するので、0x80000567を前例とし、4を結果とした場合は、信頼度100%である。この場合、図8に示すように、相関規則のリストとして、0x80000567→4 100%と記載することとする。同様に、0x80000567と0x80000456の組み合わせは、スタック差分情報としてどちらにも存在するので、0x80000567、0x80000456の組み合わせを前例とし、4を結果とした場合は、信頼度100%であるため、0x80000567、0x80000456→4 100%と記載する。前例は、スタック差分情報上のリターンアドレスの組み合わせであり、組み合わせ数全てに対して信頼度を導出するためには、非常に多くの処理が必要となるが、AprioriやFPGrowthなどの相関規則導出アルゴリズムを用いることにより効率よく相関規則を得ることができる。
FP-Growthは、計算高速化のために、最初にデータベースを読み込み、後の計算で必要となるアイテムセットの支持度を主記憶中に保持するFP-Treeアルゴリズムを利用している。
FP-Treeアルゴリズムの詳細は、例えば、「“Mining frequent patterns without candidate generation”、Hanら著、In proceedings of SIGMOD International Conference on Management of Data, pp1-12, ACM, 2000」に記載されている。ここでは概念を説明する。FP-tree は、頻出アイテムのみで構成される木構造データである。FP-Treeをデータベースから構築するために、まず、頻出アイテムを抽出する。データベースを1回スキャンし、抽出された頻出アイテムを指示度の値により、頻度が降順になるように並び替えたリスト(このリストをF-list とする)を生成する。そして、空(null)のラベルを持つ木のルートを作る(この木をT とする)。
こうして得られた頻出アイテムとルートノードを利用して、FP-tree 構造を構築するための2 回目のスキャンが行われる。具体的には、以下の手順でFP-tree 構造を構築する。
事前にカレントノードをルートノードとしておく。
各トランザクションに対して、
(1)頻出アイテムを抽出し、アイテムをF-listに従って並べ替える(アイテムリストと呼ぶ)。このアイテムリストを用いて、Tを成長させることになる。
(2)アイテムリストから順次アイテムを取り出し、T上の「カレントノード」が、取り出したアイテムと同じ子を持っていれば、その子のカウントを1 増やし、カレントノードをその子に移す。そうでないときは、新しくカウント1 を持つ子を作り、カレントノードをその子に移す。
(3)アイテムリストの最後の要素まで、上記(2)の操作を繰り返す。最後の要素が終わったら、対象のトランザクションを変更し、全てのトランザクションにおいて処理を終えるまで(1)の操作を行う。
(4)全てのトランザクションで処理を終えたら、同じ名前を持つノードにリンクを付ける。更に、各頻出アイテムai に対して、先頭のai を指すヘッダテーブルを作成する。
以上の操作を行って構築されたFP-Treeを用いて、頻出パターンをマイニングしていく。FP-Treeの構築の例を図9に示す。
ここで、モデル生成手段103は、システムコール識別子を値としてもつ葉ノードを追加したFP-Treeを構築し、このFP-Treeをプログラムの動作モデルとして生成する。各ノードには、アイテムの頻度が記されているので、支持度、信頼度の計算も容易に行える。生成したモデルは、プログラムの識別子・F-listとともに記録する。
このようにモデルを構成することによって、同一の前例をまとめることができ、効率のよいモデルを生成することができる。
以上の方法は、FP-Treeアルゴリズムを採用して木構造を生成したが、ルート側に頻度の高いアイテムが配置されるようにすればよいので、他のアルゴリズムを適用してもよい。
尚、上述の方法例では、相関規則を導出する際、前例としてスタック差分情報上のリターンアドレスすべてを利用したが、ソフトウェア実行環境などを考慮し、すべてを利用しなくてもよい。例えば、処理能力の低いプロセッサ上でモデル化を行う場合、システムコールが発行する直前のN個だけを抽出することで、モデルの生成コストを削減できる。又、システムコールの種類ごとにNの値を変えることも考えられる。又、たとえば、LinuxKernel2.4以上の場合を考えると、スタック差分情報上のリターンアドレスのうち、最後のリターンアドレスは、システムコールを行うためのWrapper関数によるものであり、システムコールとの共起関係が非常に強い。このリターンアドレスを含めたまま相関規則を生成してしまうと、非常に偏ったモデル、すなわちWrapper関数とシステムコールの関係のみがモデルとして得られてしまう恐れがある。そこで、相関規則を生成する際には、最後のリターンアドレスを除外することが考えられる。又、あるアドレス空間(たとえば、ライブラリがロードされた空間)内にリターンアドレスがはいっている場合を抽出することなども考えられる。
尚、上述の相関規則は、AprioriやFPGrowthなどを利用して導出していたが、このアルゴリズムを利用すると、関数コール順の順序情報を考慮しないが、関数コール順の順番を前例に含めてもよい。例えば、図7に示すスタック差分情報の2行目と3行目に着目すると、左から2番目の0x80000456が同一の値を示しており、どちらもシステムコールが4である。そこで、2番目=0x80000456→4 100%という規則を生成できる(図10参照)。このように順序を考慮することで、より詳細な情報をモデルとして組み入れることができる。
第1の実施の形態では、図8に示す相関規則をソフトウェアの動作モデルとしてモデル記録装置300に記録する。
図11は、モデル生成手段103の動作例を示すフローチャートである。第1の実施の形態では、相関規則を生成する。モデル生成手段103は、スタック差分情報を取得し、スタック差分情報の終了判定(ステップS300)を経て、終了していなければ、スタック差分情報を順次読み込む(ステップS301)。ステップS300で終了と判定されていれば、そこから相関規則を生成し(ステップS302)、記録する(ステップS303)。ステップS302では、各スタック差分情報と関連するシステムコール番号の組を1トランザクションとみなし、スタック差分情報から前例を抽出し、図8に示すように、システムコール番号を結果とする相関規則を生成する。
(作用及び効果)
第1の実施の形態に係るソフトウェア動作モデル化装置及びソフトウェア動作モデル化方法によると、ソフトウェアの実行中に、特定のイベントごとに、特定のイベント間で実行された関数コール順を取得もしくは推定し、取得もしくは推定された関数コール順と特定のイベントとの共起関係を統計的に把握し、把握した共起関係を当該ソフトウェアの動作モデルとして記録することができる。
このようにソフトウェア動作モデル化装置を構成する、あるいはソフトウェア動作モデル化方法をとることで、詳細レベルの監視を行い、かつ、未学習動作に対して統計的な判断を行うための統計量を、動作モデルとして出力することができる。
特に、相関規則は共起関係を小さいデータ量で表すことが可能であるため、軽量なソフトウェア動作監視システムに有効なモデルを生成することができる。携帯電話など、記憶装置の容量が限られる端末に有効である。プログラムは論理的に構成されているため、関数コールの順序(あるいは文脈)はプログラムの動作をモデル化するうえで非常に重要な要素である。しかし、一般的に相関規則は順序を考慮しない。そこで、本発明は、モデル生成手段が、共起関係を把握する際に、関数コールの順序も考慮して把握することを特徴とする。このように構成することで、順序を考慮しない相関規則よりも詳細なモデル化を行うことができる。
システムコール命令やTrap命令は、システム上重要な処理をカーネルに依頼する際におこなわれる命令であり、プログラムの動作監視上重要なイベントである。相関規則において、前例を関数コール順、特定のイベント(Trap命令、システムコール)を結果とした相関規則を生成することで、動作の監視をすべきイベントごとの特性を捕らえたモデルを出力することができる。
又、第1の実施の形態に係るソフトウェア動作モデル化装置の関数コール順取得手段は、特定のイベントが発生した時点でのプロセススタックに詰まれたリターンアドレスをスタックに詰まれた順がわかるように取得し、特定のイベント発生順に記録し、記録した情報を関数コールの発行順とするスタック情報取得手段を含む。
通常、関数コールを完全にフックし、順序をとらえようとすると、プログラムをシングルステップで動作させる必要があるが、このように構成することによって、特定のイベント発生時にのみプログラムを停止しさえすればよい。例えば、特定のイベントがシステムコールやTrap命令の場合、デバッグツール(Linuxのptraceなど)を用いると、その特定のイベント時にプログラムの動作を停止し、その時点でのレジスタの値を把握することができる。レジスタには、スタックポインタやベースポインタの値が格納されているため、その値を利用することで、リターンアドレスを詰まれた順を理解しながら取得することができる。このリターンアドレスの順は、特定のイベント発生にいたるまでにプロセスが発行した関数コールの順を示しており、この情報を利用することで、特定のイベント間での関数コール順を推定することができる。ここでいう推定とは、関数コール順の一部を把握するという意味である。特定のイベント間でAという関数がコールされ、リターンまで行われると、特定のイベント発生時のプロセススタックにはAという関数は情報としてのらない。そのため、一部を把握することになる。
又、第1の実施の形態に係るソフトウェア動作モデル化装置の関数コール順取得手段は、iを自然数として、スタック情報取得手段によって取得されたi-1番目のスタック情報とi番目のスタック情報との差分情報を関数コールの発行順として生成するスタック差分情報生成手段を含む。
このように構成することによって、関数コールだけでなく、関数リターンまでを含む関数コール順を推定することができる。関数リターンを含めることで、詳細なモデル化を行うことができる。
又、第1の特徴に係るソフトウェア動作モデル化装置のモデル生成手段は、スタック情報あるいは差分情報の一部を使用して共起関係を統計的に把握してもよい。
このように一部を使用することにより、モデルの生成コストを低減することができる。
又、第1の特徴に係るソフトウェア動作モデル化装置のモデル生成手段は、把握した共起関係から相関規則を生成してもよい。
このように相関規則を生成することにより、限られた資源での処理の高速化、使用メモリ量の抑制を実現することができる。
又、共起関係に加えて、スタック情報、スタック差分情報を合わせてソフトウェアの動作モデルとして記録することで、非特許文献1に記載の攻撃検知システムで利用する動作モデルを加えることができる。
又、第1の特徴に係るソフトウェア動作モデル化装置のモデル生成手段は、関数コールの発行順に登録された関数コール識別子のうち、頻度の高いものを根ノードの近くに配置し、特定のイベントの識別子を葉ノードとする木構造を構築した木構造情報を生成し、木構造情報と、関数コールの発行順に登録された関数コール識別子の頻度順情報とをあわせて記録することができる。このため、同一の前例をまとめることができるため、モデルサイズを小さくすることができる。
<第2の実施の形態>
(ソフトウェア動作監視装置及びソフトウェア動作監視方法)
第2の実施の形態に係るソフトウェア動作監視装置400は、図12に示すように、ソフトウェアの動作モデルが記録されたモデル記録装置300と接続し、ソフトウェア200の動作を監視し、監視結果504を出力する。ソフトウェア動作監視装置400は、ソフトウェアの特定のイベント発生(例えば、システムコール)のときに、特定のイベントの間で行われた、ソフトウェアが実行する関数コール順を把握する関数コール順取得手段404と、ソフトウェア200に対応した動作モデル600をモデル記録装置300から取得する動作モデル取得手段405と、動作モデル取得手段405によって取得された動作モデルと、システムコール番号501及び関数コール順504を受け、システムコール番号501と関数コール順504の動作モデル600からの乖離の有無を判定し、監視結果504を出力する動作監視手段403とを備える。
関数コール順取得手段404は、ソフトウェア200がシステムコールなどを発行するたびにシステムコール番号501とその時点のスタック情報502を取得し、スタック情報502を生成するスタック情報取得手段401と、システムコール番号501とスタック情報502を受け、過去と現在のスタック情報との差分を比較し、その差分を記録したスタック差分情報503を生成するスタック差分情報生成手段402とを備える。尚、図12に示す関数コール順取得手段404の構成は、一例であり、スタック情報取得手段401はなくてもよい。スタック情報取得手段401がない場合は、プログラムをシングルステップで動作させ、関数コールと任意で関数リターンをフックすればよい。第2の実施の形態では、この構成をとることによって、プログラムをシングルステップで動作させることなく、特定のイベント発生時に停止させる効率のよい関数コール順の把握を採用するものとする。尚、スタック情報取得手段401がある場合、スタック差分情報生成手段402はなくてもよい。スタック差分情報生成手段402がない場合、ソフトウェア動作監視装置400は、プロセススタックの情報をもちいた関数コールの順序を把握する装置となる。スタック差分情報生成手段402を構成に含めることで、関数コールだけでなく関数リターンを含めた関数コール順を把握することができ、より詳細な動作を監視することができるので、第2の実施の形態では、この構成を採用するものとする。又、動作モデル600は、システムコール番号と関数コール順との共起関係を示す相関情報206(例えばN-gramや相関規則)であるとする。この動作モデル600には、任意でスタック情報、スタック差分情報を含めてもよい。スタック情報、スタック差分情報を含めることで、非特許文献1の手法のように、マッチングによる監視を行うことができる。相関情報206は統計情報であるため、この相関情報が学習によって得られたものであるとすると、学習済みの動作に対して、異常であると判断する可能性がある。非特許文献1の手法のようにマッチングを行うことによって、学習済みの動作に対する異常判断を完全に排除することができる。一方相関情報206は、未学習動作の判断を推定するために用いる。
図13は、ソフトウェア動作監視装置400の動作例を示すフローチャートである。ソフトウェア動作監視装置は、ソフトウェアの終了判定(ステップS400)を経て、ソフトウェアが終了していなければ、スタック情報取得し(ステップS401)、スタック差分情報を生成し(ステップS402)、動作監視をする(ステップS403)。監視結果判定をし(ステップS404)、Errorと判定された場合は、Errorに応じた処理(ステップS405)をし、ステップS400へ戻る。ステップS404にてErrorと判定されなかった場合は、ステップS400へ戻る。ここでError処理とは、例えば、ソフトウェアの動作を終了する、メモリダンプを取るなどが挙げられるが、第2の実施の形態では、単に標準出力にErrorの種類を出力し、ソフトウェアの動作を終了するものとする。
図14は、スタック情報取得手段401の動作例を示すフローチャートである。スタック情報取得手段401は、監視対象のソフトウェアが発行するシステムコールをフックし(ステップS500)、その時点でのスタックを読み込み(ステップS501)、スタック情報を生成し、記録する(ステップS502)。スタック情報とは、システムコールが発生した時の、プロセススタックに詰まれたリターンアドレスの集合であり、スタックに詰まれた順序で並べられた情報である。Linuxにはptraceというデバッグツールがあるが、このツールを用いることにより、ソフトウェアをシステムコール発生ごとにとめることができ、かつその時点でのレジスタの値をみることができる。例えば、スタックポインタやスタックベースポインタが格納されるレジスタの値を見れば、それぞれが指し示すアドレスを取得することができる。スタックベースポインタの直後のアドレスには、リターンアドレスが詰まれているため、その値をピックアップすることで、スタック情報を得ることができる。
図15は、スタック差分情報生成手段102の動作例を示すフローチャートである。スタック差分情報生成手段102は、スタック情報を順次読み込み(ステップS600)、過去のスタック情報と現在のスタック情報の差分を比較し(ステップS601)、スタック差分情報を生成する(ステップS602)。図7は、スタック差分情報生成手段402に図4に示すスタック情報を入力した場合、スタック差分情報生成手段402によって生成されたスタック差分情報とシステムコール番号の例である。図4において、1行目と2行目を読み込み(ステップS600)、差分を比較する(ステップS601)。比較する際、スタックの下から順に(すなわち、図4において左から)行っていく。1行3列目の0x80000345と、2行3列目の0x80000456、同じく4列目の 0x80000567が異なっていることがわかる。スタック差分情報を生成する(ステップS602)際、過去のスタック情報はスタックの上から(すなわち、図4において右から)変化のなくなる行までをその順に並べ替えて抽出(図4の1行目の場合、0x80000345のみとなる)し、記録する。現在のスタック情報は、スタックの下から始めて変化した箇所から、スタックの最上位までをその順で抽出(図4の2行目の場合、0x80000456、0x80000567となる)し、記録する。この記録の際、現在のシステムコール番号(図4の2行目の場合4)を合わせて記録する。結果、図7の2行目に表されるようなスタック差分情報が生成される。以下同様に、図4の2行目、3行目から、図7の3行目に表されるようなスタック差分情報が生成される。
動作モデル取得手段405は、監視対象のソフトウェアが発行した特定のイベントと、特定のイベントごとに、特定のイベント間で実行された関数コール順との共起関係を統計的に把握し、把握した共起関係を示した動作モデルを取得する。
図16は、動作監視手段403の動作例を示すフローチャートである。動作監視手段403は、監視対象のソフトウェアに適した動作モデルをモデル記録から読み込む(ステップS701)。第2の実施の形態では、動作モデルとして、スタック差分情報から前例を抽出し、システムコール番号を結果とした相関規則をとるものとする。次に、得られた動作モデルを利用し、スタック差分情報生成手段402が生成したスタック差分情報が、相関規則にある前例とマッチするものがあるか否かを検証する(ステップS702)。例えばスタック差分情報上のリターンアドレスの全組み合わせに対して相関規則の前例とのマッチングを行うことでステップS702を実現できる。マッチしなければ、ER3(スタック差分エラー)を監視結果として出力する。マッチすれば、マッチした相関規則を利用して次のステップを実行する。次に、監視対象ソフトウェアが発行したシステムコールが、前例とのマッチが確認された相関規則の結果にマッチするか否かを検証する(ステップS703)。マッチする場合は、動作監視手段の処理を終了する。これは、前例と結果がマッチしたことを正常と判断するからである。ステップS703にてマッチしないと判定された場合は、前例とのマッチが確認された相関規則に記された信頼度をAnomaly Scoreに加算する(ステップS704)。信頼度の加算については、前例とのマッチが確認された相関規則に記された信頼度全てを加算することや、マッチしたリターンアドレス数が最も多かった相関規則に記された信頼度を加算することや「” The Zero-Frequency Problem: Estimating the Probabilities of Novel Events in Adaptive Text Compression”, Ian H. Wittenら著, IEEE Transactions on Information theory, vol. 37, No.4, JULY 1991」に記載のZero Frequencyを利用して新しいイベントが発生する確率の逆数を加算してもよい。Zero Frequencyは、学習時に得られた相関情報から、新しいイベントが発生する確率を推定するものであり、学習時に前例にマッチするトランザクション数nと、その前例の際におきた結果の種類数rを用い、novel event発生確率はr/nで近似できるというものである。この確率が動作モデルに含まれているとすると、もし、ステップS702、ステップS703の判定により、前例、結果にマッチしなかった場合、ステップS704において、novel event発生確率の逆n/rをAnomaly Scoreとして加算することになる。最後にこのAnomalyScoreが与えられた閾値を超えるか否かの判定を行う(ステップS705)。閾値を超えた場合は、ER4(相関規則エラー)を監視結果として出力する。閾値を超えなかった場合は、動作監視手段の処理を終了する。
図17は、動作監視手段403の別の動作例を示すフローチャートである。動作監視手段403は、非特許文献1の手法を利用した監視手段であり、学習済みの動作を異常と判断することなく判定しながら、未学習動作の判断を統計的に推定することができる。
ステップS701で読み込む動作モデルには、システムコール番号とスタック情報とスタック差分情報と相関情報が含まれているとする。まず監視対象のソフトウェアが発行したシステムコールが、動作モデルに存在しているか否かを検証する(ステップS703)。システムコールはOSでも番号で識別されるため、その仕組みを利用して検証すればよい。存在していなければ、ER1(システムコールエラー)を監視結果として出力する。存在していれば、番号で識別されたシステムコールを発行したスタック情報の中に、監視対象のソフトウェアが発行したシステムコールの時点でのスタック情報(スタック情報取得手段401が取得したもの)と同一のものがあるか否かを検証する(ステップS707)。存在していなければ、ER2(スタックエラー)を監視結果として出力する。存在していれば、監視対象ソフトウェアが発行したシステムコールの時点で取得されたスタック情報から生成されたスタック差分情報(スタック差分情報生成手段が生成したもの)が、動作モデル内に存在しているか否かを検証する(ステップS708)。存在していれば、ソフトウェア動作は正常であると判断し、動作監視手段の処理を終了する。存在していなければ、ステップS702〜ステップS705を処理する。
尚、モデルが図9で示したようなFP-Tree構造で構築されており、かつ、F-Listがある場合、以下のように動作監視装置を構成してもよい。ここで、相関規則の木構造は、図18に示すような表現がされているとする。
スタック情報取得手段401は、スタックにつまれたリターンアドレスを取得していく際(図14のステップS501)に、F-Listにしたがって、各リターンアドレスにランク情報を付与する(図19上部参照)。
スタック差分情報生成手段402は、スタック差分情報を生成した後に、リターンアドレスに付与したランク情報に従って、スタック差分情報上のリターンアドレスを昇順に並べ替える(図19下部参照)。
動作監視手段403は、こうして得られたスタック差分情報を利用して、FP-Tree構造で構築されたモデル内をサーチする(図16のステップS702)。FP-Tree構造は、頻度の高いアイテムがルートの近くに存在するよう構築された木であるため、スタック差分情報をF-Listに従って並べ替えることによって、幅優先探索が可能となる(図20及び図21参照)。又、木構造をとっているため、前例(スタック差分情報内のリターンアドレスの組み合わせ)と共起関係の強いシステムコールを効率よくサーチすることができる。又、モデルの葉の近くには頻度の小さいアイテムが配置されるため、幅優先探索を途中で省いても精度への影響が低い。又、頻度の高いアイテムがルートの近くに配置されるので、キャッシュ効率が高くなる。
(作用及び効果)
第2の実施の形態に係るソフトウェア監視装置及びソフトウェア監視方法によると、監視対象のソフトウェアが発行した特定のイベントと、特定のイベントごとに、特定のイベント間で実行された関数コールの発行順との共起関係を統計的に把握し、把握した共起関係を示した動作モデルを取得し、ソフトウェアの実行中に、ソフトウェアが実行した関数コールの発行順を取得もしくは推定し、関数コール順取得手段が取得した関数コールの発行順と特定のイベントとの共起関係と動作モデルとの乖離を判定することができる。このように構成することによって、統計的にソフトウェアの動作を検証することができるため、非特許文献1記載の攻撃検知システムではできなかった未学習動作の検証を行うことができ、誤り検出率を低減することができる。
又、第2の実施の形態に係るソフトウェア動作監視装置の関数コール順取得手段は、特定のイベントが発生した時点でのプロセススタックに詰まれたリターンアドレスをスタックに詰まれた順がわかるように取得し、特定のイベント発生順に記録し、記録した情報を関数コール順とするスタック情報取得手段を含む。
このように構成することによって、特定のイベントが発生した時点でプログラムを停止させ検証することができる。シングルステップで動作させる必要がなくなるため、検証速度があがる。
又、第2の実施の形態に係るソフトウェア動作監視装置の関数コール順取得手段は、iを自然数として、スタック情報取得手段によって取得されたi-1番目のスタック情報とi番目のスタック情報との差分情報を関数コールの発行順として生成するスタック差分情報生成手段を含む。
このように構成することによって、特定のイベントが発生した時点でプログラムを停止させるという手法の下で、関数コールの順序だけでなく、関数リターンの順序もあわせて動作検証することができる。
又、第2の実施の形態に係るソフトウェア動作監視装置の動作モデル取得手段が取得する動作モデルは、監視対象のソフトウェアが発行した特定のイベントと関数コール順との相関規則を示してもよい。
相関規則は共起関係を小さいデータ量で表すことが可能であるため、軽量なソフトウェア動作監視システムに有効なモデルを利用することができる。携帯電話など、記憶装置の容量が限られる端末に有効である。プログラムは論理的に構成されているため、関数コールの順序(あるいは文脈)はプログラムの動作をモデル化するうえで非常に重要な要素である。しかし、一般的に相関規則は順序を考慮しない。そこで、モデル生成手段が、共起関係を把握する際に、関数コールの順序(例えば、プロセススタックにリターンアドレスが詰まれた順序)を考慮して把握してもよい。このように構成することで、順序を考慮しない相関規則よりも詳細なモデルで監視を行うことができる。
又、第2の実施の形態に係るソフトウェア動作監視装置の動作モデル取得手段が取得するモデルは、関数コールの発行順に登録された関数コール識別子のうち、頻度の高いものを根ノードの近くに配置し、特定のイベントの識別子を葉ノードとするような木構造を構築した木構造情報と、関数コールの発行順に登録された関数コール識別子の頻度順情報が記されたモデルであって、関数コール順取得手段は、取得した関数コール順を頻度順情報に従って、並べ替え、動作監視手段は、並べ替えた関数コール順が、木構造情報に存在しているかどうかを探索する。
このため、前例と共起関係の強い結果(システムコールなど)を効率よくサーチすることができる。又、モデルの葉に近づくほど、頻度が小さいアイテムであるため、サーチを途中で省いたとしても精度への影響が低い。また、頻度の高いアイテムがルートの近くにあるので、キャッシュ効率が向上する。
又、第2の実施の形態に係るソフトウェア動作監視装置の動作監視手段は、監視対象のソフトウェアが発行した特定のイベントと関数コール順との共起関係と、動作モデルが示す相関規則との乖離を監視する際、相関規則が示す信頼度をパラメータとしたスコアを計測し、スコアが、あらかじめ定めた閾値を超えた場合を検知してもよい。
ここで、信頼度とは、前例がおきたときの結果がおきる確率、すなわち条件付確率である。信頼度を利用すると、例えば、相関規則に記載された前例と合致した動作が起きているにもかかわらず、同規則に記載された結果と非合致である確率を求めることができる。この非合致である確率は、異常動作が起きている確率とみなすこともできるため、異常動作を検知するスコアとして有効に働く。このように構成することによって、未学習動作の異常性を数値であらわすことができるため、閾値設定を行うことで利用シーンに適した検知精度を持つ攻撃検知システムを提供することができる。
<第3の実施の形態>
(ソフトウェア動作監視装置及びソフトウェア動作監視方法)
第3の実施の形態に係るソフトウェア動作監視装置1000は、図22に示すように、第2の実施の形態に係るソフトウェア動作監視装置400に加え、モデル生成手段1040を備える。
モデル生成手段1040は、関数コール順と特定のイベントの共起関係を統計量として表したものをソフトウェアの動作モデル204として生成する。
関数コール順取得手段1010、動作監視手段1050、動作モデル取得手段1060について、第2の実施の形態と同様である機能については、ここでは説明を省略する。
ソフトウェア動作監視装置1000は、ソフトウェア200の動作を学習し、モデルを生成するモデル化状態と、モデルを利用してソフトウェアの動作を監視する監視状態に、その動作を分けることができる。モデル化状態時には、関数コール順取得手段1010と、モデル生成手段1040を動作させ、監視状態時には、関数コール順取得手段1010と動作監視手段1050を動作させる。又、関数コール順取得手段1010も、モデル化状態と監視状態がある。
関数コール順取得手段1010は、ソフトウェア200がシステムコールなどを発行するたびに特定のイベント識別子(システムコールの場合、システムコール番号501)とその時点のスタック情報502を取得し、スタック情報502を生成するスタック情報取得手段1020と、システムコール番号501とスタック情報502を受け、過去と現在のスタック情報との差分を比較し、その差分を記録したスタック差分情報503を生成するスタック差分情報生成手段1020とで構成される。尚、関数コール順取得手段1010の構成は、一例であり、スタック情報取得手段1020はなくてもよい。関数コール順取得手段1010がない場合は、プログラムをシングルステップで動作させ、関数コールと任意で関数リターンをフックすればよい。第3の実施の形態では、この構成をとることによって、プログラムをシングルステップで動作させることなく、特定のイベント発生時に停止させる効率のよい関数コール順の把握を採用するものとする。尚、スタック情報取得手段1020がある場合、スタック差分情報生成手段1020はなくてもよい。スタック差分情報生成手段1020がない場合、ソフトウェア動作監視装置はプロセススタックの情報をもちいた関数コールの順序を把握する装置となる。スタック差分情報生成手段1020を構成に含めることで、関数コールだけでなく関数リターンを含めた関数コール順を把握することができ、より詳細な動作を監視することができるので、第3の実施の形態では、この構成を採用するものとする。
ここで、システムコール201は、スタック情報取得手段1020が取得する特定のイベントの例であり、システムコール以外にも、jmpやbranch命令、プロセッサ例外時などがあげられる。システムコールは、システム上重要な処理を行うための命令であるため、重要な監視ポイントである。本実施形態では、システムコールを特定のイベントとする。
モデル化状態時のスタック情報取得手段の動作例は、図3において説明した動作と同様である。又、モデル化状態時のスタック差分情報生成手段の動作例は、図6において説明した動作と同様である。又、監視状態時のソフトウェア動作監視装置の動作例は、図13において説明した動作と同様である。又、監視状態時のスタック情報取得手段の動作例は、図14において説明した動作と同様である。又、監視状態時のスタック差分情報生成手段の動作例は、図15において説明した動作と同様である。
モデル生成手段1040は、モデル化状態時にのみ実行され、スタック差分情報503を受け、相関情報206をソフトウェア200の動作モデル204としてモデル記録装置300に記録する。
動作モデル204は、システムコール番号と関数コール順との共起関係を示す相関情報206(例えばN-gramや相関規則)であるとする。この動作モデル204には、任意でスタック情報、スタック差分情報を含めてもよい。スタック情報、スタック差分情報を含めることで、非特許文献1の手法のように、マッチングによる監視を行うことができる。相関情報206は統計情報であるため、この相関情報が学習によって得られたものであるとすると、学習済みの動作に対して、異常であると判断する可能性がある。非特許文献1の手法のようにマッチングを行うことによって、学習済みの動作に対する異常判断を完全に排除することができる。一方、相関情報206は未学習動作の判断を推定するために用いる。
モデル生成手段の動作例は、図11において説明した動作と同様である。を示すフローチャートである。
動作監視手段1050は、監視状態時にのみ実行され、特定のイベントと、関数コール順を受け、ソフトウェア200に対応した動作モデル204をモデル記録装置300から更に受け、特定のイベントと関数コール順との共起関係と動作モデル204との乖離の有無を判定し、監視結果504を出力する。
動作監視手段の動作例は、図16及び図17において説明した動作と同様である。
(作用及び効果)
又、第3の実施の形態に係るソフトウェア動作監視装置は、関数コール順取得手段によって取得もしくは推定された関数コールの発行順と特定のイベントとの共起関係を統計的に把握し、把握した共起関係を当該ソフトウェアの動作モデルとして記録する、モデル生成手段を更に備える。
通常、プログラムの動作は動作環境に応じて異なる。例えば、LinuxやWindows(登録商標)のようなOS環境の違い、IA-32やARMのようなCPUの違いである。そこで、第3の実施の形態に係るソフトウェア動作監視装置のように装置を構成することによって、同一の動作環境でモデル化と監視を行うことができる。
第1の実施の形態に係るソフトウェア動作モデル化装置の構成ブロック図である。 第1の実施の形態に係るスタック情報を説明する概念図である。 第1の実施の形態に係るスタック情報取得手段の動作を示すフローチャートである。 第1の実施の形態に係るスタック情報の一例である。 第1の実施の形態に係るスタック差分情報を説明する概念図である。 第1の実施の形態に係るスタック差分情報生成手段の動作を示すフローチャートである。 第1の実施の形態に係るスタック差分情報の一例である。 第1の実施の形態に係る相関規則のリストの一例である(その1)。 第1及び第2の実施の形態に係るF-List及びFP-Tree構造の一例である。 第1の実施の形態に係る相関規則のリストの一例である(その2)。 第1の実施の形態に係るモデル生成手段の動作を示すフローチャートである。 第2の実施の形態に係るソフトウェア動作監視装置の構成ブロック図である。 第2の実施の形態に係るソフトウェア動作監視装置の動作を示すフローチャートである。 第2の実施の形態に係るスタック情報取得手段の動作を示すフローチャートである。 第2の実施の形態に係るスタック差分情報生成手段の動作を示すフローチャートである。 第2の実施の形態に係る動作監視手段の動作を示すフローチャートである(その1)。 第2の実施の形態に係る動作監視手段の動作を示すフローチャートである(その2)。 第2の実施の形態に係る相関規則の木構造の一例である。 第2の実施の形態に係るスタック情報及びスタック差分情報の一例である。 第2の実施の形態に係るFP-Tree構造で構築されたモデル内のサーチ方法を説明する図である(その1)。 第2の実施の形態に係るFP-Tree構造で構築されたモデル内のサーチ方法を説明する図である(その2)。 第3の実施の形態に係るソフトウェア動作監視装置の構成ブロック図である。
符号の説明
100…ソフトウェア動作モデル化装置
101…スタック情報取得手段
102…スタック差分情報生成手段
103…モデル生成手段
104…関数コール順取得手段
200…ソフトウェア
201…システムコール
202…スタック情報
203…スタック差分情報
204…動作モデル
205…システムコール番号
206…相関情報
300…モデル記録装置
304…動作モデル
400…ソフトウェア動作監視装置
401…スタック情報取得手段
402…スタック差分情報生成手段
403…動作監視手段
404…関数コール順取得手段
405…動作モデル取得手段
501…システムコール番号
502…スタック情報
503…スタック差分情報
504…関数コール順
600…動作モデル
1000…ソフトウェア動作監視装置
1010…関数コール順取得手段
1020…スタック情報取得手段
1030…スタック差分情報生成手段
1040…モデル生成手段
1050…動作監視手段
1060…動作モデル取得手段



Claims (15)

  1. ソフトウェアの動作をモデル化するソフトウェア動作モデル化装置であって、
    前記ソフトウェア動作モデル化装置は、
    前記ソフトウェアの実行中に、特定のイベントごとに、特定のイベント間で実行されたシステムコールのシステムコール番号及びスタック情報を取得する関数コール順取得手段と、
    前記関数コール順取得手段によって取得された前記システムコール番号、及び現在受け取ったスタック情報と、以前に受け取ったスタック情報との差分を表す情報であるスタック差分情報の共起関係を表す相関情報を当該ソフトウェアの動作モデルとして記録するモデル生成手段と
    を備え、
    前記相関情報は、トランザクションセットから、アイテム集合Aが起きたときのアイテムBの出現確率を求め、前記トランザクションセット全体でのルールとしたものであり、
    前記モデル生成手段は、前記アイテム集合Aを前例、前記アイテムBを結果、前記出現確率を信頼度とし、前記スタック差分情報及び前記スタック差分情報に関連するシステムコール番号の組をトランザクションと見なし、前記スタック差分情報からシステムコールが発行する直前のN個の情報を抽出するとともに、最後のリターンアドレスを除外することにより、前例を抽出し、前記システムコール番号を結果とした相関規則を前記相関情報として生成することを特徴とするソフトウェア動作モデル化装置。
  2. 前記関数コール順取得手段は、関数コールだけでなく関数リターンを含めた関数コールの発行順もあわせて取得することを特徴とする請求項1に記載のソフトウェア動作モデル化装置。
  3. 前記関数コール順取得手段は、特定のイベントが発生した時点でのプロセススタックに詰まれたリターンアドレスをスタックに詰まれた順がわかるように取得し、特定のイベント発生順に記録し、記録した情報を前記関数コールの発行順とするスタック情報取得手段を含むことを特徴とする請求項1に記載のソフトウェア動作モデル化装置。
  4. 前記関数コール順取得手段は、iを自然数として、前記スタック情報取得手段によって取得されたi-1番目のスタック情報とi番目のスタック情報との差分情報を前記システムコールの発行順として生成するスタック差分情報生成手段を含むことを特徴とする請求項3に記載のソフトウェア動作モデル化装置。
  5. 前記モデル生成手段は、前記スタック情報あるいは前記差分情報の一部を使用して前記共起関係を取得することを特徴とする請求項3又は4に記載のソフトウェア動作モデル化装置。
  6. 前記モデル生成手段は、前記システムコールの発行順に登録されたシステムコール識別子のうち、頻度の高いものを根ノードの近くに配置し、特定のイベントの識別子を葉ノードとする木構造を構築した木構造情報を生成し、
    前記木構造情報と、前記システムコールの発行順に登録されたシステムコール識別子の頻度順情報とをあわせて記録することにより、前記相関規則を生成することを特徴とする請求項1に記載のソフトウェア動作モデル化装置。
  7. ソフトウェア動作モデル化装置が、ソフトウェアの実行中に、特定のイベントごとに、特定のイベント間で実行されたシステムコール番号と、スタック情報を取得するステップと、
    前記ソフトウェア動作モデル化装置が、前記関数コール順取得手段によって取得された前記システムコール番号、及び現在受け取ったスタック情報と、以前に受け取ったスタック情報との差分を表す情報であるスタック差分情報の共起関係を表す相関情報を当該ソフトウェアの動作モデルとして記録するステップと
    を備え、
    前記相関情報は、トランザクションセットから、アイテム集合Aが起きたときのアイテムBの出現確率を求め、前記トランザクションセット全体でのルールとしたものであり、
    前記記録するステップでは、前記アイテム集合Aを前例、前記アイテムBを結果、前記出現確率を信頼度とし、前記スタック差分情報及び前記スタック差分情報に関連するシステムコール番号の組をトランザクションと見なし、前記スタック差分情報からシステムコールが発行する直前のN個の情報を抽出するとともに、最後のリターンアドレスを除外することにより、前例を抽出し、前記システムコール番号を結果とした相関規則を前記相関情報として生成することを特徴とするソフトウェア動作モデル化方法。
  8. ソフトウェアの動作を監視するソフトウェア動作監視装置であって、
    前記ソフトウェア動作監視装置は、
    監視対象のソフトウェアが発行した特定のイベントと、特定のイベントごとに、特定のイベント間で実行されたシステムコールのシステムコール番号、及び現在受け取ったスタック情報と、以前に受け取ったスタック情報との差分を表す情報であるスタック差分情報の共起関係を表す相関情報を当該ソフトウェアの動作モデルとして取得する動作モデル取得手段と、
    前記ソフトウェアの実行中に、特定のイベントごとに、特定のイベント間で実行された前記システムコール番号及び前記スタック情報を取得し、取得した前記スタック情報に基づいて前記スタック差分情報を生成するスタック差分情報生成手段を含む関数コール順取得手段と、
    生成された前記スタック差分情報が、相関規則にある前例とマッチするものがあるか否かを検証することによって、前記共起関係と前記動作モデルとの乖離を判定する動作監視手段と
    を備え
    前記前例は、前記スタック差分情報からシステムコールが発行する直前のN個の情報を抽出するとともに、最後のリターンアドレスを除外したものであることを特徴とするソフトウェア動作監視装置。
  9. 前記関数コール順取得手段は、特定のイベントが発生した時点でのプロセススタックに詰まれたリターンアドレスをスタックに詰まれた順がわかるように取得し、特定のイベント発生順に記録し、記録した情報を前記システムコールの発行順とするスタック情報取得手段を含むことを特徴とする請求項8に記載のソフトウェア動作監視装置。
  10. 前記関数コール順取得手段は、iを自然数として、前記スタック情報取得手段によって取得されたi-1番目のスタック情報とi番目のスタック情報との差分情報を前記システムコールの発行順として生成するスタック差分情報生成手段を含むことを特徴とする請求項9に記載のソフトウェア動作監視装置。
  11. 前記動作モデル取得手段が取得する動作モデルは、監視対象のソフトウェアが発行した特定のイベントと前記システムコールの発行順との相関規則を示すことを特徴とする請求項8〜10のいずれか1項に記載のソフトウェア動作監視装置。
  12. 前記動作モデル取得手段が取得するモデルは、前記システムコールの発行順に登録されたシステムコール識別子のうち、頻度の高いものを根ノードの近くに配置し、特定のイベントの識別子を葉ノードとするような木構造を構築した木構造情報と、前記システムコールの発行順に登録されたシステムコール識別子の頻度順情報が記されたモデルであって、
    前記関数コール順取得手段は、取得したシステムコールの発行順を前記頻度順情報に従って並べ替え、
    前記動作監視手段は、並べ替えた前記システムコール順が、木構造情報に存在しているかどうかを探索することを特徴とする請求項11に記載のソフトウェア動作監視装置。
  13. 前記動作監視手段は、監視対象のソフトウェアが発行した特定のイベントと前記システムコールの発行順との共起関係と、前記動作モデルが示す相関規則との乖離を監視する際、
    相関規則が示す信頼度をパラメータとしたスコアを計測し、
    前記スコアが、あらかじめ定めた閾値を超えた場合を検知することを特徴とする請求項8〜12のいずれか1項に記載のソフトウェア動作監視装置。
  14. 前記関数コール順取得手段によって取得された前記システムコール番号と、前記スタック情報とのスタック差分情報との共起関係を表す相関情報を当該ソフトウェアの動作モデルとして記録するモデル生成手段を更に備えることを特徴とする請求項8〜13のいずれか1項に記載のソフトウェア動作監視装置。
  15. ソフトウェア動作監視装置が、監視対象のソフトウェアが発行した特定のイベントと、特定のイベントごとに、特定のイベント間で実行されたシステムコール番号、及び現在受け取ったスタック情報と、以前に受け取ったスタック情報との差分を表す情報であるスタック差分情報の共起関係を表す相関情報を当該ソフトウェアの動作モデルとして取得するステップと、
    前記ソフトウェア動作監視装置が、前記ソフトウェアの実行中に、特定のイベントごとに、特定のイベント間で実行された前記システムコール番号及び前記スタック情報を取得し、取得した前記スタック情報に基づいて前記スタック差分情報を生成するステップと、
    前記ソフトウェア動作監視装置が、生成された前記スタック差分情報が、相関規則にある前例とマッチするものがあるか否かを検証することによって、前記共起関係と前記動作モデルとの乖離を判定するステップと
    を含み、
    前記前例は、前記スタック差分情報からシステムコールが発行する直前のN個の情報を抽出するとともに、最後のリターンアドレスを除外したものであることを特徴とするソフトウェア動作監視方法。
JP2005342717A 2005-11-28 2005-11-28 ソフトウェア動作モデル化装置、ソフトウェア動作監視装置、ソフトウェア動作モデル化方法及びソフトウェア動作監視方法 Expired - Fee Related JP4732874B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2005342717A JP4732874B2 (ja) 2005-11-28 2005-11-28 ソフトウェア動作モデル化装置、ソフトウェア動作監視装置、ソフトウェア動作モデル化方法及びソフトウェア動作監視方法
US11/563,449 US8015551B2 (en) 2005-11-28 2006-11-27 Software operation modeling device, software operation monitoring device, software operation modeling method, and software operation monitoring method
EP06024518.0A EP1811381B1 (en) 2005-11-28 2006-11-27 Software operation modeling and monitoring device and method
CN2006101627824A CN1975750B (zh) 2005-11-28 2006-11-28 软件动作模型化装置和方法以及软件动作监视装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005342717A JP4732874B2 (ja) 2005-11-28 2005-11-28 ソフトウェア動作モデル化装置、ソフトウェア動作監視装置、ソフトウェア動作モデル化方法及びソフトウェア動作監視方法

Publications (2)

Publication Number Publication Date
JP2007148818A JP2007148818A (ja) 2007-06-14
JP4732874B2 true JP4732874B2 (ja) 2011-07-27

Family

ID=38093510

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005342717A Expired - Fee Related JP4732874B2 (ja) 2005-11-28 2005-11-28 ソフトウェア動作モデル化装置、ソフトウェア動作監視装置、ソフトウェア動作モデル化方法及びソフトウェア動作監視方法

Country Status (4)

Country Link
US (1) US8015551B2 (ja)
EP (1) EP1811381B1 (ja)
JP (1) JP4732874B2 (ja)
CN (1) CN1975750B (ja)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5081480B2 (ja) * 2007-03-28 2012-11-28 株式会社エヌ・ティ・ティ・ドコモ ソフトウェア挙動モデル化装置、ソフトウェア挙動モデル化方法、ソフトウェア挙動検証装置及びソフトウェア挙動検証方法
US8613084B2 (en) * 2007-09-18 2013-12-17 Mcafee, Inc. System, method, and computer program product for detecting at least potentially unwanted activity based on execution profile monitoring
US8464207B2 (en) * 2007-10-12 2013-06-11 Novell Intellectual Property Holdings, Inc. System and method for tracking software changes
US9483645B2 (en) * 2008-03-05 2016-11-01 Mcafee, Inc. System, method, and computer program product for identifying unwanted data based on an assembled execution profile of code
US9256514B2 (en) * 2009-02-19 2016-02-09 Nvidia Corporation Debugging and perfomance analysis of applications
US8484625B2 (en) * 2009-04-01 2013-07-09 Motorola Mobility Llc Method and apparatus to vet an executable program using a model
JP4572259B1 (ja) 2009-04-27 2010-11-04 株式会社フォティーンフォティ技術研究所 情報機器、プログラム及び不正なプログラムコードの実行防止方法
US8302210B2 (en) * 2009-08-24 2012-10-30 Apple Inc. System and method for call path enforcement
US10177934B1 (en) 2009-09-04 2019-01-08 Amazon Technologies, Inc. Firmware updates inaccessible to guests
US8214653B1 (en) 2009-09-04 2012-07-03 Amazon Technologies, Inc. Secured firmware updates
US8887144B1 (en) 2009-09-04 2014-11-11 Amazon Technologies, Inc. Firmware updates during limited time period
US9565207B1 (en) 2009-09-04 2017-02-07 Amazon Technologies, Inc. Firmware updates from an external channel
US8971538B1 (en) 2009-09-08 2015-03-03 Amazon Technologies, Inc. Firmware validation from an external channel
US8601170B1 (en) 2009-09-08 2013-12-03 Amazon Technologies, Inc. Managing firmware update attempts
US8300641B1 (en) 2009-09-09 2012-10-30 Amazon Technologies, Inc. Leveraging physical network interface functionality for packet processing
US8959611B1 (en) 2009-09-09 2015-02-17 Amazon Technologies, Inc. Secure packet management for bare metal access
US8381264B1 (en) 2009-09-10 2013-02-19 Amazon Technologies, Inc. Managing hardware reboot and reset in shared environments
US9189363B2 (en) * 2010-10-07 2015-11-17 Mcafee, Inc. System, method, and computer program product for monitoring an execution flow of a function
TWI419003B (zh) * 2010-11-12 2013-12-11 Univ Nat Chiao Tung 自動化分析與分類惡意程式之方法及系統
JP5708260B2 (ja) * 2011-05-30 2015-04-30 富士通株式会社 プログラム・モデル検査におけるdbシーケンス・バックトラック制御プログラム、方法、及び装置
US8707434B2 (en) 2011-08-17 2014-04-22 Mcafee, Inc. System and method for indirect interface monitoring and plumb-lining
US9027124B2 (en) * 2011-09-06 2015-05-05 Broadcom Corporation System for monitoring an operation of a device
CN103679035B (zh) * 2012-09-24 2016-12-28 腾讯科技(深圳)有限公司 安全性检测方法与装置
US9721120B2 (en) 2013-05-14 2017-08-01 Apple Inc. Preventing unauthorized calls to a protected function
US9477575B2 (en) 2013-06-12 2016-10-25 Nvidia Corporation Method and system for implementing a multi-threaded API stream replay
US9680842B2 (en) * 2013-08-09 2017-06-13 Verisign, Inc. Detecting co-occurrence patterns in DNS
US9876804B2 (en) 2013-10-20 2018-01-23 Cyber-Ark Software Ltd. Method and system for detecting unauthorized access to and use of network resources
US9712548B2 (en) 2013-10-27 2017-07-18 Cyber-Ark Software Ltd. Privileged analytics system
US9497206B2 (en) * 2014-04-16 2016-11-15 Cyber-Ark Software Ltd. Anomaly detection in groups of network addresses
US9602528B2 (en) * 2014-05-15 2017-03-21 Nec Corporation Discovering and constraining idle processes
CN104063661A (zh) * 2014-06-09 2014-09-24 来安县新元机电设备设计有限公司 一种计算机软件安全防护方法
US9565203B2 (en) * 2014-11-13 2017-02-07 Cyber-Ark Software Ltd. Systems and methods for detection of anomalous network behavior
KR20160099160A (ko) * 2015-02-11 2016-08-22 한국전자통신연구원 명령어 집합의 행위 패턴을 엔-그램 방식으로 모델링하는 방법, 그 방법으로 동작하는 컴퓨팅 장치, 및 그 방법을 컴퓨팅 장치에서 실행하도록 구성되는 기록 매체에 저장된 프로그램
US10223536B2 (en) * 2016-12-29 2019-03-05 Paypal, Inc. Device monitoring policy
JP7023807B2 (ja) * 2018-07-04 2022-02-22 株式会社東芝 管理システム、情報処理装置、設定管理方法、およびプログラム
CN109446721B (zh) * 2018-11-16 2023-01-24 厦门大学 基于标识符软件线程执行顺序排列的机床工艺交互算法
US11106800B1 (en) 2018-11-30 2021-08-31 Capsule8, Inc. Detecting kernel exploits
CN113053493B (zh) * 2019-12-27 2024-05-14 无锡祥生医疗科技股份有限公司 数据处理平台
KR102552728B1 (ko) * 2021-05-12 2023-07-07 성균관대학교산학협력단 파일 단편화를 고려한 시스템 콜 순서 기반의 i/o 스케줄링 방법 및 이를 수행하는 시스템

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0529328A (ja) * 1991-07-24 1993-02-05 Mitsubishi Electric Corp 半導体装置及びその製造方法
WO2004075060A1 (ja) * 2003-02-21 2004-09-02 Tabei, Hikaru コンピュータウィルス検出装置

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4525780A (en) * 1981-05-22 1985-06-25 Data General Corporation Data processing system having a memory using object-based information and a protection scheme for determining access rights to such information
US5603031A (en) * 1993-07-08 1997-02-11 General Magic, Inc. System and method for distributed computation based upon the movement, execution, and interaction of processes in a network
US5628016A (en) * 1994-06-15 1997-05-06 Borland International, Inc. Systems and methods and implementing exception handling using exception registration records stored in stack memory
US5764985A (en) * 1994-12-13 1998-06-09 Microsoft Corp Notification mechanism for coordinating software extensions
US5748964A (en) * 1994-12-20 1998-05-05 Sun Microsystems, Inc. Bytecode program interpreter apparatus and method with pre-verification of data type restrictions
JP2850808B2 (ja) * 1995-10-31 1999-01-27 日本電気株式会社 データ処理装置およびデータ処理方法
KR100584964B1 (ko) * 1996-01-24 2006-05-29 선 마이크로시스템즈 인코퍼레이티드 스택 메모리 구조에서의 캐싱 장치
US5958004A (en) * 1997-10-28 1999-09-28 Microsoft Corporation Disabling and enabling transaction committal in transactional application components
US5978587A (en) * 1997-11-13 1999-11-02 Unisys Corp. Method for propagating source code locations into objects in a compiler
US5978586A (en) * 1997-11-26 1999-11-02 Unisys Corp. Method for tracking changes in source locations in a compiler
US6230312B1 (en) * 1998-10-02 2001-05-08 Microsoft Corporation Automatic detection of per-unit location constraints
GB9825102D0 (en) * 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
JP3513038B2 (ja) * 1998-12-10 2004-03-31 富士通株式会社 命令フェッチ制御装置
US7162741B2 (en) * 2001-07-30 2007-01-09 The Trustees Of Columbia University In The City Of New York System and methods for intrusion detection with dynamic window sizes
JP2004126854A (ja) 2002-10-01 2004-04-22 Mitsubishi Electric Corp 攻撃対策装置
JP4547861B2 (ja) 2003-03-20 2010-09-22 日本電気株式会社 不正アクセス防止システム、不正アクセス防止方法、および不正アクセス防止プログラム
US7533371B1 (en) * 2003-09-22 2009-05-12 Microsoft Corporation User interface for facilitating performance analysis for processing
US7496908B2 (en) * 2004-01-14 2009-02-24 International Business Machines Corporation Method and apparatus for optimizing code execution using annotated trace information having performance indicator and counter information
US7526757B2 (en) * 2004-01-14 2009-04-28 International Business Machines Corporation Method and apparatus for maintaining performance monitoring structures in a page table for use in monitoring performance of a computer program
US7990888B2 (en) * 2005-03-04 2011-08-02 Cisco Technology, Inc. System and methods for network reachability detection
US8694621B2 (en) * 2005-08-19 2014-04-08 Riverbed Technology, Inc. Capture, analysis, and visualization of concurrent system and network behavior of an application
US20080148241A1 (en) * 2006-10-11 2008-06-19 Scott Thomas Jones Method and apparatus for profiling heap objects

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0529328A (ja) * 1991-07-24 1993-02-05 Mitsubishi Electric Corp 半導体装置及びその製造方法
WO2004075060A1 (ja) * 2003-02-21 2004-09-02 Tabei, Hikaru コンピュータウィルス検出装置

Also Published As

Publication number Publication date
US20070204257A1 (en) 2007-08-30
EP1811381A3 (en) 2010-07-14
US8015551B2 (en) 2011-09-06
JP2007148818A (ja) 2007-06-14
EP1811381B1 (en) 2017-08-16
CN1975750A (zh) 2007-06-06
CN1975750B (zh) 2010-06-16
EP1811381A2 (en) 2007-07-25

Similar Documents

Publication Publication Date Title
JP4732874B2 (ja) ソフトウェア動作モデル化装置、ソフトウェア動作監視装置、ソフトウェア動作モデル化方法及びソフトウェア動作監視方法
JP5090661B2 (ja) ソフトウェア動作モデル化装置、ソフトウェア動作監視装置、ソフトウェア動作モデル化方法及びソフトウェア動作監視方法
US11061756B2 (en) Enabling symptom verification
JP4859558B2 (ja) コンピュータシステムの制御方法及びコンピュータシステム
JP5081480B2 (ja) ソフトウェア挙動モデル化装置、ソフトウェア挙動モデル化方法、ソフトウェア挙動検証装置及びソフトウェア挙動検証方法
US20170091461A1 (en) Malicious code analysis method and system, data processing apparatus, and electronic apparatus
EP3566166B1 (en) Management of security vulnerabilities
JP2006031109A (ja) 管理システム及び管理方法
JP6282217B2 (ja) 不正プログラム対策システムおよび不正プログラム対策方法
JP4913353B2 (ja) ソフトウェア動作モデル化装置及びソフトウェア動作監視装置
JP7019533B2 (ja) 攻撃検知装置、攻撃検知システム、攻撃検知方法および攻撃検知プログラム
JP2006146600A (ja) 動作監視サーバ、端末装置及び動作監視システム
CN113132393A (zh) 异常检测方法、装置、电子设备以及存储介质
CN111104670B (zh) 一种apt攻击的识别和防护方法
EP3812940B1 (en) Vulnerability analyzer
JP4849941B2 (ja) ソフトウェア動作モデル化装置
JP5679347B2 (ja) 障害検知装置、障害検知方法、及びプログラム
KR101934381B1 (ko) 해킹툴 탐지 방법 및 이를 수행하는 사용자 단말 및 서버
KR102175651B1 (ko) 해킹툴 탐지 방법 및 이를 수행하는 사용자 단말 및 서버
JP2008305085A (ja) ソフトウェア挙動モデル化装置、ソフトウェア挙動モデル化方法、ソフトウェア挙動検証装置及びソフトウェア挙動検証方法
JP2007334767A (ja) ソフトウェア動作モデル化装置及びソフトウェア動作モデル化方法
CN110909351A (zh) 硬件协助的控制结构不变式挖掘方法
CN116893957A (zh) 通过基于控制流程图中的指令块的连通性的动态检测使用软件覆盖反馈进行模糊测试
RU111920U1 (ru) Система автоматического тестирования правил определения вредоносных объектов
CN117909956A (zh) 一种硬件辅助的嵌入式***程序控制流安全认证方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081002

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101012

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101026

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110325

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: 20110419

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: 20110421

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

Free format text: PAYMENT UNTIL: 20140428

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4732874

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees