JP4461771B2 - 異常挙動検出装置および異常挙動検出方法ならびにプログラム、希少挙動部分系列計算装置 - Google Patents

異常挙動検出装置および異常挙動検出方法ならびにプログラム、希少挙動部分系列計算装置 Download PDF

Info

Publication number
JP4461771B2
JP4461771B2 JP2003376657A JP2003376657A JP4461771B2 JP 4461771 B2 JP4461771 B2 JP 4461771B2 JP 2003376657 A JP2003376657 A JP 2003376657A JP 2003376657 A JP2003376657 A JP 2003376657A JP 4461771 B2 JP4461771 B2 JP 4461771B2
Authority
JP
Japan
Prior art keywords
behavior
series
rare
storage unit
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.)
Expired - Fee Related
Application number
JP2003376657A
Other languages
English (en)
Other versions
JP2005141459A (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2003376657A priority Critical patent/JP4461771B2/ja
Publication of JP2005141459A publication Critical patent/JP2005141459A/ja
Application granted granted Critical
Publication of JP4461771B2 publication Critical patent/JP4461771B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、先行する挙動の系列が後続の挙動に影響を与え得る動作対象の異常挙動検出装置および異常挙動検出方法に関し、特に計算機プログラムの実行時情報から珍しい挙動を検出することによって、バグ箇所の特定やバグの検出を容易にした異常挙動検出装置および異常挙動検出方法に関する。
計算機プログラムに対する従来の異常挙動検出装置の一例が、特許文献1に記載されている。図23に示すように、この従来の異常挙動検出装置は、実行可能化手段2001と、プログラム再実行手段2002と、依存関係解析手段2003と、分割検証制御手段2004と、正誤判断受付手段2005とから構成されている。
このような構成を有する従来の異常挙動検出装置は次のように動作する。まず、実行可能化手段2001が、ソースプログラム2006を計算機上で実行可能な形式の実行可能プログラム2007に変換し、プログラム再実行手段2002で実行する。実行可能プログラム2007を実行した結果、プログラム中のある実行時点において、ある変数の値に誤りがあったとする。この誤りの発生している実行時点を異常点と呼ぶ。依存関係解析手段2003は、実行開始時点から異常点に至るまでに実行された命令系列の中から、異常点における誤った変数の値に影響を与えた命令系列を抽出する。この抽出には、プログラムスライシングと呼ばれる技術が用いられる。プログラムスライシングは、データフローと制御フローという2つのフローを解析することで、変数の値や命令の制御に関する依存関係を解析する技術である。
ある変数の値が決定する際に他の変数の値が利用されているとき、この変数間のデータの依存関係のことをデータフローという。一方、一般のプログラムは条件分岐やループを持つが、ある命令が実行される原因となった条件分岐やループの制御の流れを制御フローという。制御フローは、条件文やループ文がもつ条件式中の変数の値によって決定される。このとき、変数の値に関するデータフローや、この変数の値を決定した代入文に関する制御フローをたどっていくことで、変数値の決定に影響を及ぼした可能性のある命令群を抽出することができる。
依存関係解析手段2003は、実行開始時点から異常点に至るまでに実行された命令の系列を二分する分割点を決定する。プログラム再実行手段2002は、分割点までプログラムを実行し、分割点における各変数の値や制御フローの情報を取得して、依存関係解析手段2003に渡す。依存関係解析手段2003は、受けとった変数値や制御フローに誤りがないかを、正誤判断受付手段2005を通じてユーザに問い合わせる。分割検証制御手段2004は、ユーザからの問合せ結果を受けて、異常の原因が分割点の前後のどちらにあるかを判断する。分割点におけるデータや制御フローに誤りがあった場合は、分割点を異常点とみなして、依存関係解析手段2003による分割操作を繰り返す。分割点におけるデータや制御フローに誤りがなかった場合は、分割点を実行開始時点として、分割操作を繰り返す。
このように、分割後の問合せと問合せ結果の検証を繰り返すことで、異常の原因となった命令や命令の不足を機械的に特定することができる。
特開平9―305432号公報
特許文献1では、プログラムスライシングと呼ばれる技術を用いることにより、多少なりとも異常の原因を特定する作業を容易にしてはいるものの、未だ異常の原因を特定するまでには一般に長い時間を必要とする。その理由は、ある命令文Sの結果に影響を与えている命令文の集合は、命令文Sの前に現れる命令文の大部分になる場合が多く、それらのどれが異常原因かを調べる作業は、結局、プログラム全体を調べるのとあまり違わないからである。
また、特許文献1による方法では、異常の観測された変数に関するデータフローと制御フロー情報を解析する必要があるため、変数値の異常がユーザに観測されてからでないと解析が始められないという課題もある。
[発明の目的]
本発明の第1の目的は、異常の原因を素早く特定できる異常挙動検出装置およびその方法を提供することにある。
本発明の第2の目的は、異常が実際に観測される前の、異常の疑いの段階で、異常の検出や分析が可能な異常挙動検出装置およびその方法を提供することにある。
本発明の第1の異常挙動検出装置は、先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、処理対象挙動系列の集合として記憶手段に記憶する入力手段と、検索対象の挙動を指定する挙動指定手段と、前記記憶手段に記憶された処理対象挙動系列の集合から、前記指定された検索対象の挙動を含む挙動系列を検索し、新たな処理対象挙動系列の集合として前記記憶手段に記憶する挙動系列検索手段と、前記記憶手段に記憶された処理対象挙動系列の集合中に高い確率で現れる挙動を検出する挙動到達原因究明手段と、を備えることを特徴とする。
本発明の第2の異常挙動検出装置は、第1の異常挙動検出装置において、前記挙動指定手段として、前記入力された挙動系列の集合から希少挙動部分系列を検出する希少挙動部分系列計算手段を備えることを特徴とする。
本発明の第3の異常挙動検出装置は、第1の異常挙動検出装置において、前記挙動指定手段として、検索対象の挙動をユーザから受け付ける挙動受付手段を備えることを特徴とする。
本発明の第4の異常挙動検出装置は、第1の異常挙動検出装置において、前記挙動指定手段として、前記入力された挙動系列の集合から希少挙動部分系列を検出してユーザに提示する希少挙動部分系列計算手段と、検索対象の挙動をユーザから受け付ける挙動受付手段とを備えることを特徴とする。
本発明の第5の異常挙動検出装置は、第1乃至第4の何れかの異常挙動検出装置において、前記動作主体から新たに得られる挙動を監視し、前記挙動到達原因究明手段で検出された挙動と一致する挙動を検出した際に警告を発する予兆検出手段を備えることを特徴とする。
本発明の第6の異常挙動検出装置は、第1乃至第4の何れかの異常挙動検出装置において、前記挙動到達原因究明手段で検出された挙動から、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうち処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出する挙動相関関係発見手段を備えることを特徴とする。
本発明の第7の異常挙動検出装置は、第1乃至第4の何れかの異常挙動検出装置において、前記挙動到達原因究明手段で検出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出する依存関係解析手段と、該依存関係解析手段で抽出された挙動から、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうち処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出する挙動相関関係発見手段とを備えることを特徴とする。
本発明の第8の異常挙動検出装置は、第6または第7の異常挙動検出装置において、前記動作主体から新たに得られる挙動を監視し、前記挙動相関関係発見手段で抽出された挙動と一致する挙動を検出した際に警告を発する予兆検出手段を備えることを特徴とする。
本発明の第9の異常挙動検出装置は、第1乃至第4の何れかの異常挙動検出装置において、前記挙動到達原因究明手段で検出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出する依存関係解析手段を備えることを特徴とする。
本発明の第10の異常挙動検出装置は、第1乃至第4の何れかの異常挙動検出装置において、前記挙動到達原因究明手段で検出された挙動のうち、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうちの処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出する挙動相関関係発見手段と、該挙動相関関係発見手段で抽出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出する依存関係解析手段とを備えることを特徴とする。
本発明の第11の異常挙動検出装置は、第9または第10の異常挙動検出装置において、前記動作主体から新たに得られる挙動を監視し、前記依存関係解析手段で抽出された挙動と一致する挙動を検出した際に警告を発する予兆検出手段を備えることを特徴とする。
本発明の第12の異常挙動検出装置は、先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、希少挙動部分系列を検出する希少挙動部分系列計算手段と、前記挙動系列の集合を入力し、前記検出された希少挙動部分系列を含む挙動系列の集合を抽出する挙動系列検索手段と、前記抽出された挙動系列の集合から、前記希少挙動部分系列より前に高い確率で出現する部分系列を、希少挙動部分系列到達原因として検出する挙動到達原因究明手段と、を備えることを特徴とする。
本発明の第13の異常挙動検出装置は、検索対象となる挙動または挙動部分系列を、ユーザから受け付ける挙動受付手段と、先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、処理対象挙動系列の集合として記憶手段に記憶する入力手段と、前記挙動受付手段でユーザから受け付けた挙動または挙動部分系列を含む挙動系列の集合を、前記記憶手段に記憶された処理対象挙動系列の集合から検索し、該検索された集合を新たな処理対象挙動系列の集合として前記記憶手段に記憶する挙動系列検索手段と、前記記憶手段に記憶された処理対象挙動系列の集合から、共通の部分系列を抽出してユーザに提示する挙動到達原因究明手段と、前記記憶手段に記憶された処理対象挙動系列の集合から、希少挙動部分系列を検出してユーザに提示する希少挙動部分系列計算手段と、を備えることを特徴とする。
本発明の第14の異常挙動検出装置は、先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、希少挙動部分系列を検出する希少挙動部分系列計算手段と、前記挙動系列の集合を入力し、前記検出された希少挙動部分系列を含む挙動系列の集合を抽出する挙動系列検索手段と、前記抽出された挙動系列の集合から、前記希少挙動部分系列より前に高い確率で出現する部分系列を、希少挙動部分系列到達原因として検出する挙動到達原因究明手段と、前記動作主体から新たに得られる挙動を監視し、希少挙動部分系列到達原因として検出された前記部分系列と一致する挙動が前記動作主体で行われた際に警告を発する予兆検出手段を備えることを特徴とする。
本発明の第15の異常挙動検出装置は、検索対象となる挙動または挙動部分系列を、ユーザから受け付ける挙動受付手段と、先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、処理対象挙動系列の集合として記憶手段に記憶する入力手段と、前記挙動受付手段でユーザから受け付けた挙動または挙動部分系列を含む挙動系列の集合を、前記記憶手段に記憶された処理対象挙動系列の集合から検索し、該検索された集合を新たな処理対象挙動系列の集合として前記記憶手段に記憶する挙動系列検索手段と、前記記憶手段に記憶された処理対象挙動系列の集合中に高い確率で現れる挙動を検出する挙動到達原因究明手段と、前記動作主体から新たに得られる挙動を監視し、前記挙動到達原因究明手段で検出された挙動が前記動作主体で行われた際に警告を発する予兆検出手段とを備えることを特徴とする。
本発明の第16の異常挙動検出装置は、先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、希少挙動部分系列を検出する希少挙動部分系列計算手段と、前記挙動系列の集合を入力し、前記検出された希少挙動部分系列を含む第1の挙動系列の集合および前記検出された希少挙動部分系列を含まない第2の挙動系列の集合を抽出する挙動系列検索手段と、前記抽出された第1の挙動系列の集合から、前記希少挙動部分系列より前に高い確率で出現する部分系列を検出する挙動到達原因究明手段と、前記挙動到達原因究明手段で検出された部分系列から、前記第2の挙動系列の集合に出現しない或いは殆ど出現しない挙動を、強い相関のある希少挙動到達原因として検出する挙動相関関係発見手段と、を備えることを特徴とする。
本発明の第17の異常挙動検出装置は、先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、希少挙動部分系列を検出する希少挙動部分系列計算手段と、前記挙動系列の集合を入力し、前記検出された希少挙動部分系列を含む挙動系列の集合を抽出する挙動系列検索手段と、前記抽出された挙動系列の集合から、前記希少挙動部分系列より前に高い確率で出現する部分系列を、希少挙動部分系列到達原因として検出する挙動到達原因究明手段と、前記挙動到達原因究明手段で検出された部分系列に現れる挙動のうち、前記挙動系列に現れる挙動と依存関係にある挙動を、被依存挙動到達原因として求める依存関係解析手段と、を備えることを特徴とする。
本発明の第18の異常挙動検出装置は、先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、希少挙動部分系列を検出する希少挙動部分系列計算手段と、前記挙動系列の集合を入力し、前記検出された希少挙動部分系列を含む第1の挙動系列の集合および前記検出された希少挙動部分系列を含まない第2の挙動系列の集合を抽出する挙動系列検索手段と、前記抽出された第1の挙動系列の集合中に高い確率で出現する部分系列を検出する挙動到達原因究明手段と、前記挙動到達原因究明手段で検出された部分系列から、前記第2の挙動系列の集合に出現しない或いは殆ど出現しない挙動を、強い相関のある希少挙動到達原因として検出する挙動相関関係発見手段と、前記挙動相関関係発見手段で検出された強い相関のある希少挙動到達原因のうち、前記検索対象の挙動と依存関係にある挙動を抽出する依存関係解析手段とを備えることを特徴とする。
本発明の第19の異常挙動検出装置は、先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、希少挙動部分系列を検出する希少挙動部分系列計算手段と、前記挙動系列の集合を入力し、前記検出された希少挙動部分系列を含む第1の挙動系列の集合および前記検出された希少挙動部分系列を含まない第2の挙動系列の集合を抽出する挙動系列検索手段と、前記抽出された第1の挙動系列の集合から、前記希少挙動部分系列より前に高い確率で出現する部分系列を検出する挙動到達原因究明手段と、前記挙動到達原因究明手段で検出された部分系列のうち、前記検索対象の挙動と依存関係にある挙動を被依存挙動到達原因として検出する依存関係解析手段と、前記依存関係解析手段で検出された被依存挙動到達原因のうち、前記第2の挙動系列の集合に出現しない或いは殆ど出現しない挙動を、強い相関のある被依存挙動到達原因として検出する挙動相関関係発見手段とを備えることを特徴とする。
本発明の第1の異常挙動検出方法は、a)入力手段が、先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、処理対象挙動系列の集合として記憶手段に記憶するステップ、b)挙動指定手段が、検索対象の挙動を指定するステップ、c)挙動系列検索手段が、前記記憶手段に記憶された処理対象挙動系列の集合から、前記指定された検索対象の挙動を含む挙動系列を検索し、新たな処理対象挙動系列の集合として前記記憶手段に記憶するステップ、d)挙動到達原因究明手段が、前記記憶手段に記憶された処理対象挙動系列の集合中に高い確率で現れる挙動を検出するステップ、を含むことを特徴とする。
本発明の第2の異常挙動検出方法は、第1の異常挙動検出方法において、前記挙動指定手段は、前記入力された挙動系列の集合から希少挙動部分系列を検出し、該検出した希少挙動部分系列を検索対象の挙動として指定することを特徴とする。
本発明の第3の異常挙動検出方法は、第1の異常挙動検出方法において、前記挙動指定手段は、検索対象の挙動をユーザから受け付けることを特徴とする。
本発明の第4の異常挙動検出方法は、第1の異常挙動検出方法において、前記挙動指定手段は、前記入力された挙動系列の集合から希少挙動部分系列を検出してユーザに提示した後、検索対象の挙動をユーザから受け付けることを特徴とする。
本発明の第5の異常挙動検出方法は、第1乃至第4の何れかの異常挙動検出方法において、予兆検出手段が、前記動作主体から新たに得られる挙動を監視し、前記挙動到達原因究明手段で検出された挙動と一致する挙動を検出した際に警告を発するステップを更に含むことを特徴とする。
本発明の第6の異常挙動検出方法は、第1乃至第4の何れかの異常挙動検出方法において、挙動相関関係発見手段が、前記挙動到達原因究明手段で検出された挙動から、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうち処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出するステップを更に含むことを特徴とする。
本発明の第7の異常挙動検出方法は、第1乃至第4の何れかの異常挙動検出方法において、依存関係解析手段が、前記挙動到達原因究明手段で検出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出するステップと、挙動相関関係発見手段が、前記依存関係解析手段で抽出された挙動から、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうち処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出するステップとを、更に含むことを特徴とする。
本発明の第8の異常挙動検出方法は、第6または第7の異常挙動検出方法において、予兆検出手段が、前記動作主体から新たに得られる挙動を監視し、前記挙動相関関係発見手段で抽出された挙動と一致する挙動を検出した際に警告を発するステップを更に含むことを特徴とする。
本発明の第9の異常挙動検出方法は、第1乃至第4の何れかの異常挙動検出方法において、依存関係解析手段が、前記挙動到達原因究明手段で検出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出するステップを更に含むことを特徴とする。
本発明の第10の異常挙動検出方法は、第1乃至第4の何れかの異常挙動検出方法において、挙動相関関係発見手段が、前記挙動到達原因究明手段で検出された挙動のうち、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうちの処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出するステップ、依存関係解析手段が、前記挙動相関関係発見手段で抽出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出するステップを更に含むことを特徴とする。
本発明の第11の異常挙動検出方法は、第9または第10の異常挙動検出方法において、予兆検出手段が、前記動作主体から新たに得られる挙動を監視し、前記依存関係解析手段で抽出された挙動と一致する挙動を検出した際に警告を発するステップを更に含むことを特徴とする。
本発明の第1のプログラムは、コンピュータを、先行する挙動の系列が後続の挙動に影響を与え得る動作主体から得られた挙動系列の集合を入力し、処理対象挙動系列の集合として記憶手段に記憶する入力手段、検索対象の挙動を指定する挙動指定手段、前記記憶手段に記憶された処理対象挙動系列の集合から、前記指定された検索対象の挙動を含む挙動系列を検索し、新たな処理対象挙動系列の集合として前記記憶手段に記憶する挙動系列検索手段、前記記憶手段に記憶された処理対象挙動系列の集合中に高い確率で現れる挙動を検出する挙動到達原因究明手段、として機能させることを特徴とする。
本発明の第2のプログラムは、第1のプログラムにおいて、前記挙動指定手段として、前記入力された挙動系列の集合から希少挙動部分系列を検出する希少挙動部分系列計算手段を備えることを特徴とする。
本発明の第3のプログラムは、第1のプログラムにおいて、前記挙動指定手段として、検索対象の挙動をユーザから受け付ける挙動受付手段を備えることを特徴とする。
本発明の第4のプログラムは、第1のプログラムにおいて、前記挙動指定手段として、前記入力された挙動系列の集合から希少挙動部分系列を検出してユーザに提示する希少挙動部分系列計算手段と、検索対象の挙動をユーザから受け付ける挙動受付手段とを備えることを特徴とする。
本発明の第5のプログラムは、第1乃至第4の何れかのプログラムにおいて、前記コンピュータを、更に、前記動作主体から新たに得られる挙動を監視し、前記挙動到達原因究明手段で検出された共通な挙動と一致する挙動を検出した際に警告を発する予兆検出手段、
として機能させることを特徴とする。
本発明の第6のプログラムは、第1乃至第4の何れかのプログラムにおいて、前記コンピュータを、更に、前記挙動到達原因究明手段で検出された挙動から、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうち処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出する挙動相関関係発見手段、として機能させることを特徴とする。
本発明の第7のプログラムは、第1乃至第4の何れかのプログラムにおいて、前記コンピュータを、更に、前記挙動到達原因究明手段で検出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出する依存関係解析手段、前記依存関係解析手段で抽出された挙動から、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうち処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出する挙動相関関係発見手段、として機能させることを特徴とする。
本発明の第8のプログラムは、第6または第7のプログラムにおいて、前記コンピュータを、更に、前記動作主体から新たに得られる挙動を監視し、前記挙動相関関係発見手段で抽出された挙動と一致する挙動を検出した際に警告を発する予兆検出手段、として機能させることを特徴とする。
本発明の第9のプログラムは、第1乃至第4の何れかのプログラムにおいて、前記コンピュータを、更に、前記挙動到達原因究明手段で検出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出する依存関係解析手段、として機能させることを特徴とする。
本発明の第10のプログラムは、第1乃至第4の何れかのプログラムにおいて、前記コンピュータを、更に、前記挙動到達原因究明手段で検出された挙動のうち、前記記憶手段に記憶された処理対象挙動系列が検索された挙動系列の集合のうちの処理対象挙動系列以外の挙動系列の集合に出現しない挙動を抽出する挙動相関関係発見手段、前記挙動相関関係発見手段で抽出された挙動のうち、前記検索対象の挙動と依存関係にある挙動を抽出する依存関係解析手段、として機能させる。
本発明の第11のプログラムは、第9または第10のプログラムにおいて、前記コンピュータを、更に、前記動作主体から新たに得られる挙動を監視し、前記依存関係解析手段で抽出された挙動と一致する挙動を検出した際に警告を発する予兆検出手段、として機能させることを特徴とする。
本発明の希少挙動部分系列計算装置は、挙動系列の集合から挙動系列を1つずつ入力する入力手段と、入力した挙動系列を挙動に分解する分解手段と、挙動中の数値を抽出する数値抽出手段と、挙動中の数値のうち正常な値と判定した数値をそれが抽出された挙動と共に保存する正常値保存手段と、正常な値と判定する範囲の上限値および下限値を保持する正常範囲設定手段と、正常値より明確に大きな数値をそれが抽出された挙動と共に上方異常値として保存する上方異常値保存手段と、上方異常値と判定する範囲の上限値および下限値を保持する上方異常範囲設定手段と、正常値より明確に小さな数値をそれが抽出された挙動と共に下方異常値として保存する下方異常値保存手段と、下方異常値と判定する範囲の上限値および下限値を保持する下方異常範囲設定手段と、前記数値抽出部で抽出された数値をその挙動と共に、前記正常値保存手段、前記上方異常値保存手段および前記下方異常値保存手段の何れかに保存し、必要に応じて前記正常範囲設定手段、前記上方異常範囲設定手段および前記下方異常範囲設定手段の設定の変更、異なる保存部間の保存内容の統合、および保存内容の移送を行うことにより、各挙動中の数値を正常な値のグループである正常グループ、正常グループの数値とは明確に大きな数値のグループである上方異常グループ、正常グループの数値とは明確に小さな数値のグループである下方グループの3つのグループに分類する分類手段と、前記上方異常値保存手段に保存された上方異常グループに属する数値を抽出した挙動、および前記下方異常値保存手段に保存された下方異常グループに属する数値を抽出した挙動を希少挙動として出力する出力手段とを備えることを特徴とする。
本発明の第1の異常挙動検出装置および方法ならびにプログラムによれば、動作主体の挙動に関する統計データから例外的な挙動、すなわち異常を検出し、異常の原因として怪しい挙動を素早く特定することができる。その理由は、計算機プログラムのような、先行する挙動が後続の挙動に影響を与え得る動作主体では、異常に至る過程において多く観測された挙動を異常挙動に到達した原因(挙動到達原因)とみなせるためである。
本発明の第2の異常挙動検出装置および方法ならびにプログラムによれば、ユーザに負担をかけずに異常な挙動とその原因を素早く特定することができる。その理由は、入力された挙動系列の集合から希少挙動部分系列を自動的に検出する希少挙動部分系列計算手段を備えているからである。
本発明の第3の異常挙動検出装置および方法ならびにプログラムによれば、ユーザが注目したい挙動に関して、挙動が起きた原因を特定することができる。その理由は、ユーザが指定した挙動や挙動部分系列を挙動受付手段が受け付け、受け付けた挙動や挙動部分系列を含む挙動系列の中から、挙動到達原因究明手段によって系列中の共通の挙動が求められるためである。
本発明の第4の異常挙動検出装置および方法ならびにプログラムによれば、例外的な挙動や挙動到達原因を徐々に絞り込むことができる。その理由は、ユーザによる挙動や挙動部分系列の入力と、希少挙動部分系列および挙動到達原因の計算とを繰返し行うためである。
本発明の第5、第8、第11の異常挙動検出装置および方法ならびにプログラムによれば、珍しい挙動やユーザが指定した挙動が実際に発生する前に、発生する可能性があることを知ることができる。その理由は、新たに受信される挙動系列中に挙動到達原因が含まれているかどうかを、予兆検出手段が検査するためである。
本発明の第6の異常挙動検出装置および方法ならびにプログラムによれば、異常の原因としての怪しい挙動をより正確に特定することができる。その理由は、挙動相関関係発見手段を備えているため、珍しい挙動が起きる以前に高い確率で現れ、珍しい挙動が起きない場合にはほとんど現れないような挙動を発見できるためである。
本発明の第7の異常挙動検出装置および方法ならびにプログラムによれば、第6の異常挙動検出装置および方法ならびにプログラムに比べて、異常の原因としての怪しい挙動を更に正確に特定することができる。その理由は、依存関係解析手段により、珍しい挙動が起きる以前に高い確率で現れる挙動のうち、珍しい挙動がデータフローや制御フローの観点から依存している挙動のみを抽出しており、更に挙動相関関係発見手段により結果を絞り込んでいるためである。
本発明の第9の異常挙動検出装置および方法ならびにプログラムによれば、異常の原因としての怪しい挙動をより正確に特定することができる。その理由は、依存関係解析手段により、珍しい挙動が起きる以前に高い確率で現れる挙動のうち、珍しい挙動がデータフローや制御フローの観点から依存している挙動のみを抽出しているためである。
本発明の第10の異常挙動検出装置および方法ならびにプログラムによれば、第9の異常挙動検出装置および方法ならびにプログラムに比べて、異常の原因としての怪しい挙動を更に正確に特定することができる。その理由は、挙動相関関係発見手段を備えているため、珍しい挙動が起きる以前に高い確率で現れ、珍しい挙動が起きない場合にはほとんど現れないような挙動を発見し、更に依存関係解析手段によって結果を絞り込んでいるためである。
次に、本発明の実施の形態について図面を参照して詳細に説明する。
図1を参照すると、本発明の第1の実施の形態にかかる異常挙動検出装置100は、処理装置110と記憶装置120と出力装置130とを含んで構成され、処理装置110は、入力部141、希少挙動部分系列計算部142、挙動系列検索部143、挙動到達原因究明部144および出力部145を備え、記憶装置120は、記憶部151〜154を備えている。
入力部141は、動作主体の挙動系列160を外部から1個以上入力し、挙動系列の集合171として記憶部151に記憶する。動作主体は、先行する挙動の系列が後続の挙動に影響を与え得るものであり、例えば計算機である。入力部141は、動作主体から得られる挙動系列160をオンラインで取得して記憶部151に記憶するものであっても良いし、動作主体から得られた1個以上の挙動系列160をオフラインで入力して記憶部151に記憶するものであっても良い。
希少挙動部分系列計算部142は、記憶部151から挙動系列の集合171を入力し、系列中に現れる珍しい部分系列を計算(検出)し、希少挙動部分系列172として記憶部152に記憶する。
挙動系列検索部143は、記憶部151から挙動系列の集合171を入力し、記憶部152から希少挙動部分系列172を入力し、挙動系列の集合171から希少挙動部分系列172を含む全ての挙動系列を検索し、希少挙動部分系列を含む挙動系列の集合173として記憶部153に記憶する。
挙動到達原因究明部144は、記憶部153から希少挙動部分系列を含む挙動系列の集合173を入力し、この挙動系列の集合173中に共通に現れる挙動或いはほぼ共通に現れる挙動、つまり、高い確率(頻度)で現れる挙動を検出し、共通部分系列174として記憶部154に記憶する。また挙動到達原因究明部144は、記憶部152から希少挙動部分系列172を入力し、共通部分系列174において、希少挙動部分系列172より前に高い確率で出現する部分系列を、希少挙動部分系列到達原因175として検出し、記憶部154に記憶する。
出力部145は、記憶装置120に記憶された希少挙動部分系列172、共通部分系列174および希少挙動部分系列到達原因175をディスプレイ装置などの出力装置130に出力する。記憶装置120に記憶されたその他のデータを出力装置130に出力するようにしても良い。
次に、図1及び図2のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
まず、入力部141は、1個以上の動作主体の挙動系列160を外部より受信し、記憶部151に記憶する(図2のステップA1)。ここで、挙動とは、関数呼出しやメソッド呼出し、命令文の実行、例外やシグナルの発生といった計算機プログラムの動作のほか、オブジェクト指向プログラムにおけるオブジェクトの動作、編集や電子メールの送信等のプログラムに対する操作、ソフトウェアのアップグレード等を指す。挙動系列とは、動作主体が動作を開始して停止するまでの挙動の系列を指す。たとえば、「メソッドMの呼出し、変数xに整数値278を代入、メソッドLの呼出し」のようなものが、挙動系列である。挙動系列の集合171は、動作主体の複数回の動作を観測することによって得られる。
次に、希少挙動部分系列計算部142は、挙動系列の集合171に対して、系列中に現れる珍しい部分系列(希少挙動部分系列)を計算する(ステップA2)。希少挙動部分系列計算部142で求められた希少挙動部分系列172は、記憶部152に一旦保存されて挙動系列検索部143に与えられるほか、出力部145により必要に応じて出力装置130から出力される。
部分系列の珍しさを計算する方法としては、次の2つの方法がある。第1の方法は、系列中の部分系列自体の出現確率を計算する方法で、第2の方法は、挙動の中身の珍しさを計算する方法である。
部分系列の珍しさを計算する第1の方法では、系列中の部分系列に関する統計を取り、各部分系列に関する出現確率を計算する。出現確率の低い部分系列が、珍しい部分系列である。出現確率の計算には、部分系列を独立事象とみなして事象の起きる確率を求める方法と、マルコフモデルおよび隠れマルコフモデルのような推移確率を用いる方法がある。
部分系列の珍しさを計算する第2の方法では、挙動の中で扱われる変数値、および時間、場所等を示す数値やカテゴリ値によって、挙動の珍しさを計算する。数値の珍しさの計算では、ある数値の近傍に他の数値が存在しない数値を、珍しい数値とみなすことができる。具体的には、0以上の閾値をa、数値をnとしたとき、n-aからn+aまでの数値を、nの近傍と定義する。たとえば、閾値を10としたとき、数値100の近傍は、90から110までの数である。
数値の集合に対する正常値や珍しい値は、一般に、ある範囲を持つ。また、先に処理した値が正常値となり、後から処理された値が、正常値のどの値の近傍からも逸脱していた場合は、珍しい値となる。たとえば、閾値が10のとき、数値の集合が100,105,99,82,112,79の順番で処理された場合は、正常値が99から112までの値であり、珍しい値は79から82までの値である。一方、数値の集合が82,100,105,99,112,79の順番で処理された場合は、正常値が79から82までの値となり、珍しい値が99から112までの値となる。
数値nの近傍は、1以上の閾値bを使って、n/bからn*bまでの数値として定義することもできる。たとえば、閾値が10のとき、数値52の近傍は、5.2から520までの数である。
一方、ものの名前や種類といったカテゴリ値は、出現確率を使って珍しさを定義できる。たとえば、ある変数に文字列ABCが2回、XYZが100回代入された場合、文字列ABCの代入の方が珍しい挙動となる。つまり、カテゴリ値の珍しさに関しては、カテゴリ値の出現回数を数値データとみなし、出現回数が平均出現回数の近傍を下回るようなカテゴリ値を、珍しい値として求める。
変数値に関しては、変数の初期値と実行途中の値と実行終了時の値とに分けて、珍しさを計算することもできる。たとえば変数xの値が、ほとんどの場合、計算中は0から100の間を変化し、計算終了時には0になるとする。このとき、あるときだけ変数xの値が100で終了した場合は、この100を珍しい値とみなし、終了直前の変数xへの代入を珍しい挙動とみなす。
希少挙動部分系列計算部の幾つかの実施例については、後に詳細に説明する。
さて、希少挙動部分系列計算部142によって求められた希少挙動部分系列172が記憶部152に記憶されると、次に挙動系列検索部143は、記憶部151に記憶されている挙動系列の集合171中の各挙動系列と、記憶部152に記憶された希少挙動部分系列172とのマッチングを行い、希少挙動部分系列172を含む(複数の)挙動系列を抽出し、抽出した挙動系列の集合を、希少挙動部分系列を含む挙動系列の集合173として記憶部153に記憶する(ステップA3)。
最後に、挙動到達原因究明部144は、希少挙動部分系列を含む挙動系列の集合173の中から共通の挙動を求める(ステップA4)。具体的には、系列の集合173に対する最長共通部分系列を計算する。2つの系列に対する最長共通部分系列(LCS: Longest Common Subsequence)の計算方法は広く知られており、たとえば以下の文献にアルゴリズムが紹介されている。
R.コルメン, C.ライザーソン, R.リベスト著, 浅野哲夫他訳. アルゴリズムイントロダクション2.近代科学社,1995.
2系列に対する最長共通部分系列の計算を複数回行うことで、複数の系列に対する最長共通部分系列を求めることができ、求められた最長共通部分系列は共通部分系列174として記憶部154に記憶される。ここで、挙動到達原因究明部144は、最長共通部分系列ではなく、出現確率の高い挙動を求めるものであっても良い。
また、挙動到達原因究明部144は、求めた最長共通部分系列のうち、記憶部152に記憶されている希少挙動部分系列172より前に出現する挙動を、希少挙動部分系列の発生原因(希少挙動部分系列到達原因175)とみなし、記憶部154に記憶する。
出力部145は、記憶部154に記憶された共通部分系列(最長共通部分系列)174や希少挙動部分系列到達原因175を出力装置130に出力する。
計算機のように、関数呼出し等の挙動によって状態を変化させながら動作する動作主体では、ある挙動によって状態の一部が不正になったまま動作し続け、あるとき、その不正な部分を利用したために、例外やシグナル等の通常とは異なる挙動が引き起こされることが多い。挙動到達原因究明部144は、状態を不正にした可能性のある挙動を特定している。つまり、本実施の形態は計算機プログラムのほか、挙動と状態の変化に関連があるような動作主体の異常挙動検出に適用できる。
このように本実施の形態によれば、動作主体の例外的な挙動、すなわち異常を検出し、異常な挙動に至る過程において多く観測された挙動を求めることで、異常の原因として怪しい挙動を素早く特定することができるという効果が得られる。
次に、具体的な実施例を用いて本実施の形態の動作を説明する。
[第1の実施の形態の実施例1]
まず、第1の実施例では、挙動としてJava(登録商標)プログラムなどのメソッド呼出しを考える。また、希少挙動部分系列の計算には、一次のマルコフモデル、すなわち1段階の推移確率を用いる。いま、動作主体であるプログラムに様々な入力を与えながら複数回の実行を行い、メソッド呼出し系列の集合が得られたとする。このメソッド呼出し系列の集合は、入力部141によって、記憶部151に挙動系列の集合171として記憶され、希少挙動部分系列計算部142と挙動系列検索部143とに与えられる。
メソッド呼出しXの後にメソッド呼出しYが呼ばれることを「X→Y」と書き、XからYへの推移と呼ぶことにすると、希少挙動部分系列計算部142は、統計データから、確率の低い推移を計算によって求める。たとえば、挙動系列の集合171中にX→Yが2回、X→Zが3回出現しており、Xからの推移が他にない場合、X→Yの推移確率は2/(2+3)=0.4、X→Zの推移確率は3/(2+3)=0.6と計算される。メソッド呼出し系列中のすべての推移に関する統計を取ることで、図3に示すような一次マルコフモデルが得られたとする。図3において、ノードは挙動を表し、アークについた数値は推移確率を表している。もっとも推移確率の低い、すなわち珍しい推移はK→Eであるので、このK→Eが希少挙動部分系列172として挙動系列検索部143に与えられる。また、出力部145によってK→Eをディスプレイやファイルに出力することもできる。ここではもっとも推移確率の低い推移だけを求めたが、決められたNに対して、推移確率が低い方から順にN個の推移を求めてもよい。
挙動系列検索部143は、記憶部151が保持するメソッド呼出し系列の集合171の中から、希少挙動部分系列として与えられたK→Eを含む挙動系列を抽出する。挙動系列検索部143は、抽出したメソッド呼出し系列の集合を、希少挙動部分系列を含む挙動系列の集合173として記憶部153に保存し、挙動到達原因究明部144に与える。
挙動到達原因究明部144は、希少挙動部分系列を含む挙動系列の集合173として与えられたメソッド呼出し系列の集合に対して、各系列に共通するメソッド呼出しを見つける。たとえば、推移K→Eを含む挙動系列の集合が、
(1)B→G→K→K→E→A、
(2)B→F→G→K→E、
(3)A→B→G→K→E→A→B→T、
の3つであるとき、共通部分はB→*→G→K→Eとなる。ここで、「B→*→G」はメソッド呼出しBとメソッド呼出しGとの間に0個以上のメソッド呼出しが起きていることを表す。K→Eが通常とは異なる推移(つまり希少挙動部分系列172)であるとき、K→Eの以前に起きているB→*→Gを、K→Eの原因とみなす。なぜなら、計算機はプログラムにしたがって内部状態を変化させながら動作しており、メソッド呼出しBやG、あるいはメソッド呼出しBの後にメソッド呼出しGが呼ばれることで、内部状態に異常が発生した可能性が高いからである。
なお、同じ種類の誤りが複数のメソッド呼出しに含まれている場合、誤りを含んだメソッドのうちの任意の1つが呼ばれただけで異常が発生する可能性があるため、系列中の共通部分を求めるだけでは正しい原因が見つからない恐れがある。そのため、共通部分だけではなく、系列中に高い確率で現れる挙動や推移を障害の原因として求めるのが望ましい。例えば、推移K→Eを含む挙動系列の集合として、上記(1)〜(3)の3つの挙動系列以外に、次のような挙動系列があったとする。
(4)P→G→K→K→E→A
この場合、4つの挙動系列すべてに共通な部分系列は、希少挙動部分系列K→Aそのものだけになり、希少挙動部分系列到達原因が見つからないが、系列中に高い確率で現れる挙動や推移を求めると、B→*→Gが特定できることになる。
[第1の実施の形態の実施例2]
次に、第2の実施例を用いて本実施の形態の動作を説明する。
第2の実施例では、挙動として、ある電子メールソフトウェア(メーラ)の動作を考える。メーラの動作としては、メールの送信や受信、添付ファイルの実行、およびこれらの動作に付随して、送受信の時間や送受信したメールの数などの数値データがある。ここでは、1人のユーザが1日に使用するメーラの動作を1つの挙動系列とする。たとえば、「10時35分に20通のメールを受信、10時50分に添付ファイルabc.exeを実行、11時20分に5通のメールを送信」のようなものがメーラの挙動系列である。複数のユーザがメーラを一定期間使用した結果得られる挙動系列の集合が、入力部141によって記憶部151に挙動系列の集合171として記憶され、挙動系列検索部143と希少挙動部分系列計算部142に与えられたものとする。なお、挙動は、メーラが動作を行うたびにこれらの手段に逐一与えられるものとする。
ここでは挙動の珍しさとして、数値の珍しさを用いる。送受信の時間は、何時何分という形式ではなく、0時から何分経過したかを数値として扱うことで、ある閾値に対して珍しさを定義できる。たとえば、10時35分は10*60+35=635となる。ここでは簡単のため、メールの送受信数だけを考える。
あるとき、希少挙動部分系列計算部142が、珍しい挙動として「200通のメールを送信」を検出したとする。ここではこの珍しい挙動を「例外的に多数のメールを送信」として扱う。希少挙動部分系列計算部142は、「例外的に多数のメールを送信」を希少挙動部分系列172として挙動系列検索部143に与える。また、出力部145は、例外的に多数のメールを送信したことをディスプレイやファイル等の出力装置130に出力するか、あるいはシステム管理者にメール等の手段を用いて知らせる。
挙動系列検索部143は、挙動系列の集合171から、例外的に多数のメールを送信した挙動を含む系列を抽出し、希少挙動部分系列を含む挙動系列の集合173として挙動到達原因究明部144に与える。例外的に多数のメールを送信した挙動を含む系列が1つしか存在しない間は、その1系列が挙動到達原因究明部144によって求まるだけで、原因は特定されない。しかし、時間の経過とともに、例外的に多数のメールを送信した系列が複数収集されたとすると、以下のようにして原因が特定される。
今、収集された系列が以下の3つであるとする。
(1)5通のメールを受信、添付ファイルddd.exeを実行、3通のメールを送信、250通のメールを送信
(2)27通のメールを受信、添付ファイルddd.exeを実行、320通のメールを送信
(3)5通のメールを受信、ddd.exeを実行、8通のメールを受信、添付ファイルabc.txtを開く、180通のメールを送信
このとき、各挙動系列の送受信数を無視すると、例外的に多数のメールを送信する前に出現している共通の部分系列は、「メールを受信、添付ファイルddd.exeを実行」となる。例外的に多数のメールを送信した原因としてはコンピュータウィルスへの感染等が考えられるが、感染原因として、受信したメールの添付ファイルddd.exeの実行が怪しいことがわかる。挙動到達原因究明部144はこの共通の部分系列を記憶部154に保存し、出力部145によって出力あるいは管理者に通知する。これにより、管理者はコンピュータウィルスへの感染を的確に対処することができる。
[第2の実施の形態]
次に、本発明の第2の実施の形態について図面を参照して詳細に説明する。
図4を参照すると、本発明の第2の実施の形態にかかる異常挙動検出装置200は、処理装置210と記憶装置220と出力装置230と入力装置270とを含んで構成され、処理装置210は、入力部241、希少挙動部分系列計算部242、挙動系列検索部243、挙動到達原因究明部244、出力部245および挙動受付部246を備え、記憶装置220は、記憶部251〜254を備えている。
入力部241は、動作主体の挙動系列260を外部から1個以上入力し、挙動系列の集合271として記憶部251に記憶する。動作主体は、先行する挙動の系列が後続の挙動に影響を与え得るものであり、例えば計算機である。入力部241は、動作主体から得られる挙動系列260をオンラインで取得して記憶部251に記憶するものであっても良いし、動作主体から得られた1個以上の挙動系列260をオフラインで入力して記憶部251に記憶するものであっても良い。
挙動受付部246は、入力装置270を通じてユーザから、挙動や挙動部分系列の選択を受け付ける。受け付けた挙動や挙動部分系列は、記憶部252に、挙動あるいは挙動部分系列272として一旦記憶され、挙動系列検索部243に与えられる。
挙動系列検索部243は、記憶部251から挙動系列の集合271を入力し、記憶部252から挙動あるいは挙動部分系列272を入力し、挙動系列の集合271から挙動あるいは挙動部分系列272を含む全ての挙動系列を検索し、この検索結果で元の挙動系列の集合271を置き換える。
挙動到達原因究明部244は、記憶部251から挙動系列の集合271を入力し、この挙動系列の集合271中に共通に現れる挙動或いはほぼ共通に現れる挙動、つまり、高い確率(頻度)で現れる挙動を検出し、挙動到達原因273として記憶部254に記憶する。
希少挙動部分系列計算部242は、記憶部251から挙動系列の集合271を入力し、系列中に現れる珍しい部分系列を計算(検出)し、希少挙動部分系列274として記憶部253に記憶する。
出力部245は、記憶装置220に記憶された挙動到達原因273、希少挙動部分系列274をディスプレイ装置などの出力装置230に出力する。記憶装置220に記憶されたその他のデータを出力装置230に出力するようにしても良い。
次に、図4及び図5のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
まず、入力部241は、1個以上の動作主体の挙動系列260を外部より受信し、記憶部251に記憶する(図5のステップB1)。ここで、挙動、挙動系列の意義は第1の実施の形態と同様である。
次に、挙動受付部246は、ユーザから挙動あるいは挙動部分系列の入力を受け付ける(ステップB2)。ユーザからの入力が与えられない場合は、処理を終了する。入力が与えられると、ユーザから入力された挙動あるいは挙動部分系列が記憶部252に記憶され、次に、挙動系列検索部243は、記憶部251に記憶された挙動系列の集合271の中から、記憶部252に記憶された挙動あるいは挙動部分系列272を含む全ての系列を検索する(ステップB3)。
ユーザから与えられる挙動や挙動部分系列は複数あっても良い。また、複数の挙動や挙動部分系列を与えるときは、その1つ1つを指定しても良いが、検索のための条件式を使って値の範囲等を指定し、複数の挙動を与えることもできる。たとえば、「変数xに0未満の値が代入される挙動」や「挙動Aを含まない挙動系列」のような条件式を与えて、挙動系列を検索することができる。検索の結果得られた挙動系列集合は、記憶部251に新たな挙動系列の集合271として記憶される(ステップB4)。
次に、挙動到達原因究明部244は、記憶部251に記憶された挙動系列の集合271の中から、共通の挙動あるいは出現確率の高い挙動を挙動到達原因として求め(ステップB5)、記憶部254に挙動到達原因273として記憶するとともに、出力部245によって必要に応じて出力装置230から出力する。この挙動到達原因究明部244により、ユーザから指定された挙動や挙動部分系列に対する挙動到達原因を求めることで、たとえば、変数xに0未満の値が代入されるのはどのようなときか、といった情報を提供することができる。
次に、希少挙動部分系列計算部242は、記憶部251に記憶された挙動系列の集合271の中から、第1の実施の形態における希少挙動部分系列計算部142と同様に、珍しい部分系列を計算し(ステップB6)、記憶部253に希少挙動部分系列274として記憶すると共に、出力部245によって必要に応じて出力装置230から出力する。これにより、ユーザが注目する挙動を含んだ挙動系列の集合や、ある条件下における挙動系列の集合に対して、例外的な挙動を特定することができる。
挙動到達原因究明部244および希少挙動部分系列計算部242の処理が終わると、挙動受付部246は再びユーザからの入力を待つ。ユーザから挙動や挙動部分系列、検索条件式が与えられると、前回検索した挙動部分系列集合である挙動系列の集合271の中から、新たに与えられた条件に合致する挙動系列を検索する。ステップB2−B6を繰り返すことで、多数の挙動系列の中から、ユーザの注目したい挙動系列を徐々に絞り込んでいくことができる。
次に、本実施の形態の効果について説明する。
本実施の形態では、挙動や挙動部分系列をユーザから受け付ける挙動受付部246を備えているため、希少挙動部分系列や挙動到達原因、あるいは任意の挙動のうち、ユーザが注目する挙動に関して、挙動が起きた原因を特定することができる。
また、本実施の形態ではさらに、挙動や挙動部分系列に関する条件式を受け付けられるように構成されているため、ある条件下における例外的な挙動を検出することができる。
また、本実施の形態ではさらに、ユーザによる挙動や挙動部分系列の入力と、希少挙動部分系列および挙動到達原因の計算とを繰り返し行えるように構成されているため、例外的な挙動や挙動到達原因を徐々に絞り込んでいくことができる。
[第2の実施の形態の実施例1]
次に、具体的な実施例を用いて本実施の形態の動作を説明する。
第1の実施の形態における第1の実施例と同様の記法を用いて説明する。図6は、本実施例の出力装置230に表示されるウィンドウ画面のイメージを示したものである。ウィンドウ画面は、ソースプログラム表示部231、クラス階層表示部232、希少変数値表示部233、希少メソッド系列表示部234、挙動到達原因表示部235および詳細表示部236で構成される。
ソースプログラム表示部231は、動作主体であるプログラムのソースプログラムを表示する。クラス階層表示部232は、ソースプログラム中のある箇所が、クラス階層中のどこに位置するかを表示する。
まず、プログラムを複数回実行した結果得られるメソッド呼出し系列の集合が、入力部241によって外部から入力され、挙動系列の集合271として記憶部251に記憶されているものとする。ユーザが注目すべき挙動の情報を持たない場合、与えられたすべてのメソッド呼出し系列が抽出されるように、挙動受付部246に対して検索条件としての挙動あるいは挙動部分系列272を与えることができる。このとき挙動受付部246で抽出されたメソッド呼出し系列集合(つまり、挙動系列の集合271そのもの)は、記憶部251を通じて希少挙動部分系列計算部242と挙動到達原因究明部244に与えられる。すべての挙動を抽出した場合、挙動到達原因にはほとんど意味がないため、挙動到達原因究明部244の処理や出力を抑制することができる。
希少挙動部分系列計算部242は、与えられたメソッド呼出し系列集合に対し、複数の珍しい変数の値や珍しい部分系列を計算し、希少挙動部分系列274として記憶部253に保存するとともに、出力部245によって、計算した珍しい変数の値を図6の希少変数値表示部233に出力し、珍しいメソッド系列を希少メソッド系列表示部234に出力する。出力された珍しい変数の値や部分系列の中から、ユーザが、整数型の変数xに値-3276が代入されていることに注目したとする。
整数型の変数xへの-3276の代入が選択されると、希少挙動部分系列計算部242は、出力部245によって、図6の詳細表示部236に、なぜ-3276が珍しい値として検出されたかを表示する。第1の実施の形態で述べたように、珍しい値は、通常の値の範囲の近傍から外れた値として検出されるため、希少挙動部分系列計算部242は、通常の値の範囲や珍しい値との差異等を視覚的に表示する。
このとき、変数xに負の整数が代入されるのがおかしいということをユーザが希少変数値表示部233を見て気がついた、あるいは知っていたとする。この場合、変数xに負の整数が代入されているメソッド呼出し系列を検索するように、挙動受付部246から新たな条件式が記憶部252を通じて挙動系列検索部243に与えられると、挙動系列検索部243は、与えられた条件式を満足する系列を検索し、結果を記憶部251を通じて挙動到達原因究明部244および希少挙動部分系列計算部242に与える。
挙動到達原因究明部244は、与えられたメソッド呼出し系列集合の中から、すべての系列に共通する挙動や出現確率の高い挙動を求め、これを記憶部254に記憶するとともに出力部245によって図6の挙動到達原因表示部235に表示する。これによりユーザは、変数xに負の整数が代入される原因となったメソッド呼出しを知ることができる。
希少挙動部分系列計算部242は、与えられたメソッド呼出し系列集合に対し、再度、珍しい部分系列や珍しい変数の値を計算して出力する。
たとえば、当初珍しい挙動として検出されていた希少推移K→Eがあり、ユーザは、K→Eの発生条件が変数xとyの値に依存することを知っていたとする。このとき、発生条件が「ある実行時点においてx=0,y=1のとき」のように固定的である場合は、K→Eが発生する挙動系列の共通部分を求めることで、発生条件が明らかになる。しかし、発生条件が「x=0,y=1あるいはx>128のとき」のように多少複雑である場合には、共通部分を求めるだけでは発生条件(挙動到達原因)が得られない。
このような場合は、挙動系列検索部243に条件を与えて、変数値に関する条件を少しずつ限定していくのが有効である。たとえば、最初は条件としてx<128を与え、徐々にx<32やx<1のように条件を絞り込んでいくことができる。絞込みに成功すると、希少推移K→Eは、希少挙動ではなく、変数値の条件を満たす挙動系列中の共通部分として求まるようになる。
ユーザが、希少挙動部分系列や挙動到達原因の提示する情報にこれ以上意味がないと判断すると、挙動受付部246への入力は中止され、処理が終了する。
[第3の実施の形態]
次に、本発明の第3の実施の形態について図面を参照して詳細に説明する。
図7を参照すると、本発明の第3の実施の形態にかかる異常挙動検出装置300は、図1に示した第1の実施の形態にかかる異常挙動検出装置100と比べて、処理装置310が予兆検出部146を有する点で異なる。
予兆検出部146は、挙動到達原因究明部144が求めた希少挙動部分系列到達原因175を記憶部154から受け取って内部に挙動到達原因として保存し、動作主体370から新たに受信した挙動系列371の中に挙動到達原因が存在していた場合に、出力装置130を通じてユーザに警告を発行する。メール等の他の手段で警告を発行しても良い。
次に、図7及び図8のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
図8のステップA1〜A4で示される本実施の形態における入力部141、希少挙動部分系列計算部142、挙動系列検索部143および挙動到達原因究明部144の動作は、第1の実施の形態の対応する部分の動作と同一のため、説明を省略する。
第1の実施の形態では、希少挙動部分系列到達原因175が求まった時点で処理を終了していたが、本実施の形態では、挙動到達原因究明部144が求めた希少挙動部分系列到達原因175を予兆検出部146に与える。予兆検出部146は、動作主体370から新たに受信される挙動系列371を監視して、挙動系列の中に挙動到達原因が存在していた場合に警告を発行する(ステップC1)。ここでは、1つの挙動系列がまとめて受信されるのではなく、先頭の挙動から随時受信されることを想定している。これにより希少挙動が発生する可能性を事前に予測することができる。
このように本実施の形態によれば、新たに受信される挙動系列中に挙動到達原因が含まれているかどうかを検査できるように構成されているため、珍しい挙動が実際に発生する前に、発生する可能性があることを知ることができるという効果がある。
次に、具体的な実施例を用いて本実施の形態の動作を説明する。
第1の実施の形態における第1の実施例と同様の記法と例を用いて説明する。
もっとも推移確率の低い、すなわち通常とは異なる推移がK→Eであり、K→Eの挙動到達原因がB→*→Gであったとする。挙動到達原因B→*→Gは、予兆検出部146に与えられる。
予兆検出部146は、新たに受信される挙動系列371を逐一監視し、メソッド呼出しBの後にメソッド呼出しGが出現するような挙動系列を検出すると、異常な推移K→Eが実際に観測される前に、異常が発生する可能性が高いとして管理者等に警告を発する。警告を受け取った管理者は、実際に異常が発生する前に、なんらかの対策をとることができる。
[第4の実施の形態]
次に、本発明の第4の実施の形態について図面を参照して詳細に説明する。
図9を参照すると、本発明の第4の実施の形態にかかる異常挙動検出装置400は、図7に示した第3の実施の形態にかかる異常挙動検出装置300と比較して、処理装置410が希少挙動部分系列計算部142の代わりに、入力装置480を通じてユーザから挙動系列検索部143の検索条件となる挙動あるいは挙動部分系列472を受け付ける挙動受付部147を備える点で異なる。
図9及び図10のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
まず、入力部141は、1個以上の動作主体の挙動系列160を外部より受信し、記憶部151に記憶する(ステップA1)。次に、挙動受付部147は、ユーザから挙動あるいは挙動部分系列の入力を受け付け、記憶部152に記憶する(ステップD1)。次に、挙動系列検索部143は、記憶部151に記憶された挙動系列の集合171の中から、記憶部152に記憶された挙動あるいは挙動部分系列472を含む全ての系列を検索し、結果を記憶部153に記憶する(ステップD2)。検索の結果得られた挙動系列の集合173は、挙動到達原因究明部144に与えられる。
図10のステップA4とC1で示される本実施の形態における挙動到達原因究明部144および予兆検出部146の動作は、第3の実施の形態の対応する部分の動作と同一のため、説明を省略する。
プログラムは、プログラム中の処理が失敗した時のために、例外処理を行うためのメソッドや関数が用意されていることが多い。ユーザはこの例外処理のためのメソッドや関数を挙動受付部147に与えておくことで、例外処理が発生した原因を特定し、その後、例外処理が発生する可能性がある場合に、発生を事前に知ることができる。
このように本実施の形態によれば、ユーザから指定された挙動の到達原因が、新たな挙動系列に含まれているかどうかを検査できるように構成されているため、指定された挙動が実際に発生する前に、発生の可能性を知ることができるという効果がある。
[第5の実施の形態]
次に、本発明の第5の実施の形態について図面を参照して詳細に説明する。
図11を参照すると、本発明の第5の実施の形態にかかる異常挙動検出装置500は、図1に示した第1の実施の形態にかかる異常挙動検出装置100と比較して、処理装置510が挙動相関関係発見部546を備えている点と、挙動系列検索部543の動作などが相違する。
挙動系列検索部543は、挙動系列の集合571から、希少挙動部分系列572を含む挙動系列の集合573および希少挙動部分系列572を含まない挙動系列の集合574を抽出して、記憶部553、554に記憶する。
挙動到達原因究明部544は、第1の実施の形態の挙動到達原因究明部144と同様に、希少挙動部分系列572を含む挙動系列の集合573から、希少挙動部分系列572より前に高い確率で出現する部分系列を検出して希少挙動部分系列到達原因576として記憶部555に記憶する。
挙動相関関係発見部546は、希少挙動部分系列到達原因576から、希少挙動部分系列を含まない挙動系列の集合574に出現しない或いは殆ど出現しない挙動を、強い相関のある希少挙動到達原因577として検出して記憶部556に記憶する。
次に、図11及び図12のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
図12のステップA1〜A3で示される本実施の形態における入力部541、希少挙動部分系列計算部542および挙動系列検索部543の動作は、第1の実施の形態の対応する部分の動作と同一のため、説明を省略する。
第1の実施の形態では、ステップA3において、挙動系列検索部543が希少挙動部分系列572を含む挙動系列だけを、最初に与えられた挙動系列の集合571の中から検索していた。本実施の形態ではさらに、挙動系列検索部543が、挙動系列の集合571の中から、希少挙動部分系列572を含まない挙動系列を検索し、記憶部554に記憶する(ステップE1)。検索の結果求まった、希少挙動部分系列を含む挙動系列の集合573は挙動到達原因究明部544に与えられ、希少挙動部分系列を含まない挙動系列の集合574は、挙動相関関係発見部546に与えられる。
挙動到達原因究明部544と挙動相関関係発見部546とで究明部547を構成する。究明部547は、希少挙動部分系列を含む挙動系列の集合573中には存在するが、希少挙動部分系列を含まない挙動系列の集合574中には存在しない挙動を、希少挙動部分系列572と強い相関のある挙動として求める(ステップE2)。あるいは、希少挙動部分系列を含む挙動系列の集合573中における出現確率は高いが、希少挙動部分系列を含まない挙動系列の集合574中における出現確率が低い挙動を求めても良い。
すなわち、挙動到達原因究明部544は、第1の実施の形態の挙動到達原因究明部144と同様に、希少挙動部分系列を含む挙動系列の集合573中に共通するあるいは頻出する挙動を共通部分系列575として抽出し、共通部分系列575中で、希少挙動部分系列572より前に高い確率で出現する部分系列を希少挙動部分系列到達原因576として検出し、記憶部555に記憶する。次に、挙動相関関係発見部546は、希少挙動部分系列到達原因576のうち、希少挙動部分系列を含まない挙動系列の集合574中に出現しないあるいはほとんど出現しない挙動を、強い相関のある希少挙動到達原因577として求め、記憶部556に記憶する。したがって、強い相関のある希少挙動到達原因577は、第1の実施の形態によって求まる希少挙動部分系列到達原因175の一部である。
本実施の形態は、第2の実施の形態における挙動受付部246を追加することで、ユーザから指定された挙動や挙動部分系列に対して、強い相関のある挙動到達原因を求めることもできる。また、本実施の形態に、第3の実施の形態における予兆検出部146を追加することで、強い相関のある希少挙動到達原因577を予兆検出部に与えて、珍しい挙動の発生をより高い精度で事前に予測することもできる。
このように本実施の形態によれば、珍しい挙動が起きる以前に高い確率で現れ、珍しい挙動が起きない場合にはほとんど現れないような挙動が発見できるように構成されているため、珍しい挙動やユーザが指定した挙動が起きる原因をより高い精度で特定することができるという効果がある。
[第5の実施の形態の実施例1]
次に、具体的な実施例を用いて本実施の形態の動作を説明する。
第1の実施の形態における第1の実施例と同様の記法および例を用いて説明する。
もっとも推移確率の低い、すなわち通常とは異なる推移がK→Eであり、推移K→Eを含む挙動系列の集合が、
(1)B→G→K→K→E→A、
(2)B→F→G→K→E、
(3)A→B→G→K→E→A→B→T、
の3つであったとする。このとき、推移K→Eの挙動到達原因は「B→*→G」となる。一方、推移K→Eを含まない挙動系列の集合中に、メソッド呼出しBは出現しているが、メソッド呼出しGは出現していなかったとする。この場合、メソッド呼出しBは推移K→Eの発生に影響を与えないが、メソッド呼出しGは推移K→Eの発生と強い相関がある。挙動相関関係発見部546はこのメソッド呼出しGを強い相関のある挙動到達原因として求める。つまり、メソッド呼出しGが起きた後は、推移K→Eが起きる可能性が非常に高いといえる。
プログラムの動作をリアルタイムに監視しており、推移K→Eが重大な障害であることがすでにわかっている場合を考える。本実施の形態に第3の実施の形態における予兆検出部を追加した構成では、メソッド呼出しGの発生を常時監視することで、推移K→Eが実際に発生してしまう前に、プログラムの実行を強制終了するなどの対応を行うことができる。
[第6の実施の形態]
次に、本発明の第6の実施の形態について図面を参照して詳細に説明する。
図13を参照すると、本発明の第6の実施の形態にかかる異常挙動検出装置600は、図1に示した第1の実施の形態にかかる異常挙動検出装置100と比較して、依存関係情報681を記憶する記憶装置680を有し、処理装置610が依存関係解析部646を備えている点で異なる。
記憶装置680に記憶された依存関係情報681は、挙動系列の集合671中の各挙動が有する命令群の情報と、プログラムスライシングによって得られる命令間の依存関係の情報を含む。
依存関係解析部646は、命令間の依存関係情報を用いて、挙動間の依存関係を求める。
次に、図13及び図14のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
図14のステップA1〜A4で示される本実施の形態における入力部641、希少挙動部分系列計算部642、挙動系列検索部643および挙動到達原因究明部644の動作は、第1の実施の形態の対応する部分の動作と同一のため、説明を省略する。
本実施の形態では、挙動到達原因究明部644で求められた希少挙動部分系列に対する挙動到達原因675が、希少挙動部分系列672とともに依存関係解析部646に与えられる。依存関係解析部646は、挙動到達原因675のうち、希少挙動部分系列672と依存関係にあるものだけを求め、被依存挙動到達原因676として記憶部655に記憶するとともに、出力部645によって出力装置630に出力する(ステップF1)。依存関係解析部646は具体的には以下のような処理を行う。
依存関係解析部646は、まず、依存関係情報681を使って、希少挙動部分系列672に含まれる命令の集合を抽出し、これらの命令が依存する命令の集合を被依存命令として求める。次に、挙動到達原因675中の各挙動に含まれる命令の集合を抽出し、各挙動が被依存命令を含んでいるかどうかを調べる。そして、挙動到達原因675のうち、被依存命令を含んだ挙動の集合を被依存挙動到達原因676として求める。依存関係解析部646は、必要に応じて、この被依存挙動到達原因676を出力部645によって出力装置630から出力する。
本実施の形態は、第2の実施の形態における挙動受付部246を追加することで、ユーザから指定された挙動や挙動部分系列に対して、被依存挙動到達原因を求めることもできる。また、本実施の形態に、第3の実施の形態における予兆検出部146を追加することで、被依存挙動到達原因676を予兆検出部に与えて、珍しい挙動の発生をより高い精度で事前に予測することもできる。
このように本実施の形態によれば、珍しい挙動が起きる以前に高い確率で現れる挙動のうち、珍しい挙動がデータフローや制御フローの観点から依存している挙動のみを抽出できるように構成されているため、珍しい挙動が起きる原因をより高い精度で特定することができるという効果がある。
[第6の実施の形態の実施例1]
次に、具体的な実施例を用いて本実施の形態の動作を説明する。
第1の実施の形態における第1の実施例と同様の記法および例を用いて説明する。
もっとも推移確率の低い、すなわち通常とは異なる推移がK→Eであり、推移K→Eを含む挙動系列の集合が、
(1)B→G→K→K→E→A、
(2)B→F→G→K→E、
(3)A→B→G→K→E→A→B→T、
の3つであったとする。このとき、推移K→Eの挙動到達原因は「B→*→G」となる。一方、メソッド呼出しKは命令i,jを含んでおり、メソッド呼出しEは命令kを含んでいたとする。プログラムスライシングによって、データフローと制御フローを解析することにより、命令i,j,kが依存する、すなわち命令i,j,kの実行結果に影響を与え得る命令の集合(被依存命令集合)が、命令e,f,g,hであることがわかるとする。また、メソッド呼出しGは命令f,gを含んでいるが、メソッド呼出しBは被依存命令集合のうちのいずれの命令も含んでいなかったとする。このとき、メソッド呼出しGが推移K→Eの発生に影響を与えた可能性が高いため、依存関係解析部646は、このメソッド呼出しGを被依存挙動到達原因676として求め、提示する。
[第7の実施の形態]
たとえば、図11に示した第5の実施の形態と図13に示した第6の実施の形態とを組み合わせ、図15の第7の実施の形態にかかる異常挙動検出装置700に示されるように、挙動相関関係発見部546の後段に依存関係解析部646を設けるようにしても良い。この場合、依存関係解析部646は、まず、依存関係情報681を使って、希少挙動部分系列572に含まれる命令の集合を抽出し、これらの命令が依存する命令の集合を被依存命令として求める。次に、強い相関のある希少挙動到達原因577中の各挙動に含まれる命令の集合を抽出し、各挙動が被依存命令を含んでいるかどうかを調べる。そして、挙動到達原因577のうち、被依存命令を含んだ挙動の集合を被依存挙動到達原因676として求める。依存関係解析部646は、必要に応じて、この被依存挙動到達原因676を出力部645によって出力装置630から出力する。
また、この第7の実施の形態に対して、第2の実施の形態における挙動受付部246を追加することで、ユーザから指定された挙動や挙動部分系列に対して、被依存挙動到達原因を求めることもできる。さらに、この第7の実施の形態に、第3の実施の形態における予兆検出部146を追加することで、被依存挙動到達原因676を予兆検出部に与えて、珍しい挙動の発生をより高い精度で事前に予測することもできる。
[第8の実施の形態]
図15に示した第7の実施の形態では、挙動相関関係発見部546の後段に依存関係解析部646を設けたが、それとは逆に図16の第8の実施の形態にかかる異常挙動検出装置800に示すように、依存関係解析部646の後段に挙動相関関係発見部546を設けるようにしても良い。この場合、挙動相関関係発見部546は、被依存挙動到達原因676のうち、希少挙動部分系列を含まない挙動系列の集合574中に出現しないあるいはほとんど出現しない挙動を、強い相関のある被依存挙動到達原因877として抽出し、記憶部556に記憶するとともに、必要に応じて出力部545により出力装置530から出力する。
また、この第8の実施の形態に対して、第2の実施の形態における挙動受付部246を追加することで、ユーザから指定された挙動や挙動部分系列に対して、被依存挙動到達原因877を求めることもできる。さらに、この第8の実施の形態に、第3の実施の形態における予兆検出部146を追加することで、被依存挙動到達原因877を予兆検出部に与えて、珍しい挙動の発生をより高い精度で事前に予測することもできる。
次に、希少挙動部分系列計算部の実施例について図面を参照して詳細に説明する。
[希少挙動部分系列計算部の実施例1]
図17は第1の実施例にかかる希少挙動部分系列計算部の処理例を示すフローチャートであり、系列中の部分系列自体の出現確率を計算することにより、部分系列の珍しさを計算する一例を示す。希少挙動部分系列計算部の入力は、挙動系列の集合(図1の171等)であり、出力は希少挙動部分系列(図1の172等)である。
図17を参照すると、本実施例にかかる希少挙動部分系列計算部は、入力の挙動系列の集合中に未処理の挙動系列がまだあるかどうかを調べ(ステップS101)、あれば、そのうちの1つの挙動系列を挙動に分解し(ステップS102)、分解された各挙動毎にその出現数を1増やす(ステップS103、S104)。入力の挙動系列の集合中の全ての挙動系列についての処理を終えると、すべての挙動の出現数の合計を求め(ステップS105)、各挙動の出現数を出現数の合計で割って各挙動の出現確率を求め(ステップS106)、求めた出現確率に基づいて挙動をソートする(ステップS107)。そして、出現確率の低い方から順にある個数(1以上の予め定められた個数)の挙動を希少挙動として出力する(ステップS108)。
[希少挙動部分系列計算部の実施例2]
図18は第2の実施例にかかる希少挙動部分系列計算部の処理例を示すフローチャートである。本実施例は、系列中の部分系列自体の出現確率を計算することにより、部分系列の珍しさを計算する点で図17に示した実施例と同じであるが、図17の実施例では出現確率の計算に部分系列を独立事象とみなして事象の起きる確率を求めたのに対し、本実施例では、一次マルコフモデルによる推移確率を用いる点が相違する。実施例1と同様、希少挙動部分系列計算部の入力は、挙動系列の集合(図1の171等)であり、出力は希少挙動部分系列(図1の172等)である。
図18を参照すると、本実施例にかかる希少挙動部分系列計算部は、入力の挙動系列の集合中に未処理の挙動系列がまだあるかどうかを調べ(ステップS201)、あれば、そのうちの1つの挙動系列を図3に示したような挙動の推移に分解し(ステップS202)、分解された各挙動の推移毎にその出現数を1増やす(ステップS203、S204)。入力の挙動系列の集合中の全ての挙動系列についての処理を終えると、各挙動の推移S→Dに関して、未処理の推移の始点Sがまだあるかどうかを調べ(ステップS205)、あれば、そのうちの1つの推移の始点Sに注目して、その始点Sをもつすべての挙動推移の出現数の合計を求め(ステップS206)、その始点Sをもつ各挙動推移の出現数を出現数の合計で割り、図3に例示したような各挙動推移の推移確率を求める(ステップS207)。これを全ての推移の始点Sについて繰り返した後、求めた推移確率に基づいてすべての挙動推移をソートし(ステップS208)、推移確率の低い方から順にある個数(1以上の予め定められた個数)の挙動推移を希少挙動部分系列として出力する(ステップS209)。
[希少挙動部分系列計算部の実施例3]
図19は第3の実施例にかかる希少挙動部分系列計算部のブロック図であり、挙動中の数値の珍しさを用いて希少挙動を求める一例を示す。
図19を参照すると、本実施例の希少挙動部分系列計算部1000は、挙動系列の集合(図1の171等)から挙動系列を1つずつ入力する入力部1001と、入力した挙動系列を挙動に分解する分解部1002と、挙動中の数値を抽出する数値抽出部1003と、挙動中の数値のうち正常な値と判定した数値をそれが抽出された挙動と共に保存する正常値保存部1004と、正常な値と判定する範囲の上限値1005および下限値1006を保持する正常範囲設定部1007と、正常値より明確に大きな数値をそれが抽出された挙動と共に上方異常値として保存する上方異常値保存部1008と、上方異常値と判定する範囲の上限値1009および下限値1010を保持する上方異常範囲設定部1011と、正常値より明確に小さな数値をそれが抽出された挙動と共に下方異常値として保存する下方異常値保存部1012と、下方異常値と判定する範囲の上限値1013および下限値1014を保持する下方異常範囲設定部1015と、数値抽出部1003で抽出された数値をその挙動と共に、その数値と各設定部1007、1011、1015の範囲との比較結果に基づいて正常値保存部1004、上方異常値保存部1008および下方異常値保存部1012の何れかに保存し、必要に応じて正常範囲設定部1007、上方異常範囲設定部1011および下方異常範囲設定部1015の設定の変更、異なる保存部1004、1008、1012間の保存内容の統合、および保存内容の移送を行うことにより、各挙動中の数値を正常な値のグループである正常グループ、正常グループの数値とは明確に大きな数値のグループである上方異常グループ、正常グループの数値とは明確に小さな数値のグループである下方異常グループの3つのグループに分類する分類部1016と、上方異常値保存部1008に保存された上方異常グループに属する数値を抽出した挙動、および下方異常値保存部1012に保存された下方異常グループに属する数値を抽出した挙動を希少挙動として出力する出力部1017とを備えている。
図20〜図22は本実施例の希少挙動部分系列計算部1000の処理例を示すフローチャートであり、S301〜S324(図20)、S331〜S348(図21)、S351〜S367(図22)は各ステップを示す。このうち、ステップS301、S303は入力部1001に、ステップS302は分解部1002に、ステップS304は数値抽出部1003に、ステップS324は出力部1017に、それら以外のステップは分類部1016に、それぞれ対応している。
本実施例の希少挙動部分系列計算部1000は、数値の集合から、上方の異常値(正常値よりずっと大きな値)と、下方の異常値(正常値よりずっと小さな値)を求める。正常値、上方の異常値、下方の異常値は、それぞれ複数あり、値の「範囲」を持つ。
たとえば、値nの近傍をn-aからn+a(a=10)までと定義し、数値の集合を10,13,58,59,71,78,83,102とした場合、近傍の数値同士でグループを作ると、以下のようになる。
グループ1:[10,13]
グループ2:[58,59]
グループ3:[71,78,83]
グループ4:[102]
本実施例の希少挙動部分系列計算部1000は、正常値と上方、下方の異常値との3つのグループを計算するため、グループが4つ以上になると、隣り合うグループを1つに融合する。融合の仕方は、入力される数値の順番によって変わる。
たとえば、上記のグループ1とグループ2を融合すると、以下のような3つのグループになる。
上方の異常値のグループ:[102]
正常値のグループ:[71,78,83]
下方の異常値のグループ:[10,13,58,59]
これらの各グループに属する数値は、上方異常値保存部1008、正常値保存部1004、下方異常値保存部1012に保存されるが、そのとき、正常値や異常値の「範囲」を、それぞれのグループの最小値の近傍の小さい方の値から、最大値の近傍の大きい方の値と定め、上方異常範囲設定部1011、正常範囲設定部1007および下方異常範囲設定部1015に設定する。たとえば上の例の場合、以下のようになる。なお、各グループどうしで範囲に重なりがあっても構わない。
上方異常範囲設定部1011:下限値92〜上限値112
正常範囲設定部1007:下限値61〜上限値93
下方異常範囲設定部1015:下限値0〜上限値69
以下、図20〜図22のフローチャート中、わかりづらい箇所を説明する。
図20のステップS312でYESと判定される場面は、正常値と下方の異常値の間に、どちらからも近い値が追加されたために、異常値がなくなってしまう場合である。例えば、上の例に数値63が追加されると、63は正常値の範囲と下方の異常値の範囲の両方に属するため、異常値が正常値よりずっと低い値ではなくなるという理由から、下方の異常値を正常値の方に組み込んでしまう。つまり、以下のようなグループ分けになる。
上方の異常値のグループ:[102] 下限値92〜上限値112
正常値のグループ:[10,13,58,59,63,71,78,83] 下限値0〜上限値93
下方の異常値のグループ:[なし] 下限値および上限値 なし
同様に図20のステップS319でYESと判定される場面は、上方の異常値が正常値に組み込まれてしまう場合である。
図21のステップS341でYESと判定される場面は、下方の異常値よりずっと小さな値が追加される場合である。例えば、上の例に数値-10が追加された場合を考える。この場合、分類部1016は、-10が異常値としてより重要と考え、これまでの下方の異常値を正常値に組み込み、以下のようにグループを再構成する(ステップS342〜S344、S333、S334)。
上方の異常値のグループ:[102] 下限値92〜上限値112
正常値のグループ:[10,13,58,59,71,78,83] 下限値0〜上限値93
下方の異常値のグループ:[-10] 下限値-20〜上限値0
ただし、上方の異常値がまだ存在しなかったときは(ステップS342でNo)、
正常値→上方の異常値
下方の異常値→正常値
追加の値→下方の異常値
というように、グループが一段スライドする。たとえば、
上方の異常値のグループ:[なし]
正常値のグループ:[71,78,83]
下方の異常値のグループ:[10,13,58,59]
のところに、-10が追加されると、
上方の異常値のグループ:[71,78,83]
正常値のグループ:[10,13,58,59]
下方の異常値のグループ:[-10]
となる。
図22のステップS360でYESとなる場面は、同様に、上方の異常値よりずっと大きな値が追加されて、グループが変化する場合を表している。
以上、本発明の実施の形態および実施例について説明したが、本発明は以上の実施の形態および実施例にのみ限定されず、その他各種の付加変更が可能である。また、本発明の異常挙動検出装置は、その有する機能をハードウェア的に実現することは勿論、コンピュータとプログラムとで実現することができる。プログラムは、磁気ディスクや半導体メモリ等のコンピュータ可読記録媒体に記録されて提供され、コンピュータの立ち上げ時などにコンピュータに読み取られ、そのコンピュータの動作を制御することにより、そのコンピュータを前述した各実施の形態における処理装置内の各機能手段として機能させる。
本発明の第1の実施の形態の構成を示すブロック図である。 本発明の第1の実施の形態の動作を示す流れ図である。 本発明の第1の実施の形態における第1の実施例において、挙動の推移確率を表す一次マルコフモデルの具体例を示す図である。 本発明の第2の実施の形態の構成を示すブロック図である。 本発明の第2の実施の形態の動作を示す流れ図である。 本発明の第2の実施の形態の実施例における出力装置の表示例を示す図である。 本発明の第3の実施の形態の構成を示すブロック図である。 本発明の第3の実施の形態の動作を示す流れ図である。 本発明の第4の実施の形態の構成を示すブロック図である。 本発明の第4の実施の形態の動作を示す流れ図である。 本発明の第5の実施の形態の構成を示すブロック図である。 本発明の第5の実施の形態の動作を示す流れ図である。 本発明の第6の実施の形態の構成を示すブロック図である。 本発明の第6の実施の形態の動作を示す流れ図である。 本発明の第7の実施の形態の構成を示すブロック図である。 本発明の第8の実施の形態の構成を示すブロック図である。 本発明で用いる希少挙動部分系列計算部の第1の実施例の動作を示す流れ図である。 本発明で用いる希少挙動部分系列計算部の第2の実施例の動作を示す流れ図である。 本発明で用いる希少挙動部分系列計算部の第3の実施例の構成を示すブロック図である。 本発明で用いる希少挙動部分系列計算部の第3の実施例の動作を示す流れ図である。 本発明で用いる希少挙動部分系列計算部の第3の実施例の動作を示す流れ図である。 本発明で用いる希少挙動部分系列計算部の第3の実施例の動作を示す流れ図である。 従来の技術の構成を示すブロック図である。
符号の説明
100…異常挙動検出装置
110…処理装置
120…記憶装置
130…出力装置
141…入力部
142…希少挙動部分系列計算部
143…挙動系列検索部
144…挙動到達原因究明部
145…出力部
151〜154…記憶部
160…動作主体の挙動系列
171…挙動系列の集合
172…希少挙動部分系列
173…希少挙動部分系列を含む挙動系列の集合
174…共通部分系列
175…希少挙動部分系列到達原因

Claims (3)

  1. 動作開始から終了までの計算機のソフトウェアに依拠する事象の系列である挙動系列の集合を記憶する第1の記憶部と、
    前記第1の記憶部に記憶された前記挙動系列の集合から、希少挙動部分系列を検出する希少挙動部分系列計算手段と、
    前記希少挙動部分系列計算手段で検出された希少挙動部分系列を記憶する第2の記憶部と、
    前記第1の記憶部に記憶された前記挙動系列の集合から、前記第2の記憶部に記憶された前記希少挙動部分系列を含む挙動系列の集合を抽出する挙動系列検索手段と、
    前記挙動系列検索手段で抽出された前記希少挙動部分系列を含む挙動系列の集合を記憶する第3の記憶部と、
    前記第3の記憶部に記憶された前記希少挙動部分系列を含む挙動系列の集合から、前記第2の記憶部に記憶された前記希少挙動部分系列より前に高い確率で出現する部分系列を、希少挙動部分系列到達原因として検出する挙動到達原因検出手段と、
    前記挙動到達原因検出手段で検出された希少挙動部分系列到達原因を記憶する第4の記憶部と、
    前記計算機から新たに得られる挙動を前記計算機から直接入力し監視することにより、前記第4の記憶部に記憶された希少挙動部分系列到達原因と一致する挙動を検出し、異常が発生する可能性が高い旨の警告を出力装置を介して出力する予兆検出手段と、
    を備えることを特徴とする異常挙動原因検出装置。
  2. 希少挙動部分系列計算手段と、該希少挙動部分系列計算手段に接続された挙動系列検索手段と、該挙動系列検索手段に接続された挙動到達原因検出手段と、該挙動到達原因検出手段に接続された予兆検出手段と、前記希少挙動部分系列計算手段および前記挙動系列検索手段に接続された第1の記憶部と、前記希少挙動部分系列計算手段、前記挙動系列検索手段および前記挙動到達原因検出手段に接続された第2の記憶部と、前記挙動系列検索手段および前記挙動到達原因検出手段に接続された第3の記憶部と、前記挙動到達原因検出手段および前記予兆検出手段に接続された第4の記憶部と、前記予兆検出手段に接続された出力装置とを備えるコンピュータが実行する異常挙動原因検出方法であって、
    前記希少挙動部分系列計算手段が、動作開始から終了までの計算機のソフトウェアに依拠する事象の系列である挙動系列の集合を記憶する前記第1の記憶部に記憶された前記挙動系列の集合から、希少挙動部分系列を検出して、前記第2の記憶部に記憶し、
    前記挙動系列検索手段が、前記第1の記憶部に記憶された前記挙動系列の集合から、前記第2の記憶部に記憶された前記希少挙動部分系列を含む挙動系列の集合を抽出して、前記第3の記憶部に記憶し、
    前記挙動到達原因検出手段が、前記第3の記憶部に記憶された前記希少挙動部分系列を含む挙動系列の集合から、前記第2の記憶部に記憶された前記希少挙動部分系列より前に高い確率で出現する部分系列を、希少挙動部分系列到達原因として検出して、前記第4の記憶部に記憶し、
    前記予兆検出手段が、前記計算機から新たに得られる挙動を前記計算機から直接入力し監視することにより、前記第4の記憶部に記憶された希少挙動部分系列到達原因と一致する挙動を検出し、異常が発生する可能性が高い旨の警告を前記出力装置を介して出力する、
    ことを特徴とする異常挙動原因検出方法。
  3. コンピュータを、
    動作開始から終了までの計算機のソフトウェアに依拠する事象の系列である挙動系列の集合を記憶する第1の記憶部と、
    前記第1の記憶部に記憶された前記挙動系列の集合から、希少挙動部分系列を検出する希少挙動部分系列計算手段と、
    前記希少挙動部分系列計算手段で検出された希少挙動部分系列を記憶する第2の記憶部と、
    前記第1の記憶部に記憶された前記挙動系列の集合から、前記第2の記憶部に記憶された前記希少挙動部分系列を含む挙動系列の集合を抽出する挙動系列検索手段と、
    前記挙動系列検索手段で抽出された前記希少挙動部分系列を含む挙動系列の集合を記憶する第3の記憶部と、
    前記第3の記憶部に記憶された前記希少挙動部分系列を含む挙動系列の集合から、前記第2の記憶部に記憶された前記希少挙動部分系列より前に高い確率で出現する部分系列を、希少挙動部分系列到達原因として検出する挙動到達原因検出手段と、
    前記挙動到達原因検出手段で検出された希少挙動部分系列到達原因を記憶する第4の記憶部と、
    前記計算機から新たに得られる挙動を前記計算機から直接入力し監視することにより、前記第4の記憶部に記憶された希少挙動部分系列到達原因と一致する挙動を検出し、異常が発生する可能性が高い旨の警告を出力装置を介して出力する予兆検出手段と、
    して機能させるためのプログラム。
JP2003376657A 2003-11-06 2003-11-06 異常挙動検出装置および異常挙動検出方法ならびにプログラム、希少挙動部分系列計算装置 Expired - Fee Related JP4461771B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003376657A JP4461771B2 (ja) 2003-11-06 2003-11-06 異常挙動検出装置および異常挙動検出方法ならびにプログラム、希少挙動部分系列計算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003376657A JP4461771B2 (ja) 2003-11-06 2003-11-06 異常挙動検出装置および異常挙動検出方法ならびにプログラム、希少挙動部分系列計算装置

Publications (2)

Publication Number Publication Date
JP2005141459A JP2005141459A (ja) 2005-06-02
JP4461771B2 true JP4461771B2 (ja) 2010-05-12

Family

ID=34687633

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003376657A Expired - Fee Related JP4461771B2 (ja) 2003-11-06 2003-11-06 異常挙動検出装置および異常挙動検出方法ならびにプログラム、希少挙動部分系列計算装置

Country Status (1)

Country Link
JP (1) JP4461771B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007172131A (ja) * 2005-12-20 2007-07-05 Nec Fielding Ltd 障害予測システム、障害予測方法、障害予測プログラム
JP4862446B2 (ja) * 2006-03-22 2012-01-25 日本電気株式会社 障害原因推定システム、方法、及び、プログラム
JP4919825B2 (ja) * 2007-01-30 2012-04-18 株式会社東芝 プログラム開発装置、プログラム開発方法およびプログラム
WO2010131746A1 (ja) * 2009-05-15 2010-11-18 日本電気株式会社 障害原因推定システム、障害原因推定方法、及び障害原因推定プログラム
JP7162550B2 (ja) * 2019-02-15 2022-10-28 オムロン株式会社 モデル生成装置、予測装置、モデル生成方法、及びモデル生成プログラム

Also Published As

Publication number Publication date
JP2005141459A (ja) 2005-06-02

Similar Documents

Publication Publication Date Title
US20180046529A1 (en) Log analysis system, log analysis method and program recording medium
JP5274565B2 (ja) 検出ルール生成装置、検出ルール生成方法及びコンピュータプログラム
KR101149828B1 (ko) 유스케이스 다이어그램을 기반으로 하는 테스트 케이스 생성 프로그램 및 이를 이용하여 테스트 케이스를 생성하는 방법
US20110016452A1 (en) Method and system for identifying regression test cases for a software
KR102298395B1 (ko) 사용자 행위 분석 시스템 및 방법과, 이를 위한 이벤트 수집 에이전트
CN111949480A (zh) 一种基于组件感知的日志异常检测方法
US9600572B2 (en) Method, computer program and apparatus for analyzing symbols in a computer system
JP2008204405A (ja) ソフトウェアのリグレッションテストシステム、リグレッションテストプログラムおよびリグレッションテスト方法
US8543552B2 (en) Detecting statistical variation from unclassified process log
US6522768B1 (en) Predicting system behavior of a managed system using pattern recognition techniques
JP4461771B2 (ja) 異常挙動検出装置および異常挙動検出方法ならびにプログラム、希少挙動部分系列計算装置
CN112905370A (zh) 拓扑图生成方法、异常检测方法、装置、设备及存储介质
JP5219783B2 (ja) 不正アクセス検知装置及び不正アクセス検知プログラム及び記録媒体及び不正アクセス検知方法
JP2013182468A (ja) パラメータ値設定誤り検出システム、パラメータ値設定誤り検出方法およびパラメータ値設定誤り検出プログラム
CN112416800A (zh) 智能合约的测试方法、装置、设备及存储介质
JP6917874B2 (ja) システム特性評価システムおよびシステム特性評価装置
Bogatinovski et al. Leveraging log instructions in log-based anomaly detection
CN115994093A (zh) 测试用例推荐方法和装置
US20170160714A1 (en) Acquisition of high frequency data in transient detection
JP2013077124A (ja) ソフトウェアテストケース生成装置
KR102275635B1 (ko) 함수 호출 패턴 분석을 통한 이상 검출 장치 및 방법
CN115062144A (zh) 一种基于知识库和集成学习的日志异常检测方法与系统
CN115114343A (zh) 根因规则建立方法、根因分析方法和装置
CN114528558B (zh) 基于改进神经网络的态势感知方法和可读存储介质
JP2008262473A (ja) 設備保全管理システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060713

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090113

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20090525

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20090525

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090714

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090902

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090929

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091210

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20100105

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

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

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

Free format text: PAYMENT UNTIL: 20130226

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130226

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140226

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees