(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0011】
以下、図面を参照して実施の形態について説明する。各図面において、同一構成部分には同一符号を付し、重複した説明を省略する場合がある。なお、以下で説明する実施の形態は一例に過ぎず、本発明が適用される実施の形態は、以下の実施の形態に限られるわけではない。
<<第一の実施の形態>>
(概要)
図1は、第一の実施の形態に係る情報処理システムの概要を示す図である。第一の実施の形態に係る情報処理システム10は、外部ネットワークと接続されており、外部ネットワークの先に存在する装置(図示せず)から要求を受け付けることで処理を行う情報処理装置20a及び情報処理装置20bと、プログラムに発生する異常を解析する解析サーバ30と、情報処理装置20に対する攻撃を検出するための情報が含まれるブロックリストを生成するブロックリスト生成サーバ40と、から構成されている。
【0012】
また、情報処理システム10において、情報処理装置20aと、情報処理装置20bと、解析サーバ30と、ブロックリスト生成サーバ40とは、相互に通信可能なように構成されている。情報処理システム10に含まれる情報処理装置20は1台であってもよく、3台以上であってもよい。以下、「情報処理装置20a」及び「情報処理装置20b」のうち任意の情報処理装置20は、「情報処理装置20」と表す。
【0013】
図2は、第一の実施の形態に係る情報処理システムの動作手順の概要を示す図である。
図1及び
図2を参照しながら第一の実施の形態に係る情報処理システム10の動作の概要を説明する。情報処理装置20aが、外部ネットワークの先に存在する装置(以下、「外部装置」という)と通信することで所定の処理を行っている前提で、動作の概要を説明する。
【0014】
まず、情報処理装置20aがバッファオーバーフローを引き起こすような不正パケットが、外部装置から情報処理装置20aに対して送信されたとする。情報処理装置20aがこの不正パケットに対する脆弱性を含んでいる場合、情報処理装置20aにインストールされたプログラムが異常処理を引き起こしてクラッシュ(動作停止)することがある。
【0015】
情報処理装置20aは、プログラムがクラッシュしたことを検出すると(S101)、クラッシュした際のメモリの内容をファイル化したメモリダンプ情報を出力し(S102)、解析サーバ30に送信する。
【0016】
解析サーバ30は、メモリダンプ情報を解析することで、メモリダンプ情報にプログラムがクラッシュした原因となる攻撃コードや、不正パケットの送信元である外部装置のURLといった、プログラムがクラッシュする要因となる攻撃の特徴を示す特徴情報(以下「特徴情報」という)が含まれていないかを特定する(S103)。
【0017】
解析サーバ30は、特定された特徴情報をブロックリスト生成サーバ40に送信する。ブロックリスト生成サーバ40は、受信した特徴情報に基づいてブロックリストを生成し(S104)、情報処理装置20aに送信する。
【0018】
情報処理装置20aは、外部装置との通信パケットとブロックリストに含まれる特徴情報とを比較し、外部装置との通信パケットが不正パケットであると判断する場合、外部装置との通信を遮断するように動作する(S105)。これにより、情報処理装置20aは、アプリケーションプログラムに対して修正プログラムを適用することなく、再度同様の不正パケットを受信した場合でも、プログラムのクラッシュを免れることができる。
【0019】
なお、ブロックリスト生成サーバ40は、ブロックリストを、情報処理装置20aに加えて、情報処理装置20bにも送信するようにしてもよい。これにより、情報処理装置20bは、上記不正パケットによる攻撃を防御することが可能になる。すなわち、情報処理装置20aに対する攻撃により得られた知見を、多数のコンピュータに活用することができる。
【0020】
なお、情報処理装置20は、プログラムに従って動作する装置であれば種類を問わない。例えば、情報処理装置20は、PC(Personal Computer)、サーバ、携帯端末、又はタブレット端末等であってもよいし、L2/L3スイッチ、又はルータ等のネットワーク機器であってもよい。
(ハードウェア構成)
図3は、第一の実施の形態に係る情報処理装置のハードウェア構成の一例を示す図である。情報処理装置20は、CPU201と、ROM202と、RAM203と、HDD204と、操作部205と、表示部206と、ドライブ装置207と、NIC(Network Interface card)208とを有する。
【0021】
CPU201は、情報処理装置20の全体制御を行うプロセッサである。CPU201、HDD204等に記憶されたオペレーティングシステム、アプリケーション、各種サービス等のプログラムを実行し、情報処理装置20の各機能を実現する。ROM202には、各種のプログラムやプログラムによって利用されるデータ等が記憶される。RAM203は、プログラムをロードするための記憶領域や、ロードされたプログラムのワーク領域等として用いられる。HDD204には、各種情報及びプログラム等が記憶される。
【0022】
操作部205は、ユーザからの入力操作を受け付けるためのハードウェアであり、例えばキーボード又はマウスである。表示部206は、ユーザに向けた表示を行うハードウェアである。
【0023】
ドライブ装置207は、プログラムを記録した記憶媒体209からプログラムを読み取る。ドライブ装置207によって読み取られたプログラムは、例えば、HDD204にインストールされる。NIC208は、情報処理装置20をネットワークに接続し、データの送受信を行うための通信インタフェースである。
【0024】
なお、記憶媒体209とは、非一時的(non-transitory)な記憶媒体を言う。記憶媒体209の例としては、磁気記憶媒体、光ディスク、光磁気記憶媒体、不揮発性メモリなどがある。
【0025】
解析サーバ30及びブロックリスト生成サーバ40のハードウェア構成は、
図3と同一であるため説明は省略する。
(機能構成)
図4は、第一の実施の形態に係る情報処理システムの機能構成の一例を示す図である。まず、
図4を用いて、情報処理装置20の機能構成について説明する。
図4に示すように、第一の実施の形態に係る情報処理装置20は、通信手段301、異常検出手段302、出力手段303、制御手段304、及びブロックリスト管理手段305を備える。なお、
図4は、第一の実施の形態に特に関係する機能を示すものであり、例えばWebクライアント機能のように、本願発明に係る実施の形態とは関係が低い機能については図示していない。
【0026】
これらの各手段は、各手段の処理内容を記述したプログラムを情報処理装置20に実行させることにより実現可能である。すなわち、これらの各手段は、情報処理装置20に内蔵されるCPU201、ROM202、RAM203、及びHDD204などのハードウェア資源を用いて、各手段で実施される処理に対応するプログラムを実行することにより実現することが可能である。上記プログラムは、コンピュータが読取り可能な記憶媒体209等に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットなど、ネットワークを通じて提供することも可能である。
【0027】
通信手段301は、外部装置、解析サーバ30、及びブロックリスト生成サーバ40との間でパケットを送受信する。
【0028】
異常検出手段302は、情報処理装置20で動作しているプログラムを監視し、プログラムに発生する異常を検出する。プログラムに発生する異常としては、例えば、動作中のプログラムが、アクセスが許可されていないメモリ領域を参照しようとした場合、動作中のプログラムが0で割算をしようとした場合など、プログラムがそれ以上動作を継続することが出来ない状態があげられる。またプログラムは動作しているものの、無限ループやデッドロック状態に陥っている状態などがあげられる。
【0029】
このような状態に至る要因は様々であるが、異常検出手段302は、特定の要因に限らず、プログラムに発生する異常を検出する。また、異常検出手段302が異常を検出する手段は問わない。例えば、CPU201が備えるエラー検出機能を利用することで異常を検出するようにしてもよいし、OS(Operating System)のカーネルが備えるエラー検出機能を利用することで異常を検出するようにしてもよい。
【0030】
出力手段303は、異常検出手段302からの指示により、RAM203に記憶されている内容をファイルに書き出すことで、メモリダンプ情報を出力する。出力手段303は、出力したメモリダンプ情報を、通信手段301を介して解析サーバ30に送信する。メモリダンプ情報とは、ある瞬間のメインメモリに記憶されている内容をファイルに書き出したものであり、主に、プログラムの不具合を解析する目的で使用される。
【0031】
なお、出力手段303は、メインメモリに記憶されている内容全てをファイルに書き出すようにしてもよいし、メインメモリの特定領域の内容に限定してファイルに書き出すようにしてもよい。また、メインメモリに記憶されている内容そのものに限らず、問題解析に役立つ情報である、メモリの内容を間接的に示す情報(プログラムに異常が発生したメモリの番地、メモリに記憶された値のハッシュ値など)をファイルに書き出すようにしてもよい。また、出力手段303は、メインメモリに限らず、例えば、仮想メモリとして利用しているHDD204の領域や、その他プログラムが利用している外部記憶装置に記憶されている内容をファイルに書き出すようにしてもよい。
【0032】
また、出力手段303は、OSに予め実装されている、メモリダンプ情報を出力する機能を利用するようにしてもよい。
【0033】
ブロックリスト管理手段305は、ブロックリスト管理サーバから受信したブロックリストを、RAM203又はHDD204に保存すると共に、必要に応じて読出し及び更新を行う。
【0034】
制御手段304は、ブロックリストを用いることで、外部装置からの攻撃を防御する。
【0035】
図5は、ブロックリストの一例及び制御手段304の動作の一例を示す図である。ここで、
図5を用いて、制御手段304の動作例(その1)について説明する。
【0036】
図5(a)は、ブロックリストに格納されている情報の一例である。ブロックリストには、攻撃元である外部装置のURLを示す文字列、及び、攻撃コード(exploit code)のバイト列が格納されている。攻撃コードとは、ソフトウェアの脆弱性を攻撃するように作成された、スクリプトやプログラムである。
【0037】
図5(b)は、情報処理装置20にインストールされたウェブブラウザが、インターネットを介してウェブサーバにアクセスする様子を表している。制御手段304は、情報処理装置20の中に、ソフトウェアで実現される仮想的なProxyを設置し、ウェブブラウザがウェブサーバにアクセスする際、仮想的なProxyを経由してアクセスさせるようにする。仮想的なProxyは、ウェブブラウザとウェブサーバとの間で送受信されるパケットを監視し、送受信されるパケットと、ブロックリストに格納されているURL又は攻撃コードとを比較する。ウェブブラウザのアクセス先が、ブロックリストに格納されているURLが示すアクセス先と一致する場合、Proxyは、例えばパケットを破棄することで、ウェブブラウザに当該アクセス先にアクセスさせないようにする。これにより、ウェブブラウザが、不正な外部装置にアクセスするのを防止することができる。また、ウェブサーバから受信したパケットのバイト列と、ブロックリストに格納されている攻撃コードのバイト列が一致した場合、Proxyは、例えばパケットを破棄する。これにより、攻撃パケットが情報処理装置20の内部に侵入するのを防止することができる。
【0038】
制御手段304の動作例(その2)について説明する。例えば、指定されたURLからファイルをダウンロードするようなアプリケーションプログラムにおいて、OS等が提供しているファイルダウンロード用のAPIが使用される場合がある。そこで、アプリケーションプログラムが当該APIをコールすると、当該APIの代わりに予め用意した別のAPIが動作するようにAPIをフックする。予め用意した別のAPIは、アプリケーションプログラムがアクセスしようとしているURLと、ブロックリストに格納されているURLが一致するかを比較し、一致する場合はファイルをダウンロードしないように動作する。これにより、アプリケーションプログラムが不正なサーバからファイルをダウンロードするのを未然に防止することができる。
【0039】
なお、制御手段304は、上記動作例に示す機能に限定されるものではない。ブロックリストを用いて、外部装置からの攻撃を防御することができれば、他の機能も適用できる。また、外部装置からの攻撃の防御に限らず、バグ等に起因する情報処理装置20の誤作動を防止する機能を含むようにしてもよい。
【0040】
次に、
図4を用いて、解析サーバ30の機能構成について説明する。
図4に示すように、第一の実施の形態に係る解析サーバ30は、通信手段311、解析手段312、及び表示手段313を備える。
【0041】
これらの各手段は、各手段の処理内容を記述したプログラムを解析サーバ30に実行させることにより実現可能である。すなわち、これらの各手段は、解析サーバ30に内蔵されるCPU201、ROM202、RAM203、及びHDD204などのハードウェア資源を用いて、各手段で実施される処理に対応するプログラムを実行することにより実現することが可能である。上記プログラムは、コンピュータが読取り可能な記憶媒体209等に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットなど、ネットワークを通じて提供することも可能である。
【0042】
通信手段311は、情報処理装置20、及びブロックリスト生成サーバ40との間でパケットを送受信する。
【0043】
解析手段312は、メモリダンプ情報を解析することで、特徴情報が含まれていないかを特定する。例えば、悪意のあるコードを含むソフトウェアであるマルウェア(malicious software)は、搾取した情報の送信先サーバのURLをプログラムコード内に含むことがある。このようなマルウェアの動作によりアプリケーションプログラム等で異常が発生した場合、当該URLがメモリダンプ情報に含まれる。従って、メモリダンプ情報を解析することで、当該URLを抽出することができる。また、メモリダンプ情報から、異常を引き起こすきっかけになった攻撃コード(exploit code)を抽出するようにしてもよい。解析手段312は、上記手段により得られたURL又は攻撃コードを、特徴情報として扱う。なお、解析手段312は、上記の方法により実現される機能に限定されるものではない。特徴情報を抽出する方法であれば、他の機能も適用できる。
【0044】
解析手段312は、特徴情報を、通信手段311を介してブロックリスト生成サーバ40に送信する。
【0045】
表示手段313は、表示部206を介して、メモリダンプ情報又は特徴情報をユーザが視認できるように表示する。また、メモリダンプ情報の一部を抽出して表示するようにしてもよい。また、解析手段312により一部が解析されたメモリダンプ情報を表示するようにしてもよい。メモリダンプ情報から特徴情報を抽出する際、専門スキルを有するユーザによる詳細な分析により特徴情報が特定される場合もある。従って、表示手段313を備えることで、専門スキルを有するユーザが、メモリダンプ情報を用いて詳細な分析を行うことが出来る。
【0046】
次に、
図4を用いて、ブロックリスト生成サーバ40の機能構成について説明する。
図4に示すように、第一の実施の形態に係るブロックリスト生成サーバ40は、通信手段321、入力手段322、及び生成手段323を備える。
【0047】
これらの各手段は、各手段の処理内容を記述したプログラムをブロックリスト生成サーバ40に実行させることにより実現可能である。すなわち、これらの各手段は、ブロックリスト生成サーバ40に内蔵されるCPU201、ROM202、RAM203、及びHDD204などのハードウェア資源を用いて、各手段で実施される処理に対応するプログラムを実行することにより実現することが可能である。上記プログラムは、コンピュータが読取り可能な記憶媒体209等に記録して、保存したり、配布したりすることが可能である。また、上記プログラムをインターネットなど、ネットワークを通じて提供することも可能である。
【0048】
通信手段321は、解析サーバ30、及び情報処理装置20との間でパケットを送受信する。
【0049】
入力手段322は、操作部205を介して、特徴情報の入力を受け付ける。専門スキルを有するユーザがメモリダンプ情報を解析することで得られた特徴情報を、ブロックリストに反映させることができる。
【0050】
生成手段323は、一以上の特徴情報をまとめてファイル化することで、ブロックリストを生成する。また、生成手段323は、生成したブロックリストを、通信手段321を介して情報処理装置20に送信する。
(効果)
以上、第一の実施の形態によれば、情報処理装置20に修正プログラムを適用することなく、コンピュータに対する攻撃を防御することが可能になる。すなわち、修正プログラムの作成及び検証の完了を待つ必要がないため、コンピュータに対する攻撃を迅速に防御することが可能になる。
<<第二の実施の形態>>
次に、第二の実施の形態について図面に基づいて説明する。なお、第一の実施の形態と同一構成部分についての説明は省略する。また、特に言及しない点については、第一の実施の形態と同様でよい。
(概要)
図6は、第二の実施の形態に係る情報処理システムの動作手順の概要を示す図である。
図6を参照しながら第一の実施の形態に係る情報処理システム10の動作の概要を説明する。
【0051】
第二の実施の形態に係る情報処理システム10は、第一の実施の形態に係る情報処理システム10が有する機能に加え、情報処理装置20にインストールされたプログラムに対する攻撃を監視し(S111)、具体的な攻撃が検出された場合や、具体的な攻撃に至らないまでも不審な挙動が発見された場合に、意図的な例外処理(以下、「疑似クラッシュ」という)を発生させる機能を有する(S112)。このように、疑似クラッシュを発生させることで、第一の実施の形態に係る処理手順(S102乃至S105)を強制的に実行させる。これにより、プログラムのクラッシュを誘発しない攻撃に対しても、メモリダンプ情報を収集することによる情報解析を行うことが出来ると共に、ブロックリストによる防御を行うことが出来る。
(ハードウェア構成)
情報処理装置20、解析サーバ30、及びブロックリスト生成サーバ40のハードウェア構成は、
図3と同一であるため説明は省略する。
(機能構成)
図7は、第二の実施の形態に係る情報処理システムの機能構成の一例を示す図である。
図7を用いて、情報処理装置20の機能構成について説明する。
図7に示すように、第二の実施の形態に係る情報処理装置20は、通信手段301、異常検出手段302、出力手段303、制御手段304、ブロックリスト管理手段305、攻撃検出手段、及び異常発生手段307を備える。なお、
図7は、第二の実施の形態に特に関係する機能を示すものであり、例えば、Webクライアント機能のように、本願発明に係る実施の形態とは関係が低い機能については図示していない。
【0052】
攻撃検出手段306は、外部装置との間で行われる通信又はメモリの動作を監視することで、情報処理装置20に対する不審な挙動を検出する。例えば、下記(1)〜(2)の手段又はこれらの手段の組み合わせにより、不審な挙動を検出することができる。なお、攻撃検出手段306は、下記の手段に限らない。情報処理装置20に対する不審な挙動を検出することができる手段であれは、他の手段も適用できる。
【0053】
また、例えば、電子商取引の不正注文等が発覚したような場合など、攻撃検出手段306は、ユーザの指示により、不審な挙動を検出したと判断するようにしてもよい。
【0054】
(1)マルウェアである可能性が高いと判断できるような特徴的な文字列又はバイト列を、予めマルウェアを解析することで抽出しておき、これらの特徴的な文字列又はバイト列を含むファイル等が検出された場合、攻撃検出手段306は、情報処理装置20にマルウェアが侵入していると判断することができる。
【0055】
(2)実行中のプログラムが、自分自身のプログラムをファイルとして出力し、さらに出力したファイルを実行しようとした場合、そのプログラムはマルウェアであると考えられる。従って、このような動作を検出した場合、攻撃検出手段306は、情報処理装置20にマルウェアが侵入していると判断することができる。
【0056】
異常発生手段307は、情報処理装置20の内部にて意図的な例外処理(疑似クラッシュ)を発生させる。例えば、異常発生手段307は、ゼロの割算を行うプログラムを起動させることで、強制的に例外処理を発生させることができる。また、異常発生手段307は、プログラムからはアクセス不可能なメモリ領域に値を書き込むことで、強制的に例外処理を発生させることができる。なお、例外処理を発生させる手段は上記の手段に限らない。意図的な例外処理を発生させることができれば、他の手段も適用できる。
(効果)
以上、第二の実施の形態によれば、情報処理装置20に修正プログラムを適用することなく、コンピュータに対する攻撃を防御することが可能になる。すなわち、修正プログラムの作成及び検証の完了を待つ必要がないため、コンピュータに対する攻撃を迅速に防御することが可能になる。
【0057】
また、一般的なOSは、例外発生を検出したタイミングでメモリダンプ情報を生成する機能を予め備えていることが多い。従って、第二の実施の形態によれば、OSが備えている機能を用いてメモリダンプ情報を生成及び収集することができる。
【0058】
また、第二の実施の形態によれば、アプリケーションプログラムのクラッシュを誘発しない攻撃に対しても、メモリダンプ情報を収集することによる解析を行うことが出来ると共に、ブロックリストによる防御を行うことが出来る。さらに、収集したメモリダンプ情報を解析することで、検出された不審な挙動に関する詳細な情報を収集することができ、未知の攻撃手法の発見に役立てることができる。
(実施の形態の補足)
なお、本発明の各実施の形態において、情報処理システム10は、必ずしも情報処理装置20、解析サーバ30及びブロックリスト生成サーバ40に分けて構成される必要は無い。例えば、解析サーバ30及びブロックリスト生成サーバ40が有する機能の一部を、情報処理装置20に実装するようにしてもよい。また、情報処理装置20に全ての機能を実装するようにしてもよい。
【0059】
なお、本発明の各実施の形態において、情報処理装置20、解析サーバ30及びブロックリスト生成サーバ40の一部又は全部を、クラウドサーバ上に実装するようにしてもよい。
【0060】
なお、本発明の各実施の形態において、必ずしも解析サーバ30が備える表示手段313、解析手段312、及び通信手段311を備えている必要は無い。例えば、解析サーバ30が備える表示手段313、解析手段312、及び通信手段311を除いた情報処理システム10を構築するようにしてもよい。メモリダンプ情報の解析及び特徴情報の抽出については、OSのベンダ等が提供するサービスを利用するようにして、当該特徴情報に基づいた攻撃防御を行う情報処理システム10を構築することができる。
【0061】
以上、本発明は各実施の形態に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能である。
【0062】
なお、各実施の形態において、通信手段321は、配信手段の一例である。攻撃元である外部装置のURL及び攻撃コードは、特徴情報の一例である。ブロックリスト生成サーバは、生成サーバの一例である。