JPWO2014050424A1 - シグニチャ検証装置及びシグニチャ検証方法及びプログラム - Google Patents
シグニチャ検証装置及びシグニチャ検証方法及びプログラム Download PDFInfo
- Publication number
- JPWO2014050424A1 JPWO2014050424A1 JP2014538302A JP2014538302A JPWO2014050424A1 JP WO2014050424 A1 JPWO2014050424 A1 JP WO2014050424A1 JP 2014538302 A JP2014538302 A JP 2014538302A JP 2014538302 A JP2014538302 A JP 2014538302A JP WO2014050424 A1 JPWO2014050424 A1 JP WO2014050424A1
- Authority
- JP
- Japan
- Prior art keywords
- signature
- pattern
- data pattern
- attack
- data
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
Abstract
膨大な数の検証を行わずに、シグニチャ情報で検知できない攻撃が存在するか否かを判別する。シグニチャ検知対象外データパターン抽出部105は、シグニチャ情報102に対する解析を行い、シグニチャ情報102では検知されないデータのパターンを抽出する。攻撃データパターン抽出部107は、シグニチャ情報102が適用される対象プログラムに対する解析を行い、対象プログラムを攻撃する攻撃データのパターンを抽出する。パターン比較部108は、シグニチャ検知対象外データパターン抽出部105により抽出されたシグニチャ検知対象外データパターンと攻撃データパターン抽出部107により抽出された攻撃データパターンとを比較し、シグニチャ検知対象外データパターンに該当する攻撃データパターンを、シグニチャ情報102では検知されない攻撃データパターンとして抽出する。
Description
本発明は、シグニチャ情報(以下、単にシグニチャともいう)を検証する技術に関する。
なお、シグニチャ情報とは、攻撃を行うためのコマンドやデータの特徴が記述された情報である。
なお、シグニチャ情報とは、攻撃を行うためのコマンドやデータの特徴が記述された情報である。
侵入検知装置(Intrusion Detection System:IDS)のシグニチャを検証する技術としては、例えば特許文献1にあるように、実際に攻撃を行うプログラムを実行し、プログラムから送信される通信に対して攻撃の検知が行えるか確認する方法が知られている。
Brumley D.他 Automatic patch−based exploit generation is possible: Techniques and implications. In: Proc of the 2008 IEEE Symposium on Security and Privacy (2008)
IDSは、シグニチャと呼ばれるパターン情報と監視対象ネットワークを流れるトラフィックとを比較し、パターンに合致するトラフィックがネットワークを流れた場合に当該トラフィックを攻撃とみなす。
シグニチャは、検知対象とする攻撃ごとに定義されている。
シグニチャに合致する通信が発生した場合に、そのシグニチャが検知対象としている攻撃が発生したとして、ネットワーク管理者に通報が行われる。
シグニチャは、検知対象とする攻撃ごとに定義されている。
シグニチャに合致する通信が発生した場合に、そのシグニチャが検知対象としている攻撃が発生したとして、ネットワーク管理者に通報が行われる。
シグニチャは、新たな攻撃が発見される度にIDSの開発元が作成し、定期的、あるいは必要に応じて装置のユーザに配布されるのが一般的である。
但し、そのシグニチャが、検知対象としている攻撃を全て検出できるかどうかの情報については非公開である。
ユーザがシグニチャを検証するには、ユーザが実際に攻撃ツールを入手して攻撃トラフィックを生成してIDSに入力し、検知が行えるかどうかを判定する必要がある。
使用された攻撃ツールの生成するトラフィックが全ての攻撃パターンを網羅していない限り、実際にはシグニチャに検知漏れの可能性があってもユーザは認識することができない。
但し、そのシグニチャが、検知対象としている攻撃を全て検出できるかどうかの情報については非公開である。
ユーザがシグニチャを検証するには、ユーザが実際に攻撃ツールを入手して攻撃トラフィックを生成してIDSに入力し、検知が行えるかどうかを判定する必要がある。
使用された攻撃ツールの生成するトラフィックが全ての攻撃パターンを網羅していない限り、実際にはシグニチャに検知漏れの可能性があってもユーザは認識することができない。
攻撃に利用可能なプログラムの脆弱性に対し、修正が施されたプログラムと修正前のプログラムとを比較して、修正後のプログラムで追加、変更された命令から脆弱性を攻撃するデータを生成する手法として例えば非特許文献1に挙げられる技術が知られている。
このような技術を使用しても、実際にシグニチャが生成される攻撃データ全てに対して検知可能であるかは、実際に生成したデータを使ってIDSで試験するしかなく、攻撃データのバリエーションが膨大である場合、試験が終了しないという課題がある。
このような技術を使用しても、実際にシグニチャが生成される攻撃データ全てに対して検知可能であるかは、実際に生成したデータを使ってIDSで試験するしかなく、攻撃データのバリエーションが膨大である場合、試験が終了しないという課題がある。
この発明は上記のような課題を解決することを主な目的の1つとしており、膨大な数の検証を行わずに、シグニチャ情報で検知できない攻撃が存在するか否かを判別することを主な目的とする。
本発明に係るシグニチャ検証装置は、
シグニチャ情報に対する解析を行い、前記シグニチャ情報では検知されないデータのパターンを抽出するシグニチャ検知対象外データパターン抽出部と、
前記シグニチャ情報が適用される対象プログラムに対する解析を行い、前記対象プログラムを攻撃する攻撃データのパターンを抽出する攻撃データパターン抽出部と、
前記シグニチャ検知対象外データパターン抽出部により抽出されたシグニチャ検知対象外データパターンと前記攻撃データパターン抽出部により抽出された攻撃データパターンとを比較し、シグニチャ検知対象外データパターンに該当する攻撃データパターンを、前記シグニチャ情報では検知されない攻撃データパターンとして抽出するパターン比較部とを有することを特徴とする。
シグニチャ情報に対する解析を行い、前記シグニチャ情報では検知されないデータのパターンを抽出するシグニチャ検知対象外データパターン抽出部と、
前記シグニチャ情報が適用される対象プログラムに対する解析を行い、前記対象プログラムを攻撃する攻撃データのパターンを抽出する攻撃データパターン抽出部と、
前記シグニチャ検知対象外データパターン抽出部により抽出されたシグニチャ検知対象外データパターンと前記攻撃データパターン抽出部により抽出された攻撃データパターンとを比較し、シグニチャ検知対象外データパターンに該当する攻撃データパターンを、前記シグニチャ情報では検知されない攻撃データパターンとして抽出するパターン比較部とを有することを特徴とする。
本発明によれば、シグニチャ情報に対する解析結果と、シグニチャ情報が適用される対象プログラムに対する解析結果とに基づき、シグニチャ情報では検知されない攻撃データパターンを抽出するため、膨大な数の検証を行わなくても、シグニチャ情報で検知できない攻撃が存在するか否かを判別することができる。
実施の形態1.
本実施の形態では、攻撃データのパターンと、シグニチャとを直接比較することにより、膨大な数の検証を行うことなくシグニチャの漏れがあるかどうかを識別する例を説明する。
本実施の形態では、攻撃データのパターンと、シグニチャとを直接比較することにより、膨大な数の検証を行うことなくシグニチャの漏れがあるかどうかを識別する例を説明する。
図1は、本実施の形態に係るシグニチャ検証装置103の構成例を示す。
シグニチャ検証装置103は、IDS装置101から取り出されたシグニチャ情報102、修正前プログラム110及び修正後プログラム106を受け取る。
また、シグニチャ検証装置103は、シグニチャ情報102に記載の検知パターンが、検知対象としている脆弱性攻撃を漏れなく検知できるかどうかを示すシグニチャ検証結果111を出力する。
修正前プログラム110は、シグニチャ情報102が検知対象としている脆弱性攻撃が対象とするプログラムであって、脆弱性に対する修正が行われる前のプログラムである。
修正後プログラム106は、修正前プログラム110において脆弱性に対する修正が行われた後のプログラムである。
また、シグニチャ検証装置103は、シグニチャ情報102に記載の検知パターンが、検知対象としている脆弱性攻撃を漏れなく検知できるかどうかを示すシグニチャ検証結果111を出力する。
修正前プログラム110は、シグニチャ情報102が検知対象としている脆弱性攻撃が対象とするプログラムであって、脆弱性に対する修正が行われる前のプログラムである。
修正後プログラム106は、修正前プログラム110において脆弱性に対する修正が行われた後のプログラムである。
本実施の形態ではシグニチャ情報102をIDS装置101から取り出す方法を開示しているが、例えばIDS開発元のウェブサイトからシグネチャ情報102を直接ダウンロードするような構成とすることももちろん可能である。
また、本実施の形態では、シグニチャ検証装置103は、修正前プログラム110、修正後プログラム106を入力しているが、その他にも例えば修正前プログラム及び、修正用の差分情報(いわゆるパッチ)を入力とすることも可能である。
また、プログラムが自由にインターネットからダウンロード可能な場合、シグニチャ検証装置103は、定期的にインターネットからプログラムをダウンロードしておくことで、任意の時点での修正前、修正後プログラムを自動で入手することも可能である。
また、本実施の形態では、シグニチャ検証装置103は、修正前プログラム110、修正後プログラム106を入力しているが、その他にも例えば修正前プログラム及び、修正用の差分情報(いわゆるパッチ)を入力とすることも可能である。
また、プログラムが自由にインターネットからダウンロード可能な場合、シグニチャ検証装置103は、定期的にインターネットからプログラムをダウンロードしておくことで、任意の時点での修正前、修正後プログラムを自動で入手することも可能である。
シグニチャ検証装置103は、シグニチャ入力部104、シグニチャ検知対象外データパターン抽出部105、攻撃データパターン抽出部107、パターン比較部108、比較結果出力部109で構成されている。
シグニチャ入力部104は、シグニチャ情報102をシグニチャ検証装置103内部に取り込み、シグニチャ情報102内に定義されている、検知対象とするデータのパターン定義情報を取り出す。
つまり、シグニチャ入力部104は、シグニチャ情報102から、シグニチャ情報102が検知の対象とするデータのパターンが定義されるパターン定義情報を抽出する。
シグニチャ入力部104は、パターン定義情報抽出部の例に相当する。
つまり、シグニチャ入力部104は、シグニチャ情報102から、シグニチャ情報102が検知の対象とするデータのパターンが定義されるパターン定義情報を抽出する。
シグニチャ入力部104は、パターン定義情報抽出部の例に相当する。
シグニチャ検知対象外データパターン抽出部105は、シグニチャ入力部104によって取り出されたパターン定義情報を入力し、パターン定義情報では検知されない全てのデータにマッチするパターン(シグニチャ検知対象外データパターン)を抽出する。
つまり、シグニチャ検知対象外データパターン抽出部105は、シグニチャ情報102から抽出されたパターン定義情報を解析し、パターン定義情報では検知されないデータのパターンをシグニチャ検知対象外データパターンとして抽出する。
つまり、シグニチャ検知対象外データパターン抽出部105は、シグニチャ情報102から抽出されたパターン定義情報を解析し、パターン定義情報では検知されないデータのパターンをシグニチャ検知対象外データパターンとして抽出する。
攻撃データパターン抽出部107は、修正前プログラム110及び修正後プログラム106を入力し、脆弱性に対処するためにプログラムに施された修正内容から、脆弱性を攻撃可能な攻撃データのパターン(攻撃データパターン)を生成する。
つまり、攻撃データパターン抽出部107は、シグニチャ情報102が適用される対象プログラム(修正前プログラム110及び修正後プログラム106)に対する解析を行い、対象プログラムを攻撃する攻撃データのパターンを攻撃データパターンとして抽出する。
つまり、攻撃データパターン抽出部107は、シグニチャ情報102が適用される対象プログラム(修正前プログラム110及び修正後プログラム106)に対する解析を行い、対象プログラムを攻撃する攻撃データのパターンを攻撃データパターンとして抽出する。
パターン比較部108は、シグニチャ検知対象外データパターン抽出部105によって抽出されたシグニチャ検知対象外データパターンと、攻撃データパターン抽出部107によって抽出された攻撃データパターンを比較する。
そして、パターン比較部108は、シグニチャ情報102で定義されている検知パターンでは検知できない攻撃データのパターンを抽出する。
つまり、パターン比較部108は、シグニチャ検知対象外データパターンに該当する攻撃データパターンを、シグニチャ情報102では検知されない攻撃データパターンとして抽出する。
そして、パターン比較部108は、シグニチャ情報102で定義されている検知パターンでは検知できない攻撃データのパターンを抽出する。
つまり、パターン比較部108は、シグニチャ検知対象外データパターンに該当する攻撃データパターンを、シグニチャ情報102では検知されない攻撃データパターンとして抽出する。
比較結果出力部109は、パターン比較部108により抽出された攻撃データのパターンが空かどうか判定し、結果をシグニチャ検証結果111として出力する。
次に、シグニチャ検証装置103の各要素の動作について説明する。
はじめに、シグニチャ入力部104の動作について説明する。
前述の通り、シグニチャ入力部104は、入力されたシグニチャ情報102から検知対象とするデータのパターン定義情報を取り出す。
パターン定義情報は、一般に正規表現で表される。
シグニチャ情報102に含まれる情報の種類や書式はIDS装置によって変わるが、どのようなIDSのシグニチャ情報であっても検知対象とするデータのパターン定義情報は含まれている。
そのため、分析対象とするシグニチャ情報の書式にあわせて、シグニチャ入力部104を構成することは容易であり、ここではシグニチャ入力部104の構成を詳しく説明しない。
前述の通り、シグニチャ入力部104は、入力されたシグニチャ情報102から検知対象とするデータのパターン定義情報を取り出す。
パターン定義情報は、一般に正規表現で表される。
シグニチャ情報102に含まれる情報の種類や書式はIDS装置によって変わるが、どのようなIDSのシグニチャ情報であっても検知対象とするデータのパターン定義情報は含まれている。
そのため、分析対象とするシグニチャ情報の書式にあわせて、シグニチャ入力部104を構成することは容易であり、ここではシグニチャ入力部104の構成を詳しく説明しない。
次に、シグニチャ検知対象外データパターン抽出部105の動作について説明する。
前述の通り、シグニチャ検知対象外データパターン抽出部105はシグニチャ入力部104によって取り出されたパターン定義情報を入力し、パターン定義情報に定義されているパターンでは検知されない全てのデータにマッチするパターン(シグニチャ検知対象外データパターン)を生成する。
前述の通り、シグニチャ検知対象外データパターン抽出部105はシグニチャ入力部104によって取り出されたパターン定義情報を入力し、パターン定義情報に定義されているパターンでは検知されない全てのデータにマッチするパターン(シグニチャ検知対象外データパターン)を生成する。
図2は、シグニチャ検知対象外データパターン抽出部105の動作例を示すフローチャートである。
シグニチャ検知対象外データパターン抽出部105は、入力としてシグニチャ情報102のパターン定義情報を表す正規表現を受け取り、受け取った正規表現を変数Sに格納する(S201)。
次にS202において、シグニチャ検知対象外データパターン抽出部105は、Sの両端に任意の文字列を受理する正規表現である”.*”を付加した新たな正規表現S’を生成する。
その後、S203において、シグニチャ検知対象外データパターン抽出部105は、正規表現S’から、同正規表現にマッチするデータのみを受理可能な有限状態オートマトン(以後オートマトンと略す)を生成し、生成したオートマトンを変数Aに格納する。
与えられた正規表現にマッチするデータのみを受理可能な有限状態オートマトンの構成方法は広く知られており、例えば参考文献1などに詳しい。
参考文献1:中田育男 コンパイラの構成と最適化 ISBN978−4−254−12139−1
その後、S204において、シグニチャ検知対象外データパターン抽出部105は、変数Aに格納されたオートマトンの受理状態と、非受理状態を入れ替えることで新たなオートマトンを生成(A’)し、新たなオートマトンを出力してシグニチャ検知対象外データパターン抽出部105の処理は終了する。
シグニチャ検知対象外データパターン抽出部105は、入力としてシグニチャ情報102のパターン定義情報を表す正規表現を受け取り、受け取った正規表現を変数Sに格納する(S201)。
次にS202において、シグニチャ検知対象外データパターン抽出部105は、Sの両端に任意の文字列を受理する正規表現である”.*”を付加した新たな正規表現S’を生成する。
その後、S203において、シグニチャ検知対象外データパターン抽出部105は、正規表現S’から、同正規表現にマッチするデータのみを受理可能な有限状態オートマトン(以後オートマトンと略す)を生成し、生成したオートマトンを変数Aに格納する。
与えられた正規表現にマッチするデータのみを受理可能な有限状態オートマトンの構成方法は広く知られており、例えば参考文献1などに詳しい。
参考文献1:中田育男 コンパイラの構成と最適化 ISBN978−4−254−12139−1
その後、S204において、シグニチャ検知対象外データパターン抽出部105は、変数Aに格納されたオートマトンの受理状態と、非受理状態を入れ替えることで新たなオートマトンを生成(A’)し、新たなオートマトンを出力してシグニチャ検知対象外データパターン抽出部105の処理は終了する。
入力されたシグニチャ情報102のパターン定義情報に対しどのように処理が行われるかの具体例を図3に示す。
図3においては、符号301に示される正規表現(ここでは”abc”という文字列にのみマッチする)が入力として与えられたものとする。
先に説明したS202によって生成された符号301の正規表現から、符号302の正規表現が生成され、その後S203によってオートマトン303が生成される。
図3においては、符号301に示される正規表現(ここでは”abc”という文字列にのみマッチする)が入力として与えられたものとする。
先に説明したS202によって生成された符号301の正規表現から、符号302の正規表現が生成され、その後S203によってオートマトン303が生成される。
オートマトン303の表記について概略を説明する。
符号306〜309の円がオートマトンの各「状態」を表しており、円中の番号が各状態の識別子となっている。
状態間を結ぶ矢印は状態遷移を表している。
例えば符号311が示す矢印は、状態2(307)の時点で入力文字”b”を受け取った場合、状態3(308)へと遷移することを示している。
状態遷移は符号310のように、遷移元と遷移先が同じこともある。
状態4(309)は、状態の中でも受理状態と呼ばれ、オートマトンがこの状態にいるときに入力が終了すると、入力された文字列はオートマトンに受理されたとみなす。
それ以外の状態は非受理状態であり、これらの状態で入力が終了すると、入力はオートマトンに受理されなかったものとみなされる。
最後に黒丸305は、状態1がオートマトンの初期状態であることを示している。
符号306〜309の円がオートマトンの各「状態」を表しており、円中の番号が各状態の識別子となっている。
状態間を結ぶ矢印は状態遷移を表している。
例えば符号311が示す矢印は、状態2(307)の時点で入力文字”b”を受け取った場合、状態3(308)へと遷移することを示している。
状態遷移は符号310のように、遷移元と遷移先が同じこともある。
状態4(309)は、状態の中でも受理状態と呼ばれ、オートマトンがこの状態にいるときに入力が終了すると、入力された文字列はオートマトンに受理されたとみなす。
それ以外の状態は非受理状態であり、これらの状態で入力が終了すると、入力はオートマトンに受理されなかったものとみなされる。
最後に黒丸305は、状態1がオートマトンの初期状態であることを示している。
シグニチャ検知対象外データパターン抽出部105は、オートマトン303を生成した後、最後にS204にてオートマトンの受理状態と、非受理状態を入れ替えた新たなオートマトン304を生成し、処理結果として出力する。
次に、攻撃データパターン抽出部107の動作について説明する。
前述の通り、攻撃データパターン抽出部107は、修正前プログラム110及び修正後プログラム106を入力とし、脆弱性に対処するためにプログラムに施された修正内容から、脆弱性を攻撃可能な攻撃データのパターンを生成する。
前述の通り、攻撃データパターン抽出部107は、修正前プログラム110及び修正後プログラム106を入力とし、脆弱性に対処するためにプログラムに施された修正内容から、脆弱性を攻撃可能な攻撃データのパターンを生成する。
図4は、攻撃データパターン抽出部107の動作例を示すフローチャートである。
S401に示すとおり、攻撃データパターン抽出部107は、修正前プログラム110及び修正後プログラム106を入力として呼び出され、それぞれを変数P、P’に格納する。
次にS402において、攻撃データパターン抽出部107は、脆弱性を攻撃するデータに関する制約条件を算出し、算出した制約条件を変数Cへ代入する。
制約条件の算出は、例えば非特許文献1で示しているように、P、P’を比較し、脆弱性への対策として追加された入力データ検査処理を抽出し、データの入力から同検査処理に到達するまでに行われる(既存の)入力データ検査の検査条件と、新たに追加された入力データ検査の検査条件を組み合わせることで算出することが可能である。
S402で生成される制約条件は、例えば以下のようなものになる。
(入力文字列長<100)∨(100≦入力文字列長∧入力文字列内に“mode=LONG”を含む)
S401に示すとおり、攻撃データパターン抽出部107は、修正前プログラム110及び修正後プログラム106を入力として呼び出され、それぞれを変数P、P’に格納する。
次にS402において、攻撃データパターン抽出部107は、脆弱性を攻撃するデータに関する制約条件を算出し、算出した制約条件を変数Cへ代入する。
制約条件の算出は、例えば非特許文献1で示しているように、P、P’を比較し、脆弱性への対策として追加された入力データ検査処理を抽出し、データの入力から同検査処理に到達するまでに行われる(既存の)入力データ検査の検査条件と、新たに追加された入力データ検査の検査条件を組み合わせることで算出することが可能である。
S402で生成される制約条件は、例えば以下のようなものになる。
(入力文字列長<100)∨(100≦入力文字列長∧入力文字列内に“mode=LONG”を含む)
次に、S403において、攻撃データパターン抽出部107は、生成された制約条件を加法標準形に変形し、変形後の制約条件を変数C’に格納する。
加法標準形とは論理式を連言節の選言として表現したものであり、任意の論理式をこの形式に変形することが可能である。
加法標準形とは論理式を連言節の選言として表現したものであり、任意の論理式をこの形式に変形することが可能である。
次に、S404からS416で、攻撃データパターン抽出部107は、C’から同条件(加法標準形に変形した制約条件)を満たす文字列の「文法」を生成する。
文法は文脈自由文法として表される。
文脈自由文法とは、全ての生成規則の左辺が1個の非終端記号のみで構成されている文法である。
まず、攻撃データパターン抽出部107は、S404で生成規則を一つも含まない空の文法を生成し、S405で開始記号Sを与えることで、最終的な出力となる文法Gを初期化する。
次に、攻撃データパターン抽出部107は、S407からS415のループにおいて、制約条件C’中の各連言節に対応する制約条件を満たした(部分的な)文法を生成する。
まず、攻撃データパターン抽出部107は、S408において、変数Xを任意の文字列を受理する文法で初期化する。
このような条件を満たす文法としては、例えば以下のような文法を与えることが可能である(εは空を表す記号)。
X::=ε
X::=任意の1文字 X
文法は文脈自由文法として表される。
文脈自由文法とは、全ての生成規則の左辺が1個の非終端記号のみで構成されている文法である。
まず、攻撃データパターン抽出部107は、S404で生成規則を一つも含まない空の文法を生成し、S405で開始記号Sを与えることで、最終的な出力となる文法Gを初期化する。
次に、攻撃データパターン抽出部107は、S407からS415のループにおいて、制約条件C’中の各連言節に対応する制約条件を満たした(部分的な)文法を生成する。
まず、攻撃データパターン抽出部107は、S408において、変数Xを任意の文字列を受理する文法で初期化する。
このような条件を満たす文法としては、例えば以下のような文法を与えることが可能である(εは空を表す記号)。
X::=ε
X::=任意の1文字 X
次に、S410〜S413に示すループにおいて、攻撃データパターン抽出部107は、n番目の連言節に含まれる全ての制約条件を満たす文法規則を生成する。
まず、S411において、攻撃データパターン抽出部107は、C’のn番目の連言節に含まれる各リテラル(原子論理式及びその否定)を取り出し、取り出された条件を対応するオートマトンに変換し、オートマトンを変数Rへ代入する。
変換は図5のような変換テーブルを用いて行う。
変換テーブルは、変換対象とする条件に対し、対応するオートマトンを生成するための方法を定義したテーブルである。
変換テーブルは変換対象とする条件を記述したカラム502と対応するオートマトンの生成方法を定義したカラム503で構成されている。
S411において、例えば“入力文字列長<100”というリテラルに対しては、条件カラム502が検索され、レコード504がマッチする。
その結果、符号506に示されるようなオートマトンが生成される。
ただし、条件504の文言中Nと表記されている部分は、この例の場合100になる。
リテラルがある原子論理式の否定であった場合には、条件505にマッチするため、同原子論理式に対応するオートマトンが生成され、その後同オートマトンの受理・非受理状態の反転が行われる。
次に、S412において文法XとオートマトンRを引数として手続き「INTERSECT」が呼び出される。
「INTERSECT」は、文法XとオートマトンRがともに受理する文字列が満たす文法を生成する処理であり、そのアルゴリズムとしては、例えば参考文献2に示されるような方法を適用可能である。
参考文献2:D. Melski and T. Reps. Interconvertibility of Set Constraints and Context−Free Language Reachability. In Proceedings of the 1997 ACM SIGPLAN Symposium on Partial Evaluation and Semantics−based Program Manipulation、 pages 74−89
まず、S411において、攻撃データパターン抽出部107は、C’のn番目の連言節に含まれる各リテラル(原子論理式及びその否定)を取り出し、取り出された条件を対応するオートマトンに変換し、オートマトンを変数Rへ代入する。
変換は図5のような変換テーブルを用いて行う。
変換テーブルは、変換対象とする条件に対し、対応するオートマトンを生成するための方法を定義したテーブルである。
変換テーブルは変換対象とする条件を記述したカラム502と対応するオートマトンの生成方法を定義したカラム503で構成されている。
S411において、例えば“入力文字列長<100”というリテラルに対しては、条件カラム502が検索され、レコード504がマッチする。
その結果、符号506に示されるようなオートマトンが生成される。
ただし、条件504の文言中Nと表記されている部分は、この例の場合100になる。
リテラルがある原子論理式の否定であった場合には、条件505にマッチするため、同原子論理式に対応するオートマトンが生成され、その後同オートマトンの受理・非受理状態の反転が行われる。
次に、S412において文法XとオートマトンRを引数として手続き「INTERSECT」が呼び出される。
「INTERSECT」は、文法XとオートマトンRがともに受理する文字列が満たす文法を生成する処理であり、そのアルゴリズムとしては、例えば参考文献2に示されるような方法を適用可能である。
参考文献2:D. Melski and T. Reps. Interconvertibility of Set Constraints and Context−Free Language Reachability. In Proceedings of the 1997 ACM SIGPLAN Symposium on Partial Evaluation and Semantics−based Program Manipulation、 pages 74−89
S410にてループを終了した時点で、文法Xには、C’中のn番目の連言節内の全てのリテラルとのINTERSECTをとった文法が格納されている。
攻撃データパターン抽出部107は、S414にてこの文法を文法Gに登録する。
登録はまず、攻撃データパターン抽出部107が、文法X内の全ての非終端記号を、文法G内で使用済みの非終端記号と異なる名前に変更し、全ての生成規則を文法Gに追加する。
その後、攻撃データパターン抽出部107は、文法Gの開始記号Sの生成規則としてS::=Xの開始記号を追加する。
その後、外側のループS407に戻り、攻撃データパターン抽出部107は、次の連言節に対して同様の処理を行う。
以上の処理を行うことで、最終的に文法Gには、制約Cで示された制約条件を満たし得る全ての文字列を表す文法が格納されるため、攻撃データパターン抽出部107は、S416にて同文法を処理結果として出力する。
攻撃データパターン抽出部107は、S414にてこの文法を文法Gに登録する。
登録はまず、攻撃データパターン抽出部107が、文法X内の全ての非終端記号を、文法G内で使用済みの非終端記号と異なる名前に変更し、全ての生成規則を文法Gに追加する。
その後、攻撃データパターン抽出部107は、文法Gの開始記号Sの生成規則としてS::=Xの開始記号を追加する。
その後、外側のループS407に戻り、攻撃データパターン抽出部107は、次の連言節に対して同様の処理を行う。
以上の処理を行うことで、最終的に文法Gには、制約Cで示された制約条件を満たし得る全ての文字列を表す文法が格納されるため、攻撃データパターン抽出部107は、S416にて同文法を処理結果として出力する。
次に、パターン比較部108の動作例について説明する。
前述の通り、パターン比較部108は、シグニチャ検知対象外データパターン抽出部105によって算出された検知対象外データのパターンと、攻撃データパターン抽出部107によって算出された攻撃データパターンを比較する。
そして、パターン比較部108は、シグニチャ情報102で定義されている検知パターンでは検知できない攻撃データのパターンを算出する。
前述の通り、パターン比較部108は、シグニチャ検知対象外データパターン抽出部105によって算出された検知対象外データのパターンと、攻撃データパターン抽出部107によって算出された攻撃データパターンを比較する。
そして、パターン比較部108は、シグニチャ情報102で定義されている検知パターンでは検知できない攻撃データのパターンを算出する。
図6はパターン比較部108の動作例を示すフローチャートである。
パターン比較部108は攻撃データパターンと、シグニチャ検知対象外データパターンを入力として呼び出され、攻撃データパターンと、シグニチャ検知対象外データパターンをそれぞれ変数G及びSに格納する(S601)。
次に、S602において、GとSを引数として「INTERSECT」手続きが呼び出される。
その結果、文法Gと正規表現Sの両方を満たす文字列の文法、つまり攻撃データであり、かつシグニチャでは検知されないデータが満たす文法が算出される。
算出された文法は変数Xに代入され、パターン比較部108の処理結果として返される(S603)。
パターン比較部108は攻撃データパターンと、シグニチャ検知対象外データパターンを入力として呼び出され、攻撃データパターンと、シグニチャ検知対象外データパターンをそれぞれ変数G及びSに格納する(S601)。
次に、S602において、GとSを引数として「INTERSECT」手続きが呼び出される。
その結果、文法Gと正規表現Sの両方を満たす文字列の文法、つまり攻撃データであり、かつシグニチャでは検知されないデータが満たす文法が算出される。
算出された文法は変数Xに代入され、パターン比較部108の処理結果として返される(S603)。
最後に、比較結果出力部109の動作例について説明する。
前述の通り、比較結果出力部109は、パターン比較部108により算出された攻撃データのパターンが空かどうか判定し、結果をシグニチャ検証結果111として出力する。
前述の通り、比較結果出力部109は、パターン比較部108により算出された攻撃データのパターンが空かどうか判定し、結果をシグニチャ検証結果111として出力する。
図7は、比較結果出力部109の動作例を示すフローチャートである。
比較結果出力部109は、パターン比較部108の処理結果として出力されたパターン比較結果を示す文法を入力として呼び出され、パターン比較結果を示す文法を変数Gに格納する(S701)。
次にS702において、入力された文法G内に格納されている生成規則の有無について検査が行われる。
もし、文法G内に生成規則が一つも存在していなければ、全ての攻撃データがシグニチャによって検知されることを表しており、比較結果出力部109は、S703にてシグニチャに漏れが無い旨をシグニチャ検証結果111として出力し、処理を終了する。
一方、文法G内に生成規則が一つでも存在していたならば、その文法に従ったデータを生成することでシグニチャに検知されること無く攻撃が可能である。
このため、比較結果出力部109は、S704にてシグニチャに漏れがあることを示すシグニチャ検証結果111を出力し処理を終了する。
比較結果出力部109は、パターン比較部108の処理結果として出力されたパターン比較結果を示す文法を入力として呼び出され、パターン比較結果を示す文法を変数Gに格納する(S701)。
次にS702において、入力された文法G内に格納されている生成規則の有無について検査が行われる。
もし、文法G内に生成規則が一つも存在していなければ、全ての攻撃データがシグニチャによって検知されることを表しており、比較結果出力部109は、S703にてシグニチャに漏れが無い旨をシグニチャ検証結果111として出力し、処理を終了する。
一方、文法G内に生成規則が一つでも存在していたならば、その文法に従ったデータを生成することでシグニチャに検知されること無く攻撃が可能である。
このため、比較結果出力部109は、S704にてシグニチャに漏れがあることを示すシグニチャ検証結果111を出力し処理を終了する。
以上に示したように、シグニチャ検証結果111には最低限、シグニチャに漏れがあるかどうかを示す情報が出力されるが、その他の補足情報を出力することももちろん可能である。
例えばシグニチャに漏れがあると判断した場合に、文法Gの内容をあわせて出力し、ユーザが実際にその文法に従ったデータを生成し、IDSの試験を行えるようにすることも考えられる。
例えばシグニチャに漏れがあると判断した場合に、文法Gの内容をあわせて出力し、ユーザが実際にその文法に従ったデータを生成し、IDSの試験を行えるようにすることも考えられる。
以上のように、シグニチャ情報と攻撃データのパターン情報から、シグニチャが検知対象とする脆弱性攻撃に対し漏れなく検知が行えるかを、実際にIDSを動作させることなく、短時間で検証できるという効果がある。
さらに、脆弱性修正前後のプログラムの差分から生成される攻撃データに対する制約条件を加法標準形に変換し、各連言節から、攻撃データが満たすべき文法を生成することで、シグニチャ検証に必要となる攻撃データのパターンを自動生成できるという効果がある。
さらに、シグニチャのパターン情報から、シグニチャでは検知できないデータのパターンを算出し、同パターンと脆弱性を攻撃するデータのパターンとを比較することで、シグニチャと攻撃データパターンとの比較を自動で行うことができるという効果がある。
さらに、パターン同士の比較において、「INTERSECT」手続きを使用することで、シグニチャに漏れがある場合に、どのような攻撃データが実際に検知から漏れてしまうのかをユーザに提示することができるという効果がある。
さらに、検証結果を比較結果出力部によって表示することで、シグニチャの検証結果を利用者が容易に確認できるという効果がある。
さらに、シグニチャ情報をIDS開発元のウェブサイトから直接ダウンロードすることで、検証装置とIDSとが直接接続されていなくても検証可能になるという効果がある。
さらに、定期的にプログラムをインターネットからダウンロードしておくことで、修正前プログラム110、修正後プログラム106をユーザの作業無しに利用可能になるという効果がある。
本実施の形態では、
以下の要素で構成され、シグニチャ情報に対し、シグニチャ検証結果を出力するシグニチャ検証装置を説明した。
シグニチャ情報を装置内部に取り込み、検知対象とするデータのパターン定義情報を取り出すシグニチャ入力部、
シグニチャでは検知されない全てのデータにマッチするパターンを生成するシグニチャ検知対象外データパターン抽出部、
脆弱性を攻撃可能な攻撃データのパターンを生成する攻撃データパターン抽出部、
シグニチャ検知対象外データパターンと攻撃データパターンを比較することで、シグニチャでは検知できない攻撃データのパターンを算出するパターン比較部、
パターン比較部により算出された攻撃データのパターンを出力する比較結果出力部。
以下の要素で構成され、シグニチャ情報に対し、シグニチャ検証結果を出力するシグニチャ検証装置を説明した。
シグニチャ情報を装置内部に取り込み、検知対象とするデータのパターン定義情報を取り出すシグニチャ入力部、
シグニチャでは検知されない全てのデータにマッチするパターンを生成するシグニチャ検知対象外データパターン抽出部、
脆弱性を攻撃可能な攻撃データのパターンを生成する攻撃データパターン抽出部、
シグニチャ検知対象外データパターンと攻撃データパターンを比較することで、シグニチャでは検知できない攻撃データのパターンを算出するパターン比較部、
パターン比較部により算出された攻撃データのパターンを出力する比較結果出力部。
また、本実施の形態では、
攻撃データパターン抽出部が、脆弱性修正前のプログラムと脆弱性修正後のプログラムとの差分から生成される攻撃データに対する制約条件を加法標準形に変換し、各連言節から、攻撃データが満たすべき文法を生成することを説明した。
攻撃データパターン抽出部が、脆弱性修正前のプログラムと脆弱性修正後のプログラムとの差分から生成される攻撃データに対する制約条件を加法標準形に変換し、各連言節から、攻撃データが満たすべき文法を生成することを説明した。
また、本実施の形態では、
シグニチャ検知対象外データパターン抽出部が、シグニチャのパターン情報から、オートマトンを生成し、オートマトンの受理・非受理状態を反転させることでシグニチャでは検知できないデータのパターンを算出することを説明した。
シグニチャ検知対象外データパターン抽出部が、シグニチャのパターン情報から、オートマトンを生成し、オートマトンの受理・非受理状態を反転させることでシグニチャでは検知できないデータのパターンを算出することを説明した。
また、本実施の形態では、
パターン比較部において、シグニチャ検知対象外データパターンと脆弱性を攻撃するデータのパターンとの交差(INTERSECT)をとることで、シグニチャと攻撃データパターンとの比較を行うことを説明した。
パターン比較部において、シグニチャ検知対象外データパターンと脆弱性を攻撃するデータのパターンとの交差(INTERSECT)をとることで、シグニチャと攻撃データパターンとの比較を行うことを説明した。
また、本実施の形態では、
比較結果出力部が、シグニチャに漏れがある場合に、どのような攻撃データが実際に検知から漏れてしまうのかをユーザに提示することを説明した。
比較結果出力部が、シグニチャに漏れがある場合に、どのような攻撃データが実際に検知から漏れてしまうのかをユーザに提示することを説明した。
また、本実施の形態では、
シグニチャ入力部が、シグニチャ情報をIDS開発元のウェブサイトから直接ダウンロードすることを説明した。
シグニチャ入力部が、シグニチャ情報をIDS開発元のウェブサイトから直接ダウンロードすることを説明した。
また、本実施の形態では、
攻撃データパターン抽出部が、定期的にプログラムをインターネットからダウンロードしておくことを説明した。
攻撃データパターン抽出部が、定期的にプログラムをインターネットからダウンロードしておくことを説明した。
実施の形態2.
以上の実施の形態1では、パターン比較部108の結果を比較結果出力部109がそのまま出力するものであったが、攻撃データパターン抽出部107が本来攻撃とはならないデータも包含したパターンを抽出する場合を考慮した実施の形態を示す。
以上の実施の形態1では、パターン比較部108の結果を比較結果出力部109がそのまま出力するものであったが、攻撃データパターン抽出部107が本来攻撃とはならないデータも包含したパターンを抽出する場合を考慮した実施の形態を示す。
本実施の形態の構成例を図8に示す。
本実施の形態に係るシグニチャ検証装置803は、実施の形態1と同様に、IDS装置801から取得されたシグニチャ情報802、シグニチャ情報802が検知対象とした攻撃が標的としている脆弱性に対し、修正を施す前後のプログラム(修正前プログラム811及び修正後プログラム806)とを入力とし、シグニチャ検証結果812を出力する。
シグニチャ検証装置803は、実施の形態1とは異なり、その構成要素に比較結果検証部809が追加されている。
その他の要素(シグニチャ入力部804、シグニチャ検知対象外データパターン抽出部805、攻撃データパターン抽出部807、パターン比較部808及び比較結果出力部810)については、実施の形態1と同様である。
比較結果検証部809は、パターン比較部808によって算出された、シグニチャ情報802で検知されない攻撃データの文法情報を元に、実際に攻撃データ(パターン対応データ)を生成し、生成した攻撃データを修正前プログラム811に入力する。
そして、比較結果検証部809は、パターン比較結果によって生成された文法情報が本当に攻撃となるデータのパターンを示しているかを検証する。
本実施の形態に係るシグニチャ検証装置803は、実施の形態1と同様に、IDS装置801から取得されたシグニチャ情報802、シグニチャ情報802が検知対象とした攻撃が標的としている脆弱性に対し、修正を施す前後のプログラム(修正前プログラム811及び修正後プログラム806)とを入力とし、シグニチャ検証結果812を出力する。
シグニチャ検証装置803は、実施の形態1とは異なり、その構成要素に比較結果検証部809が追加されている。
その他の要素(シグニチャ入力部804、シグニチャ検知対象外データパターン抽出部805、攻撃データパターン抽出部807、パターン比較部808及び比較結果出力部810)については、実施の形態1と同様である。
比較結果検証部809は、パターン比較部808によって算出された、シグニチャ情報802で検知されない攻撃データの文法情報を元に、実際に攻撃データ(パターン対応データ)を生成し、生成した攻撃データを修正前プログラム811に入力する。
そして、比較結果検証部809は、パターン比較結果によって生成された文法情報が本当に攻撃となるデータのパターンを示しているかを検証する。
図9は、比較結果検証部809の動作例を示すフローチャートである。
比較結果検証部809は、パターン比較部808が算出した文法と、修正前プログラム811を入力として呼び出される(S901)。
以下ではそれぞれを文法G、修正前プログラムPとして説明する。
比較結果検証部809は、S902では文法Gの開始記号を変数Sに代入し、次にS903で手続き「文字列生成」を文法G、変数Sを引数として呼び出す。
具体的な処理手順については後述するが、手続き「文字列生成」は文法Gにおいて、非終端記号Sとして受理可能な全ての文字列を生成する。
手続き「文字列生成」の実行結果は文字列のリストとして変数INに格納される。
次に、S905からS909で示されるループで、比較結果検証部809は、INに格納された各文字列を実際にプログラムPへ入力し、攻撃データとなる文字列が含まれているかどうかを判別する。
文字列が攻撃データかどうかの判別はS908で行う。
S908では、比較結果検証部809は、データを入力後のプログラムPの挙動を監視し、メモリアクセス違反等により、プログラムがクラッシュ(異常終了)するかどうかを検査する。
クラッシュしたかどうかの判定は、対象プログラムにデバッガを接続した上で、デバッガが対象プログラムを実行することで容易に行うことができる。
もし修正前プログラムPがクラッシュした場合、比較結果検証部809は、入力したデータは攻撃データであったとみなし、判定結果として変数resultにTRUEを格納してループを終了する。
INに格納された全ての文字列においてPがクラッシュしなければ、比較結果検証部809は、変数resultにFALSEを格納してループを終了する。
最後に、比較結果検証部809は、変数resultの内容を、比較結果検証部809の処理結果として出力する。
比較結果検証部809の処理結果がTRUEだった場合、文法Gを入力として比較結果出力部810が呼び出される。
FALSEだった場合、文法Gに格納されている全ての生成規則が削除されてから比較結果出力部810が呼び出される。
以下ではそれぞれを文法G、修正前プログラムPとして説明する。
比較結果検証部809は、S902では文法Gの開始記号を変数Sに代入し、次にS903で手続き「文字列生成」を文法G、変数Sを引数として呼び出す。
具体的な処理手順については後述するが、手続き「文字列生成」は文法Gにおいて、非終端記号Sとして受理可能な全ての文字列を生成する。
手続き「文字列生成」の実行結果は文字列のリストとして変数INに格納される。
次に、S905からS909で示されるループで、比較結果検証部809は、INに格納された各文字列を実際にプログラムPへ入力し、攻撃データとなる文字列が含まれているかどうかを判別する。
文字列が攻撃データかどうかの判別はS908で行う。
S908では、比較結果検証部809は、データを入力後のプログラムPの挙動を監視し、メモリアクセス違反等により、プログラムがクラッシュ(異常終了)するかどうかを検査する。
クラッシュしたかどうかの判定は、対象プログラムにデバッガを接続した上で、デバッガが対象プログラムを実行することで容易に行うことができる。
もし修正前プログラムPがクラッシュした場合、比較結果検証部809は、入力したデータは攻撃データであったとみなし、判定結果として変数resultにTRUEを格納してループを終了する。
INに格納された全ての文字列においてPがクラッシュしなければ、比較結果検証部809は、変数resultにFALSEを格納してループを終了する。
最後に、比較結果検証部809は、変数resultの内容を、比較結果検証部809の処理結果として出力する。
比較結果検証部809の処理結果がTRUEだった場合、文法Gを入力として比較結果出力部810が呼び出される。
FALSEだった場合、文法Gに格納されている全ての生成規則が削除されてから比較結果出力部810が呼び出される。
次に、手続き「文字列生成」の動作について説明する。
図10は、手続き「文字列生成」の動作を示すフローチャートである。
手続き「文字列生成」では、文法G及び文字列生成の対象となる非終端記号Sが引数として呼び出される(S1001)。
まずS1002において、ワークリストWが生成され、ワークリストWに、文法G内で定義された非終端記号Sに関する全ての生成規則の右辺にある記号列が格納される。
例えば、文法G内にS::=XY、S::=BCという二つの生成規則が存在した場合には、(X、Y)、(B、C)という二つの右辺値がワークリストWに格納される。
次に生成された文字列を格納するリストLが作成される(S1003)。
その後、ワークリストWが空になるまでS1004〜S1009までのループが実行される。
まずS1005ではワークリストWの先頭の要素を取り出され、取り出された先頭の要素が変数Rに格納される。
その際、ワークリストWの先頭要素が取り除かれる。
次に変数Rの先頭から非終端記号が検索され、最初に見つかった非終端記号Nを境界として、変数Rが終端記号列TS、N、残りの記号列RSに分割される(S1006)。
S1007で、S1006での非終端記号の検索結果が評価され、もし非終端記号Nが見つかっていなかった場合には、変数R内の記号列は全て終端記号であるため、各記号が表す文字が連結されて文字列が作成され、作成された文字列がリストLに追加される。
もし、S1006において非終端記号Nが見つかった場合には、文法Gから非終端記号Nに関する全ての生成規則が取り出され、各生成規則の右辺の記号列(仮にNSとする)を使用して、TS NS RS となる記号列が生成され、生成された記号列がワークリストWに追加される(S1009)。
S1008もしくはS1009実施後、再びループの先頭S1004に戻る。
最終的に、ワークリストWが空になったら、リストLが手続き「文字列生成」の処理結果として出力される(S1010)。
図10は、手続き「文字列生成」の動作を示すフローチャートである。
手続き「文字列生成」では、文法G及び文字列生成の対象となる非終端記号Sが引数として呼び出される(S1001)。
まずS1002において、ワークリストWが生成され、ワークリストWに、文法G内で定義された非終端記号Sに関する全ての生成規則の右辺にある記号列が格納される。
例えば、文法G内にS::=XY、S::=BCという二つの生成規則が存在した場合には、(X、Y)、(B、C)という二つの右辺値がワークリストWに格納される。
次に生成された文字列を格納するリストLが作成される(S1003)。
その後、ワークリストWが空になるまでS1004〜S1009までのループが実行される。
まずS1005ではワークリストWの先頭の要素を取り出され、取り出された先頭の要素が変数Rに格納される。
その際、ワークリストWの先頭要素が取り除かれる。
次に変数Rの先頭から非終端記号が検索され、最初に見つかった非終端記号Nを境界として、変数Rが終端記号列TS、N、残りの記号列RSに分割される(S1006)。
S1007で、S1006での非終端記号の検索結果が評価され、もし非終端記号Nが見つかっていなかった場合には、変数R内の記号列は全て終端記号であるため、各記号が表す文字が連結されて文字列が作成され、作成された文字列がリストLに追加される。
もし、S1006において非終端記号Nが見つかった場合には、文法Gから非終端記号Nに関する全ての生成規則が取り出され、各生成規則の右辺の記号列(仮にNSとする)を使用して、TS NS RS となる記号列が生成され、生成された記号列がワークリストWに追加される(S1009)。
S1008もしくはS1009実施後、再びループの先頭S1004に戻る。
最終的に、ワークリストWが空になったら、リストLが手続き「文字列生成」の処理結果として出力される(S1010)。
本実施の形態では、文字列生成手続きでは与えられた非終端記号を満たす全ての文字列が出力されるが、生成される文字列の上限数を制限することも可能であるし、生成される文字列の上限数をユーザが指定できるようにすることも容易である。
また、本実施の形態では、S908で表されるようにプログラムのクラッシュを攻撃の成否判定条件として用いているが、本実施の形態で示した以外にもクラッシュの検出方法としては以下が考えられ、いずれを用いることも可能である。
・対象プログラム実行後に、OS(Operating System)上でのアプリケーション実行エラー記録を確認する
・ユーザが対象プログラムの動作画面等を確認し、クラッシュしたかどうかをシグニチャ検証装置に入力する
また、本実施の形態では、S908で表されるようにプログラムのクラッシュを攻撃の成否判定条件として用いているが、本実施の形態で示した以外にもクラッシュの検出方法としては以下が考えられ、いずれを用いることも可能である。
・対象プログラム実行後に、OS(Operating System)上でのアプリケーション実行エラー記録を確認する
・ユーザが対象プログラムの動作画面等を確認し、クラッシュしたかどうかをシグニチャ検証装置に入力する
以上のように、本実施の形態では、パターン比較部により出力された文法情報をもとに攻撃データを生成し、実際に攻撃データを修正前プログラムへ入力して修正前プログラムの動作を監視し、攻撃データパターン抽出部の生成した攻撃データのパターンのうち、無害なパターンを除外する。
これにより、本実施の形態では、シグニチャによって無害なパターンが検出されない旨を警告する検証結果が出力されることを防止できるという効果がある。
これにより、本実施の形態では、シグニチャによって無害なパターンが検出されない旨を警告する検証結果が出力されることを防止できるという効果がある。
さらに、文字列生成手続きにおいて上限数を制限することで、検証を無限に実施することを防ぐことができるという効果がある。
さらに、文字列生成の上限数をユーザが指定可能とすることで、ユーザの判断に基づき、処理時間を調整することが可能となるという効果がある。
さらに、OS上のアプリケーション実行エラー記録を確認するというクラッシュ判定を行うことで、デバッガ接続によって動作が変わってしまうプログラムに対しても検証できるという効果がある。
さらに、ユーザが動作画面等を確認し、確認結果をシグニチャ検証装置に入力するというクラッシュ判定を行うことで、OS上にデバッグ機能やアプリケーション実行エラー記録機能が無い場合にも本検証装置を実現することができるという効果がある。
本実施の形態では、
実施の形態1に示したシグニチャ検証装置に、さらに比較結果検証部を設けることを説明した。
実施の形態1に示したシグニチャ検証装置に、さらに比較結果検証部を設けることを説明した。
また、本実施の形態では、
生成する攻撃データ数の上限をユーザが指定できることを説明した。
生成する攻撃データ数の上限をユーザが指定できることを説明した。
また、本実施の形態では、
比較結果検証部が、OS上のアプリケーション実行エラー記録を確認することでプログラムのクラッシュを判定することを説明した。
比較結果検証部が、OS上のアプリケーション実行エラー記録を確認することでプログラムのクラッシュを判定することを説明した。
また、本実施の形態では、
比較結果検証部が、ユーザが対象プログラムの動作画面等を確認してクラッシュしたかどうかを判定した結果を入力するためのインタフェースを備えていることを説明した。
比較結果検証部が、ユーザが対象プログラムの動作画面等を確認してクラッシュしたかどうかを判定した結果を入力するためのインタフェースを備えていることを説明した。
最後に、実施の形態1及び2に示したシグニチャ検証装置103、シグニチャ検証装置803のハードウェア構成例を図11を参照して説明する。
シグニチャ検証装置103、シグニチャ検証装置803はコンピュータであり、シグニチャ検証装置103、シグニチャ検証装置803の各要素をプログラムで実現することができる。
シグニチャ検証装置103、シグニチャ検証装置803のハードウェア構成としては、バスに、演算装置901、外部記憶装置902、主記憶装置903、通信装置904、入出力装置905が接続されている。
シグニチャ検証装置103、シグニチャ検証装置803はコンピュータであり、シグニチャ検証装置103、シグニチャ検証装置803の各要素をプログラムで実現することができる。
シグニチャ検証装置103、シグニチャ検証装置803のハードウェア構成としては、バスに、演算装置901、外部記憶装置902、主記憶装置903、通信装置904、入出力装置905が接続されている。
演算装置901は、プログラムを実行するCPU(Central Processing Unit)である。
外部記憶装置902は、例えばROM(Read Only Memory)やフラッシュメモリ、ハードディスク装置である。
主記憶装置903は、RAM(Random Access Memory)である。
通信装置904は、例えば、シグニチャ入力部104がIDS装置101からシグニチャ情報102を受信する際(シグニチャ入力部804がIDS装置801からシグニチャ情報802を受信する際)に用いられる。
入出力装置905は、例えばマウス、キーボード、ディスプレイ装置等であり、修正前プログラム110及び修正後プログラム106の入力、修正前プログラム811及び修正後プログラム806の入力、シグニチャ検証結果111の出力、シグニチャ検証結果812の出力に用いられる。
外部記憶装置902は、例えばROM(Read Only Memory)やフラッシュメモリ、ハードディスク装置である。
主記憶装置903は、RAM(Random Access Memory)である。
通信装置904は、例えば、シグニチャ入力部104がIDS装置101からシグニチャ情報102を受信する際(シグニチャ入力部804がIDS装置801からシグニチャ情報802を受信する際)に用いられる。
入出力装置905は、例えばマウス、キーボード、ディスプレイ装置等であり、修正前プログラム110及び修正後プログラム106の入力、修正前プログラム811及び修正後プログラム806の入力、シグニチャ検証結果111の出力、シグニチャ検証結果812の出力に用いられる。
プログラムは、通常は外部記憶装置902に記憶されており、主記憶装置903にロードされた状態で、順次演算装置901に読み込まれ、実行される。
プログラムは、図1及び図8に示す「〜部」として説明している機能を実現するプログラムである。
更に、外部記憶装置902にはOSも記憶されており、OSの少なくとも一部が主記憶装置903にロードされ、演算装置901はOSを実行しながら、図1及び図8に示す「〜部」の機能を実現するプログラムを実行する。
また、実施の形態1及び2の説明において、「〜の判断」、「〜の判定」、「〜の抽出」、「〜の検知」、「〜の算出」、「〜の比較」、「〜の検証」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の生成」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値が主記憶装置903にファイルとして記憶されている。
また、シグニチャ情報102、シグニチャ情報802、修正前プログラム110、修正前プログラム811、修正後プログラム106、修正後プログラム806が主記憶装置903に記憶される。
また、暗号鍵・復号鍵や乱数値やパラメータが、主記憶装置903にファイルとして記憶されてもよい。
プログラムは、図1及び図8に示す「〜部」として説明している機能を実現するプログラムである。
更に、外部記憶装置902にはOSも記憶されており、OSの少なくとも一部が主記憶装置903にロードされ、演算装置901はOSを実行しながら、図1及び図8に示す「〜部」の機能を実現するプログラムを実行する。
また、実施の形態1及び2の説明において、「〜の判断」、「〜の判定」、「〜の抽出」、「〜の検知」、「〜の算出」、「〜の比較」、「〜の検証」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の生成」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値が主記憶装置903にファイルとして記憶されている。
また、シグニチャ情報102、シグニチャ情報802、修正前プログラム110、修正前プログラム811、修正後プログラム106、修正後プログラム806が主記憶装置903に記憶される。
また、暗号鍵・復号鍵や乱数値やパラメータが、主記憶装置903にファイルとして記憶されてもよい。
なお、図11の構成は、あくまでもシグニチャ検証装置103、シグニチャ検証装置803のハードウェア構成の一例を示すものであり、シグニチャ検証装置103、シグニチャ検証装置803のハードウェア構成は図11に記載の構成に限らず、他の構成であってもよい。
また、実施の形態1及び2に示す手順により、本発明に係るシグニチャ検証方法を実現可能である。
101 IDS装置、102 シグニチャ情報、103 シグニチャ検証装置、104 シグニチャ入力部、105 シグニチャ検知対象外データパターン抽出部、106 修正後プログラム、107 攻撃データパターン抽出部、108 パターン比較部、109 比較結果出力部、110 修正前プログラム、111 シグニチャ検証結果、801 IDS装置、802 シグニチャ情報、803 シグニチャ検証装置、804 シグニチャ入力部、805 シグニチャ検知対象外データパターン抽出部、806 修正後プログラム、807 攻撃データパターン抽出部、808 パターン比較部、809 比較結果検証部、810 比較結果出力部、811 修正前プログラム、812 シグニチャ検証結果。
Claims (12)
- シグニチャ情報に対する解析を行い、前記シグニチャ情報では検知されないデータのパターンを抽出するシグニチャ検知対象外データパターン抽出部と、
前記シグニチャ情報が適用される対象プログラムに対する解析を行い、前記対象プログラムを攻撃する攻撃データのパターンを抽出する攻撃データパターン抽出部と、
前記シグニチャ検知対象外データパターン抽出部により抽出されたシグニチャ検知対象外データパターンと前記攻撃データパターン抽出部により抽出された攻撃データパターンとを比較し、シグニチャ検知対象外データパターンに該当する攻撃データパターンを、前記シグニチャ情報では検知されない攻撃データパターンとして抽出するパターン比較部とを有することを特徴とするシグニチャ検証装置。 - 前記攻撃データパターン抽出部は、
脆弱性に対する修正が行われる前の対象プログラムと、脆弱性に対する修正が行われた後の対象プログラムとの差分から、攻撃データの制約条件を生成し、
生成した制約条件を加法標準形に変換し、加法標準形に変換後の制約条件の各連言節から、攻撃データのパターンを抽出することを特徴とする請求項1に記載のシグニチャ検証装置。 - 前記シグニチャ検証装置は、更に、
前記シグニチャ情報から、前記シグニチャ情報が検知の対象とするデータのパターンが定義されるパターン定義情報を抽出するパターン定義情報抽出部を有し、
前記シグニチャ検知対象外データパターン抽出部は、
前記パターン定義情報で定義されているパターンを表すオートマトンを生成し、
生成したオートマトンにおける受理状態及び非受理状態を反転させて、前記シグニチャ情報では検知されないデータのパターンを抽出することを特徴とする請求項1又は2に記載のシグニチャ検証装置。 - 前記パターン比較部は、
前記シグニチャ検知対象外データパターンと前記攻撃データパターンとの交差(INTERSECT)をとることで、前記シグニチャ検知対象外データパターンと前記攻撃データパターンとを比較することを特徴とする請求項1〜3のいずれかに記載のシグニチャ検証装置。 - 前記シグニチャ検証装置は、更に、
前記パターン比較部により抽出された攻撃データパターンを、前記シグニチャ検証装置の利用者に提示する比較結果出力部を有することを特徴とする請求項1〜4のいずれかに記載のシグニチャ検証装置。 - 前記シグニチャ検証装置は、更に、
前記パターン比較部により抽出された攻撃データパターンによって前記対象プログラムが攻撃されるか否かを検証する比較結果検証部を有し、
前記比較結果出力部は、
前記対象プログラムが攻撃されると前記比較結果検証部により判断された攻撃データパターンを選択して、前記シグニチャ検証装置の利用者に提示することを特徴とする請求項5に記載のシグニチャ検証装置。 - 前記比較結果検証部は、
前記パターン比較部により抽出された攻撃データパターンに対応するデータをパターン対応データとして生成し、生成したパターン対応データを前記対象プログラムに適用し、
前記パターン対応データによって前記対象プログラムが攻撃されるか否かを検証することを特徴とする請求項6に記載のシグニチャ検証装置。 - 前記比較結果検証部は、
前記対象プログラムが異常終了した場合に、前記パターン対応データによって前記対象プログラムが攻撃されたと判断することを特徴とする請求項7に記載のシグニチャ検証装置。 - 前記比較結果検証部は、
前記対象プログラムの挙動の監視、前記対象プログラムを動作させるOS(Operating System)における記録、前記シグニチャ検証装置の利用者による指定の少なくともいずれかにより、前記対象プログラムの異常終了を検知することを特徴とする請求項8に記載のシグニチャ検証装置。 - 前記比較結果検証部は、
前記シグニチャ検証装置の利用者により指定された個数分のパターン対応データを生成し、生成した各パターン対応データを前記対象プログラムに適用することを特徴とする請求項7〜9のいずれかに記載のシグニチャ検証装置。 - コンピュータが、シグニチャ情報に対する解析を行い、前記シグニチャ情報では検知されないデータのパターンをシグニチャ検知対象外データパターンとして抽出し、
前記コンピュータが、前記シグニチャ情報が適用される対象プログラムに対する解析を行い、前記対象プログラムを攻撃する攻撃データのパターンを攻撃データパターンとして抽出し、
前記コンピュータが、シグニチャ検知対象外データパターンと攻撃データパターンとを比較し、シグニチャ検知対象外データパターンに該当する攻撃データパターンを、前記シグニチャ情報では検知されない攻撃データパターンとして抽出することを特徴とするシグニチャ検証方法。 - コンピュータを請求項1に記載されたシグネチャ検証装置として機能させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014538302A JP5868515B2 (ja) | 2012-09-25 | 2013-08-29 | シグニチャ検証装置及びシグニチャ検証方法及びプログラム |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012211291 | 2012-09-25 | ||
JP2012211291 | 2012-09-25 | ||
JP2014538302A JP5868515B2 (ja) | 2012-09-25 | 2013-08-29 | シグニチャ検証装置及びシグニチャ検証方法及びプログラム |
PCT/JP2013/073198 WO2014050424A1 (ja) | 2012-09-25 | 2013-08-29 | シグニチャ検証装置及びシグニチャ検証方法及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP5868515B2 JP5868515B2 (ja) | 2016-02-24 |
JPWO2014050424A1 true JPWO2014050424A1 (ja) | 2016-08-22 |
Family
ID=50387833
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014538302A Expired - Fee Related JP5868515B2 (ja) | 2012-09-25 | 2013-08-29 | シグニチャ検証装置及びシグニチャ検証方法及びプログラム |
Country Status (5)
Country | Link |
---|---|
US (1) | US20150193617A1 (ja) |
EP (1) | EP2902938A4 (ja) |
JP (1) | JP5868515B2 (ja) |
CN (1) | CN104603791A (ja) |
WO (1) | WO2014050424A1 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10176329B2 (en) * | 2015-08-11 | 2019-01-08 | Symantec Corporation | Systems and methods for detecting unknown vulnerabilities in computing processes |
US10152596B2 (en) * | 2016-01-19 | 2018-12-11 | International Business Machines Corporation | Detecting anomalous events through runtime verification of software execution using a behavioral model |
JP6548837B2 (ja) * | 2016-12-01 | 2019-07-24 | 三菱電機株式会社 | 評価装置、セキュリティ製品の評価方法および評価プログラム |
WO2018179628A1 (ja) * | 2017-03-28 | 2018-10-04 | 日本電気株式会社 | シグネチャ生成装置、シグネチャ生成方法、プログラムが格納された非一時的なコンピュータ可読媒体 |
WO2021152647A1 (ja) * | 2020-01-27 | 2021-08-05 | 日本電信電話株式会社 | 検査装置、検査方法及びプログラム |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3999188B2 (ja) * | 2003-10-28 | 2007-10-31 | 富士通株式会社 | 不正アクセス検知装置、不正アクセス検知方法および不正アクセス検知プログラム |
JP2007242002A (ja) * | 2006-02-10 | 2007-09-20 | Mitsubishi Electric Corp | ネットワーク管理装置及びネットワーク管理方法及びプログラム |
CN101266550B (zh) * | 2007-12-21 | 2011-02-16 | 北京大学 | 一种恶意代码检测方法 |
US8347386B2 (en) * | 2008-10-21 | 2013-01-01 | Lookout, Inc. | System and method for server-coupled malware prevention |
US20100192225A1 (en) * | 2009-01-28 | 2010-07-29 | Juniper Networks, Inc. | Efficient application identification with network devices |
-
2013
- 2013-08-29 US US14/421,507 patent/US20150193617A1/en not_active Abandoned
- 2013-08-29 EP EP13841275.4A patent/EP2902938A4/en not_active Withdrawn
- 2013-08-29 CN CN201380047081.4A patent/CN104603791A/zh active Pending
- 2013-08-29 WO PCT/JP2013/073198 patent/WO2014050424A1/ja active Application Filing
- 2013-08-29 JP JP2014538302A patent/JP5868515B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN104603791A (zh) | 2015-05-06 |
EP2902938A4 (en) | 2016-09-21 |
WO2014050424A1 (ja) | 2014-04-03 |
US20150193617A1 (en) | 2015-07-09 |
EP2902938A1 (en) | 2015-08-05 |
JP5868515B2 (ja) | 2016-02-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109426722B (zh) | Sql注入缺陷检测方法、系统、设备及存储介质 | |
Li et al. | Libd: Scalable and precise third-party library detection in android markets | |
US10657264B2 (en) | Techniques for correlating vulnerabilities across an evolving codebase | |
US10387655B2 (en) | Method, system and product for using a predictive model to predict if inputs reach a vulnerability of a program | |
Saxena et al. | Loop-extended symbolic execution on binary programs | |
US9507943B1 (en) | Analysis tool for data security | |
US11650905B2 (en) | Testing source code changes | |
JP5868515B2 (ja) | シグニチャ検証装置及びシグニチャ検証方法及びプログラム | |
JP2009087355A (ja) | ウェブアプリケーションを検証するシンボリック実行エンジンを提供するシステム及び方法 | |
JP5863973B2 (ja) | プログラム実行装置及びプログラム解析装置 | |
CN110474900B (zh) | 一种游戏协议测试方法及装置 | |
KR20120105759A (ko) | 악성 코드 시각화 장치와 악성 코드 탐지 장치 및 방법 | |
RU2722692C1 (ru) | Способ и система выявления вредоносных файлов в неизолированной среде | |
KR101640479B1 (ko) | 소스코드기반 소프트웨어 취약점 공격행위 분석시스템 | |
JP5845888B2 (ja) | ソフトウェア修正装置、ソフトウェア修正システム、ソフトウェア修正方法、及び、ソフトウェア修正プログラム | |
Li et al. | Large-scale third-party library detection in android markets | |
CN106709335B (zh) | 漏洞检测方法和装置 | |
JP7231664B2 (ja) | 脆弱性特徴の取得方法、装置及び電子機器 | |
JP4913353B2 (ja) | ソフトウェア動作モデル化装置及びソフトウェア動作監視装置 | |
Namanya et al. | Evaluation of automated static analysis tools for malware detection in Portable Executable files | |
JP2011150716A (ja) | 脆弱性監査プログラム、脆弱性監査装置、脆弱性監査方法 | |
US20230141948A1 (en) | Analysis and Testing of Embedded Code | |
JP7259932B2 (ja) | 仮説検証装置、仮説検証方法、及びプログラム | |
CN112699376A (zh) | 源代码逻辑漏洞检测方法、装置、计算机设备及存储介质 | |
JP6911928B2 (ja) | 仮説検証装置、仮説検証方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20151208 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160105 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5868515 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |