(57)【特許請求の範囲】
【請求項１】
攻撃コードの検知に用いるシグネチャを生成するシグネチャ生成装置であって、
複数の攻撃コードの入力を受け付ける入力部と、
入力された前記複数の攻撃コードの形態素解析を行い、前記形態素解析により得られた形態素列における最長共通部分列を、前記複数の攻撃コードに共通している文字列のパターンとして抽出し、前記複数の攻撃コードには共通していない文字列のパターンを正規表現に置き換えた文字列である前記シグネチャを生成するシグネチャ生成部と
を備えることを特徴とするシグネチャ生成装置。
【請求項２】
攻撃コードの検知に用いるシグネチャを生成するシグネチャ生成方法であって、
複数の攻撃コードの入力を受け付けるステップと、
入力された前記複数の攻撃コードの形態素解析を行い、前記形態素解析により得られた形態素列における最長共通部分列を、前記複数の攻撃コードに共通している文字列のパターンとして抽出し、前記複数の攻撃コードには共通していない文字列のパターンを正規表現に置き換えた文字列である前記シグネチャを生成するステップと
を含んだことを特徴とするシグネチャ生成方法。
【請求項３】
攻撃コードの検知に用いるシグネチャを生成するコンピュータに実行させるためのシグネチャ生成プログラムであって、
複数の攻撃コードの入力を受け付けるステップと、
入力された前記複数の攻撃コードの形態素解析を行い、前記形態素解析により得られた形態素列における最長共通部分列を、前記複数の攻撃コードに共通している文字列のパターンとして抽出し、前記複数の攻撃コードには共通していない文字列のパターンを正規表現に置き換えた文字列である前記シグネチャを生成するステップと
を前記コンピュータに実行させることを特徴とするシグネチャ生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シグネチャ生成装置、シグネチャ生成方法、および、シグネチャ生成プログラムに関する。
【背景技術】
【０００２】
近年、公開サーバに対するサイバー攻撃が大きな脅威となっている。特に一般的に広く使用されるソフトウェアの脆弱性を悪用する例は重大な問題となっている。ソフトウェアの脆弱性に対する根本的な対策はパッチの適用であるが、パッチの適用によるシステムへの影響の検証等の理由ですぐにパッチを適用できない場合もある。そのような場合はWeb  Application  Firewall(ＷＡＦ)等の不正アクセス検知製品が有効である。ＷＡＦ等の不正アクセス検知製品はあらかじめ攻撃パターンをシグネチャとして定義し、シグネチャに一致する通信を遮断するものである。
【０００３】
ところで、脆弱性が発見されると脆弱性を悪用する様々なパターンの攻撃コードがＷｅｂ等で公開され、すぐに世界中で攻撃が発生するという状況がある。このため脆弱性を突く様々な攻撃コードを検知可能なシグネチャを迅速に作成することが求められている。ところが、シグネチャを作成できる専門家は限られており、様々な攻撃コードを検知可能なシグネチャを迅速に作成することは容易ではない。
【０００４】
ここで、様々な攻撃コードを検知可能なシグネチャを作成するため、例えば、非特許文献１に記載の技術を用いて、複数の攻撃コードを入力値として用いて、これらの複数の攻撃コードを検知するＷＡＦのシグネチャを自動生成することも考えられる。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Ralf  Spenneberg.,“Webserver-Sicherheit  mit  mod_security”,  Datenschutz  und  Datensicherheit,p155-160,  3,  2009
【非特許文献２】Robert  A.  Wagner  and  Michael  J.  Fischer.,“The  String-to-String  Correction  Problem”,J.ACM,  Vol.  21,  pp.168-173,  January  1974
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、上記の技術により複数の攻撃コードを入力値として用いて、これらの攻撃コードを検知するＷＡＦのシグネチャを自動生成したとしても、入力値として用いた攻撃コード以外が対象とする脆弱性を突く攻撃コードを検知することはできない。そこで、本発明は、前記した問題を解決し、入力値として用いた攻撃コード以外の攻撃コードについても検知可能なシグネチャを迅速に生成することを課題とする。
【課題を解決するための手段】
【０００７】
前記した課題を解決するため、本発明は、攻撃コードの検知に用いるシグネチャを生成するシグネチャ生成装置であって、複数の攻撃コードの入力を受け付ける入力部と、入力された前記複数の攻撃コードに共通している文字列のパターンを抽出し、前記複数の攻撃コードには共通していない文字列のパターンを正規表現に置き換えた文字列である前記シグネチャを生成するシグネチャ生成部とを備えることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、入力値として用いた攻撃コード以外の攻撃コードについても検知可能なシグネチャを迅速に生成することができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、シグネチャ生成装置の構成例を示す図である。
【図２】図２は、攻撃コードの形態素解析の例を示す図である。
【図３】図３は、複数の攻撃コードの形態素列における最長共通部分列の抽出の例を示す図である。
【図４】図４は、最長共通部分列以外の形態素の正規表現への置換によるシグネチャ生成の例を示す図である。
【図５】図５は、シグネチャ生成装置の処理手順の例を示すフローチャートである。
【図６】図６は、シグネチャ生成プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照しながら、本発明を実施するための形態（実施形態）について説明する。本発明は本実施形態に限定されない。
【００１１】
図１を用いて本実施形態のシグネチャ生成装置１０を説明する。シグネチャ生成装置１０は、複数の攻撃コードの入力を受け付けると、この複数の攻撃コードを用いてシグネチャを生成する。このシグネチャは、例えば、ＷＡＦ等において攻撃を見分ける手がかりとなる、パケットの先頭あるいはパケットグループの文字列のパターンである。また、攻撃コードは、攻撃先への攻撃に用いられるデータであり、例えば、攻撃先への送信パケットのうち、攻撃先のソフトウェアの脆弱性を突き悪用するための文字列部分である。
【００１２】
シグネチャ生成装置１０は、入力部１１と、制御部１２と、出力部１３とを備える。入力部１１は、シグネチャの生成に用いられる複数の攻撃コード（例えば、攻撃コードＡ、攻撃コードＢ、攻撃コードＣ等）の入力を受け付ける。制御部１２は、シグネチャ生成装置１０全体の制御を司り、ここでは主にシグネチャ生成部１２１によりシグネチャの生成を行う。出力部１３は、制御部１２により生成されたシグネチャを出力する。
【００１３】
シグネチャ生成部１２１は、文字列分割部１２２と、共通部分列抽出部１２３と、文字列置換部１２４とを備える。
【００１４】
文字列分割部１２２は、入力部１１で受け付けた複数の攻撃コードそれぞれを、意味を持つ最小単位の文字列に分割する。例えば、文字列分割部１２２は、正規表現を用いたルールベースの形態素解析器により、図２の符号２１に示す攻撃コードの形態素解析を行い、符号２２に示す攻撃コードの形態素列を作成する。なお、符号２２に示す形態素列において「｜」は、形態素を分割した境界を示す。
【００１５】
共通部分列抽出部１２３は、複数の攻撃コードの文字列の分割結果を用いて、複数の攻撃コードに共通している文字列のパターン（共通部分文字列）を抽出する。例えば、共通部分列抽出部１２３は、複数の攻撃コードの文字列の形態素解析の結果を用いて、複数の攻撃コードに共通する最長共通部分列を算出し、抽出する。この最長共通部分列の算出は、例えば、非特許文献２に記載の技術を用いて行う。なお、シグネチャ生成部１２１が、シグネチャに、このような複数の攻撃コードの最長共通部分列を用いることで、複数の攻撃コードの攻撃対象の脆弱性と同じ脆弱性を突く他の攻撃コードについても検知しやすいシグネチャを生成することができる。
【００１６】
一例を挙げると、共通部分列抽出部１２３は、例えば、図３の（Ａ）に示す攻撃コードの形態素列と、（Ｂ）に示す攻撃コードの形態素列との最長共通部分列として、符号３１に示す文字列を抽出する。なお、この例では、文字列の大文字・小文字は同じ要素としてみなすルールを適用しているが、これに限定されない。
【００１７】
文字列置換部１２４は、入力部１１で受け付けた複数の攻撃コードのうち、共通部分文字列（例えば、最長共通部分列）以外の文字列を一般化することでシグネチャを生成する。例えば、文字列置換部１２４は、入力部１１で受け付けた複数の攻撃コードのうち、最長共通部分列以外の文字列を正規表現に置き換えることにより、シグネチャを生成する。正規表現への置き換えは、例えば、Jeffrey  E.  F.  Friedl著、「詳説  正規表現  第3版」、オライリージャパン等に記載の技術を用いて行う。
【００１８】
最長共通部分列以外の文字列を正規表現に置き換える処理の一例を挙げる。ここでは、共通部分列抽出部１２３が、図４の（Ａ）に示す攻撃コードの形態素列と、（Ｂ）に示す攻撃コードの形態素列との最長共通部分列として、符号５１に示す文字列を抽出した場合を考える。この場合、文字列置換部１２４は、例えば、符号５２に示すように、複数の攻撃コードそれぞれの形態素列から得られた最長共通部分列以外の形態素を、正規表現（例えば、「￥Ｗ＋」等）に置換する。そして、文字列置換部１２４は、最長共通部分列、正規表現に置換された形態素を利用してシグネチャを生成する。例えば、文字列置換部１２４は、符号５２の（Ａ）に示す形態素列および（Ｂ）に示す形態素列を統合して、符号５３に示すシグネチャを生成する。
【００１９】
このようにすることでシグネチャ生成装置１０は、入力値として用いた攻撃コード以外の攻撃コードについても検知可能なシグネチャを迅速に生成することができる。
【００２０】
次に、図５を用いて、シグネチャ生成装置１０の処理手順を説明する。ここでは、シグネチャ生成装置１０が、複数の攻撃コードの形態素列から最長共通部分列を算出し、最長共通部分列以外を正規表現に置き換えることによりシグネチャを生成する場合を例に説明する。
【００２１】
まず、シグネチャ生成装置１０の入力部１１が複数の攻撃コードの入力を受け付けると（Ｓ１）、共通部分列抽出部１２３は、攻撃コードそれぞれの形態素解析を行う（Ｓ２）。その後、共通部分列抽出部１２３は、形態素解析された複数の攻撃コードそれぞれの形態素列から最長共通部分列を算出する（Ｓ３）。そして、文字列置換部１２４は、複数の攻撃コードの最長共通部分列以外の形態素を正規化（正規表現に置換）する（Ｓ４）。これにより、文字列置換部１２４は、最長共通部分列、正規表現への置換後の形態素を用いたシグネチャを生成する。その後、出力部１３は、生成されたシグネチャを出力する（Ｓ５）。
【００２２】
このようにすることで、シグネチャ生成装置１０は入力値として用いた攻撃コード以外の攻撃コードについても検知可能なシグネチャを生成することができる。
【００２３】
また、シグネチャ生成装置１０は、上記の処理を実行する専用のハードウェアにより実現してもよいし、上記の処理を実行するシグネチャ生成プログラムを所望の情報処理装置（コンピュータ）にインストールすることによって実現してもよい。例えば、パッケージソフトウェアやオンラインソフトウェアとして提供される上記のシグネチャ生成プログラムを情報処理装置に実行させることにより、情報処理装置をシグネチャ生成装置１０として機能させることができる。ここで言う情報処理装置には、デスクトップ型またはノート型のパーソナルコンピュータが含まれる。また、その他にも、情報処理装置にはスマートフォン、携帯電話機やＰＨＳ（Personal  Handyphone  System）等の移動体通信端末、さらには、ＰＤＡ（Personal  Digital  Assistants）等のスレート端末等がその範疇に含まれる。また、シグネチャ生成装置１０を、Ｗｅｂサーバやクラウドとして実装し、ネットワーク経由でシグネチャの生成をするようにしてもよい。
【００２４】
（プログラム）
図６は、シグネチャ生成プログラムを実行するコンピュータを示す図である。図６に示すように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ（Central  Processing  Unit）１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０とを有する。これらの各部は、バス１０８０によって接続される。
【００２５】
メモリ１０１０は、ＲＯＭ（Read  Only  Memory）１０１１およびＲＡＭ（Random  Access  Memory）１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、ハードディスクドライブ１０９０に接続される。ディスクドライブインタフェース１０４０は、ディスクドライブ１１００に接続される。ディスクドライブ１１００には、例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が挿入される。シリアルポートインタフェース１０５０には、例えば、マウス１１１０およびキーボード１１２０が接続される。ビデオアダプタ１０６０には、例えば、ディスプレイ１１３０が接続される。
【００２６】
ここで、図６に示すように、ハードディスクドライブ１０９０は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３およびプログラムデータ１０９４を記憶する。上記実施形態で説明した各情報、データは、例えばハードディスクドライブ１０９０やメモリ１０１０に記憶される。
【００２７】
また、シグネチャ生成プログラムは、例えば、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、ハードディスクドライブ１０９０に記憶される。具体的には、上記実施形態で説明したシグネチャ生成装置１０が実行する各処理が記述されたプログラムモジュールが、ハードディスクドライブ１０９０に記憶される。
【００２８】
また、シグネチャ生成プログラムによる情報処理に用いられるデータは、プログラムデータとして、例えば、ハードディスクドライブ１０９０に記憶される。そして、ＣＰＵ１０２０が、ハードディスクドライブ１０９０に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出して、上述した各手順を実行する。
【００２９】
なお、シグネチャ生成プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０９０に記憶される場合に限られず、例えば、着脱可能な記憶媒体に記憶されて、ディスクドライブ１１００等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、シグネチャ生成プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ＬＡＮ（Local  Area  Network）やＷＡＮ（Wide  Area  Network）等のネットワークを介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０によって読み出されてもよい。
【符号の説明】
【００３０】
１０    シグネチャ生成装置
１１    入力部
１２    制御部
１３    出力部
１２１  シグネチャ生成部
１２２  文字列分割部
１２３  共通部分列抽出部
１２４  文字列置換部
【図１】
0006588385.tif 000002
【図２】
0006588385.tif 000003
【図３】
0006588385.tif 000004
【図４】
0006588385.tif 000005
【図５】
0006588385.tif 000006
【図６】
0006588385.tif 000007