(57)【要約】【課題】本発明は、ウェブブラウザの脆弱性が利用されることを防止する方法及び装置を提供する。【解決手段】本発明に係る方法は、ブラウザプロセスにダウンロードされるファイルを監視するステップと、上記ブラウザプロセスにより発生させられたプロセス作成動作を傍受するステップと、傍受されたプロセス作成動作が上記ブラウザプロセスにダウンロードされた上記ファイルを起動しようとするか否かを判定するステップと、上記判定の結果が肯定であれば、ブラウザの脆弱性が利用される可能性があることをユーザに提示するステップと、を含む。【選択図】図１
2011501280.tif 000002
【特許請求の範囲】
【請求項１】
ウェブブラウザの脆弱性が利用されることを防止する方法であって、
ブラウザプロセスにダウンロードされるファイルを監視するステップと、
ブラウザプロセスにより発生させられたプロセス作成動作を傍受するステップと、
傍受されたプロセス作成動作が前記ブラウザプロセスにダウンロードされた前記ファイルを起動しようとするか否かを判定するステップと、
前記判定の結果が肯定であれば、ブラウザの脆弱性が利用される可能性があることをユーザに提示するステップと、
を含むことを特徴とする方法。
【請求項２】
前記ブラウザプロセスにダウンロードされるファイルを監視するステップは、さらに、
前記ブラウザプロセスのファイル作成動作を傍受するステップと、
前記ブラウザプロセスのファイル書込み動作を傍受するステップと、
を含むことを特徴とする請求項１記載の方法。
【請求項３】
前記ブラウザプロセスにダウンロードされるファイルを監視するステップは、さらに、
傍受されたファイル作成の要求に応じて、ファイルキャッシュにおいて前記ブラウザプロセスに作成されたファイルの情報を記憶するステップと、
傍受されたファイル書込みの要求に応じて、前記ファイルキャッシュにおいて前記ブラウザプロセスに作成されたファイルの上書きマークを記憶するステップと、
を含むことを特徴とする請求項２記載の方法。
【請求項４】
前記ファイルキャッシュにおいて、ユーザが高速に検索するためのデータ構造をメンテナンスし、このデータ構造中の各ノード毎に、一つの記憶された前記ファイルの情報及び対応の前記上書きマークを記録することを特徴とする請求項３記載の方法。
【請求項５】
前記データ構造中のノードの情報を捜索し前記上書きマークをチェックすることにより、前記起動しようとするファイルが、前記ブラウザプロセスにダウンロードされるファイルであるか否かを確定することを特徴とする請求項４記載の方法。
【請求項６】
前記判定ステップでは、作成されたプロセスに対応するプログラムファイルが前記ブラウザプロセスにダウンロードされたファイルであるか否かを判定することを特徴とする請求項１〜５の何れかに記載の方法。
【請求項７】
作成されたプロセスに対応するプログラムファイルが前記ブラウザプロセスにダウンロードされたファイルではない場合は、前記判定ステップは、
作成されたプロセスに対応するファイルがコマンドラインプログラム又はスクリプト翻訳プログラムであるか否かを判定するステップと、
前記判断の結果が肯定であれば、前記コマンドラインプログラム又はスクリプト翻訳プログラムのコマンドラインパラメータにおいて前記ブラウザプロセスにダウンロードされたファイルが含まれるか否かを判定するステップと、
をさらに含むことを特徴とする請求項１〜５の何れかに記載の方法。
【請求項８】
前記スクリプト翻訳プログラムは、コマンドラインスクリプト翻訳プログラムとウインドウスクリプト翻訳プログラムの少なくとも一つを含むことを特徴とする請求項７記載の方法。
【請求項９】
GreateProcessAとGreateProcessWとWinExecとの三つのＡＰＩ関数のうちの少なくとも一つを傍受することにより、前記プロセス作成動作を傍受することを特徴とする請求項１記載の方法。
【請求項１０】
前記ファイルキャッシュに記憶された前記ファイルの情報が前記ファイルのファイル名のチェック値であることを特徴とする請求項３記載の方法。
【請求項１１】
前記データ構造が赤黒木であることを特徴とする請求項４又は５記載の方法。
【請求項１２】
傍受モジュールと、ブラウザプロセスにダウンロードされるファイルを監視する監視モジュールとを含み、ブラウザの脆弱性が利用されることを防止する装置であって、
前記傍受モジュールは、
ブラウザプロセスにより発生させられたプロセス作成動作を傍受するプロセス作成傍受モジュールと、
前記傍受モジュールに傍受されたプロセス作成動作が前記監視モジュールに監視された前記ブラウザプロセスにダウンロードされたファイルを起動しようとするか否かを判定する判定モジュールと、
前記判定モジュールによる判定の結果が肯定であれば、ブラウザの脆弱性が利用される可能性があることをユーザに提示する提示モジュールと、
を含むことを特徴とする装置。
【請求項１３】
前記監視モジュールは、
前記ブラウザプロセスのファイル作成動作を傍受するファイル作成傍受モジュールと、
前記ブラウザプロセスのファイル書込み動作を傍受するファイル書込み傍受モジュールと、
を含むことを特徴とする請求項１２記載の装置。
【請求項１４】
前記監視モジュールは、さらに、
前記ファイル作成傍受モジュールに傍受されたファイル作成の要求に応答して、前記ブラウザプロセスに作成されたファイルの情報を記憶し、
前記ファイル書込み傍受モジュールに傍受されたファイル書込みの要求に応答して、前記ブラウザプロセスに作成されたファイルの上書きマークを記憶するファイルキャッシュを含むことを特徴とする請求項１３記載の装置。
【請求項１５】
前記判定モジュールは、作成されたプロセスに対応するプログラムファイルが前記ブラウザプロセスにダウンロードされたファイルであるか否かを判定することを特徴とする請求項１２〜１４の何れかに記載の装置。
【請求項１６】
前記判定モジュールは、さらに、
作成されたプロセスに対応するファイルがコマンドラインプログラム又はスクリプト翻訳プログラムであるか否かを判定するモジュールと、
前記コマンドラインプログラム又はスクリプト翻訳プログラムのコマンドラインパラメータにおいて前記ブラウザプロセスにダウンロードされたファイルが含まれるか否かを判定するモジュールと、
を含むことを特徴とする請求項１２〜１４の何れかに記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ保護方法及び装置に関し、特にウェブブラウザが悪意プログラムにより利用されるのを防止する方法及び装置に関するものである。
【背景技術】
【０００２】
現在、社会やホームネットワークの応用の普及により、人々が高速広帯域網による便利及び高速度を十分に享受することができる。しかし、これにつれて、コンピュータのセキュリティを酷く脅かす各種類のウイルスにチャンスを与え、ネットワークを介して攻撃を行うウイルスが大量に出現している。
ネットワークを介して攻撃を行う数多くのウイルスのうち、トロイの木馬は、いつでもリモードコンピュータに指定情報を隠蔽的に送信可能であり、リモートインタラクション能力さえも持つので、ハッカーが大好きなバックドアツールとなる。しかし、ユーザにとって、トロイの木馬の危害は莫大である。トロイの木馬により、ハッカーの制御及び監視に対してユーザのコンピュータをいつでも暴露させ、ハッカーらは、ユーザの情報、例えばユーザの口座情報、パスワードなどをたやすくリモート盗むことができ、ユーザのコンピュータ利用の安全性を酷く脅かす。
【０００３】
トロイの木馬は今までに発展して、様々なトロイの木馬の埋め込みとロードモードが転化しているので、ユーザは防ぎようがない。例えば、その一種の「トロイの木馬を仕掛ける（Trojan-hosted）」という方式は、脆弱性を利用してウェブサイトに侵入し、次に、例えばウェブリンクにトロイの木馬プログラムのコードを埋め込むという方式である。このように、ユーザはブラウザでウェブを閲覧する時に、トロイの木馬のプログラムが仕掛けられたリンクをクリックして、ウイルスプログラムを自動的にユーザのコンピュータにインストールする可能性がある。そして、このようなウイルスプログラムの自動的なインストールの際に提示もないので、ユーザのコンピュータが気が付かずにウイルスを感染することになる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】ＣＮ１８８５２２４Ａ
【特許文献２】ＣＮ１５５０９５０Ａ
【特許文献３】ＣＮ１４０９２２２Ａ
【特許文献４】ＵＳ２００６１３６７２０Ａ１
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ネットワーク「トロイの木馬を仕掛ける」のような脆弱性の攻撃方式に対して、従来のウイルスチェックとアンチウイルスソフトウエア及びコンピュータ保護ソフトウエアは、徹底的に解決することができない。それは、従来のコンピュータ保護方法が何れもウイルス特徴走査の方式により実現されるものであり、脆弱性を利用したネットワーク攻撃に対して何も役立たないからである。
【０００６】
よって、現在、ウェブブラウザの脆弱性が利用されて悪意コードが実行されることを防止するコンピュータ保護方法は、切実に必要となる。
本発明は、ウェブブラウザの脆弱性（vulnerability）が利用されるのを防止する方法及び装置を提出することを一つの目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明は、ウェブブラウザの脆弱性が利用されることを防止する方法であって、ブラウザプロセスにダウンロードされるファイルを監視するステップと、ブラウザプロセスにより発生させられたプロセス作成動作を傍受するステップと、傍受されたプロセス作成動作が前記ブラウザプロセスにダウンロードされた前記ファイルを起動しようとするか否かを判定するステップと、前記判定の結果が肯定であれば、ブラウザの脆弱性が利用される可能性があることをユーザに提示するステップと、を含むものとした。
【０００８】
ここで、前記ブラウザプロセスにダウンロードされるファイルを監視するステップは、さらに、前記ブラウザプロセスのファイル作成動作を傍受するステップと、前記ブラウザプロセスのファイル書込み動作を傍受するステップとを含めることもできる。
また、前記ブラウザプロセスにダウンロードされるファイルを監視するステップは、さらに、傍受されたファイル作成の要求に応じて、ファイルキャッシュにおいて前記ブラウザプロセスに作成されたファイルの情報を記憶するステップと、傍受されたファイル書込みの要求に応じて、前記ファイルキャッシュにおいて前記ブラウザプロセスに作成されたファイルの上書きマークを記憶するステップと、を含めることもできる。この場合、前記ファイルキャッシュにおいて、ユーザが高速に検索するためのデータ構造をメンテナンスし、このデータ構造中の各ノード毎に、一つの記憶された前記ファイルの情報及び対応の前記上書きマークを記録することもできる。
【０００９】
さらに、前記データ構造中のノードの情報を捜索し前記上書きマークをチェックすることにより、前記起動しようとするファイルが、前記ブラウザプロセスにダウンロードされるファイルであるか否かを確定することもできる。
ここで、前記判定ステップでは、作成されたプロセスに対応するプログラムファイルが前記ブラウザプロセスにダウンロードされたファイルであるか否かを判定することもできる。
【００１０】
また、作成されたプロセスに対応するプログラムファイルが前記ブラウザプロセスにダウンロードされたファイルではない場合は、前記判定ステップは、作成されたプロセスに対応するファイルがコマンドラインプログラム又はスクリプト翻訳プログラムであるか否かを判定するステップと、前記判断の結果が肯定であれば、前記コマンドラインプログラム又はスクリプト翻訳プログラムのコマンドラインパラメータにおいて前記ブラウザプロセスにダウンロードされたファイルが含まれるか否かを判定するステップと、をさらに含むこともできる。
【００１１】
この場合、前記スクリプト翻訳プログラムは、コマンドラインスクリプト翻訳プログラムとウインドウスクリプト翻訳プログラムの少なくとも一つを含むこともできる。
また、GreateProcessAとGreateProcessWとWinExecとの三つのＡＰＩ関数のうちの少なくとも一つを傍受することにより、前記プロセス作成動作を傍受することもできる。
また、前記ファイルキャッシュに記憶された前記ファイルの情報を、前記ファイルのファイル名のチェックとすることもできる。
【００１２】
前記データ構造を赤黒木とすることもできる。
また本発明は、傍受モジュールと、ブラウザプロセスにダウンロードされるファイルを監視する監視モジュールとを含み、ブラウザの脆弱性が利用されることを防止する装置であって、前記傍受モジュールは、ブラウザプロセスにより発生させられたプロセス作成動作を傍受するプロセス作成傍受モジュールと、前記傍受モジュールに傍受されたプロセス作成動作が前記監視モジュールに監視された前記ブラウザプロセスにダウンロードされたファイルを起動しようとするか否かを判定する判定モジュールと、前記判定モジュールによる判定の結果が肯定であれば、ブラウザの脆弱性が利用される可能性があることをユーザに提示する提示モジュールと、を含む構成とした。
【００１３】
ここで前記監視モジュールは、前記ブラウザプロセスのファイル作成動作を傍受するファイル作成傍受モジュールと、前記ブラウザプロセスのファイル書込み動作を傍受するファイル書込み傍受モジュールと、を含むこともできる。
また前記監視モジュールは、さらに、前記ファイル作成傍受モジュールに傍受されたファイル作成の要求に応答して、前記ブラウザプロセスに作成されたファイルの情報を記憶し、前記ファイル書込み傍受モジュールに傍受されたファイル書込みの要求に応答して、前記ブラウザプロセスに作成されたファイルの上書きマークを記憶するファイルキャッシュを含むこともできる。
【００１４】
また、前記判定モジュールは、作成されたプロセスに対応するプログラムファイルが前記ブラウザプロセスにダウンロードされたファイルであるか否かを判定することもできる。
ここで、前記判定モジュールは、さらに、作成されたプロセスに対応するファイルがコマンドラインプログラム又はスクリプト翻訳プログラムであるか否かを判定するモジュールと、前記コマンドラインプログラム又はスクリプト翻訳プログラムのコマンドラインパラメータにおいて前記ブラウザプロセスにダウンロードされたファイルが含まれるか否かを判定するモジュールとを含むこともできる。
【発明の効果】
【００１５】
本発明に係る方法及び装置により、ブラウザにより悪意プログラムを自動的にダウンロードし起動する行為を識別することにより、ブラウザの脆弱性が利用されて悪意コードが実行されユーザのコンピュータを侵害するのを防止することができる。
上記目的を実現するために、本発明は、ウェブブラウザの脆弱性が利用されることを防止する方法を提出しており、この方法は、ブラウザプロセスにダウンロードされるファイルを監視するステップと、上記ブラウザプロセスにより発生させられたプロセス作成動作を傍受（intercept）するステップと、傍受されたプロセス作成動作が上記ブラウザプロセスにダウンロードされた上記ファイルを起動しようとするか否かを判定するステップと、上記判定の結果が肯定であれば、ブラウザの脆弱性が利用される可能性があることをユーザに提示するステップと、を含む。また、本発明において、上記方法に対応するコンピュータ保護装置も提案されている。
【００１６】
本発明に係る方法によれば、ブラウザプロセスがプロセスを起動する前に判定を行って「起動しようとするプログラムは当該ブラウザプロセスにダウンロードされるファイルである」旨をユーザに警告しているので、信用できないプロセスの実行を適時に防止することにより、ブラウザにダウンロードされたウイルスソフトウエアによるコンピュータの感染を防止することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一つの実施例に係るウェブブラウザの脆弱性が利用されることを防止する方法の全体流れ図である。
【図２】本発明の一つの実施例に係るウェブブラウザにダウンロードされるファイルを監視する過程を示す図である。
【図３】本発明の一つの実施例に係るウェブブラウザプロセスの作成動作を傍受（intercept）する処理過程を示す図である。
【発明を実施するための形態】
【００１８】
以下、具体的な実施例を利用して、本発明に係るウェブブラウザの脆弱性が利用されることを防止する方法及び装置を詳しく説明する。
理解のために、以下の実施例では、Windows（登録商標）オペレーティングシステムのみを例として記述する。しかし、当業者にとって、本発明の構想と要旨は、Windows（登録商標）オペレーティングシステムに限らず、他のコンピュータオペレーティングシステムにおいても応用できると理解できる。
【００１９】
また、記述のために、以下、「ウェブブラウザ」を「ブラウザ」と略称するが、本発明で言われるブラウザは、全てウェブページを閲覧するウェブブラウザを指す。
上述のように、ユーザはブラウザにより例えば「トロイの木馬が仕掛けられた」ウェブページを閲覧する時に、思わずにブラウザにより悪意プログラム又はウイルスをダウンロードしてインストールする可能性がある。ブラウザがこのように利用されるのを有効に防止するために、まずこのような脆弱性利用プログラムが通常に採用する手段を分析する必要がある。
【００２０】
一般的に、ハッカーは脆弱性を利用してネットワークを攻撃する時に、何れもshellcodeを編集する。shellcodeは、サーバに送信して特定の脆弱性を利用するコード断片である。shellcodeは、メモリにおける現存の正確なコードをオーバレイし実行の権限を取得することにより、脆弱性を利用してそれ自身の機能を実現することができる。
具体的に言えば、脆弱性利用プログラムは、通常、以下の三つの方式を採用する。
【００２１】
１）shellcodeにおいて全ての機能を実現する。
ある脆弱性の利用者は、shellcodeにおいて全てのウイルスの機能を実現することになる。しかし、shellcodeの編集は非常に難しく、かつその環境が比較的に限られるので、shellcodeは、通常、比較的に簡単な機能を実現するのに用いられる。よって、この方式はよく使われていない。ハッカーが複雑な機能を実現しようとすると、以下の２つの方式でしか実現できない。
【００２２】
２）shellcodeでウイルスプログラムをダウンロードして直接的に実行する。
脆弱性の利用者は、通常、簡単なshellcodeのコード断片を編集することにより、悪意プログラムをダウンロードさせ、その後、プロセスを起動する関数、例えばWinExec又はCreateProcess等のAPI関数を呼び出せることにより、当該悪意プログラムを活性化させる。この方法は比較的に通用のものであり、脆弱性の利用者は、異なる悪意プログラムを置換することにより、異なる攻撃のニーズを実現することができる。
【００２３】
３）shellcodeでウイルスプログラムをダウンロードして間接的に実行する。
脆弱性の利用者は、通常、簡単なshellcodeのコードを編集することにより悪意プログラムをダウンロードさせ、スクリプトファイルを生成させ、その他のスクリプト翻訳プログラムを呼び出せることで当該スクリプトファイルを起動させることにより、悪意プログラムを活性化させる。この方法は、上記２）の方法と同じく、比較的に流行するものである。それは、脆弱性の利用者は、異なる悪意プログラムを置換することにより、異なる攻撃のニーズを実現することができるからである。
【００２４】
脆弱性利用プログラムの行為に対する分析により、脆弱性利用プログラムは、脆弱性利用の機能が成功した後、即ち、悪意プログラムのダウンロードが成功した後、プロセスを作成することにより悪意プログラムを直接的に起動し、又は、翻訳機を作成することによりスクリプトを翻訳し実行することで、悪意プログラムを間接的に起動することが分かる。よって、この複数種類の脆弱性の利用に対して、ブラウザプロセスのプロセス作成動作を傍受し、起動しようとするプログラムがブラウザにダウンロードされたファイルであるか否かを判定することにより、脆弱性利用プログラムが悪意コードを実行する行為を阻止することができる。
【００２５】
図１は本発明の一つの実施例に係るウェブブラウザの脆弱性が利用されるのを防止する全体流れ図を示す。
図１に示すように、本発明の上記構想を基づいて、ブラウザプロセス１０にダウンロードされるファイルを監視するために、本発明の一つの実施例において監視モジュール２０を増加した。監視モジュール２０は、ブラウザプロセス１０が創立してからブラウザプロセス１０にダウンロードされるファイルを監視する。また、当該ブラウザプロセス１０のプロセス作成動作を傍受するために、傍受モジュール３０を増加した。ここで、特別な説明がない場合に、本願で言われる監視されるブラウザプロセスと傍受されるブラウザプロセスは、同一のブラウザプロセスを指し、かつ、図面において、ブラウザ１０と示す。
【００２６】
図１において、ブラウザプロセス１０がファイルダウンロード動作を発生させる度に（ステップＳ１１０）、監視モジュール２０は当該ファイルダウンロード動作を傍受すると共に、当該ブラウザプロセス１０にダウンロードされるファイルの情報を記録する（ステップＳ１２０）。次に、上述のような脆弱性に対する分析のように、ファイルのダウンロードが完了した後、ブラウザプロセス１０は、新しいプロセスを作成して悪意コードを実行することを試みる。傍受モジュール３０の作用は、このプロセス作成動作を傍受し（ステップＳ１３０）、次に、監視モジュール２０に記録されたファイルの情報を検出して、当該プロセス作成動作が当該ブラウザプロセス１０にダウンロードされたファイルを起動しようとするか否かを判定することである（ステップＳ１４０）。最後に、傍受モジュール３０は、ステップＳ１４０での判定結果に基づき、ユーザに提示するか否かを確定して、ユーザにプロセス作成を拒絶（阻止）するか否かを選択させる（ステップＳ１５０）。
【００２７】
図１に示す上記過程を用いると、ユーザは、ウイルスのインストール又は起動の前に当該プログラムの行為が疑わしいという情報を取得し、必要に応じて当該疑わしいプログラムの実行を許可するか、又は拒絶するかを選択することができる。よって、傍受されるプログラムがウイルス又はトロイの木馬であれば、その実行を適時に阻止して、コンピュータがウイルスに感染されることを避けることができる。
【００２８】
以下、図２、図３を参照しながら、監視モジュール２０と傍受モジュール３０の具体的な操作過程を詳しく記述する。
図２は、ブラウザの脆弱性が利用される場合にshellcodeコードがブラウザ１０を通じてファイルのダウンロードを試みると、監視モジュール２０が実行する傍受及び監視動作を示す。本分野で周知のように、ファイルダウンロード動作は、具体的に、ファイル作成動作とファイル書込み動作とに分割される。そのために、監視モジュール２０には、ファイル作成動作を傍受するファイル作成（CreateFile）傍受モジュール２１と、ファイル書込み動作を傍受するファイル書込み（WriteFile）傍受モジュール２２と、作成された又は書き込まれたファイルの情報を記録するファイルキャッシュ（Cache）管理器２３とを含む。
【００２９】
図２に示すように、shellcodeコードがファイルのダウンロードを試みると、まず、ファイル作成の要求をオペレーティングシステム４０に送信する（ステップＳ２１１）。この時に、CreateFile傍受モジュール２１は、オペレーティングシステム４０が新しいファイルを作成又は現存のファイルを開く操作を傍受するので、当該ファイル作成の要求は、本発明に係るCreateFile傍受モジュール２１に転送される（ステップＳ２１２）。次に、CreateFile傍受モジュール２１は、真実なシステムファイル作成操作、例えばCreateFile（）のAPI関数を呼び出すことにより、ファイルの作成操作を完成する（ステップＳ２１３）。作成操作が成功すると、CreateFile傍受モジュール２１は、オペレーションシステムから作成が成功した旨のメッセージを取得する（ステップＳ２１４）。この時に、CreateFile傍受モジュール２１は、ファイルCache管理器２３にこのファイルを記録させる旨の情報を通知し（ステップＳ２１５）、その後、ファイルCache管理器２３から記録完成メッセージを返信する（ステップＳ２１６）。最後に、CreateFile傍受モジュール２１は、ファイル情報の記録が完成した後、ブラウザプロセス１０にファイル作成の要求を完了した旨のメッセージを返信する（ステップＳ２１７）。
【００３０】
図２におけるファイルCache管理器２３は、ブラウザプロセスにダウンロードされるファイルの情報を記載するものである。ブラウザのファイルに対する操作が比較的に頻繁なので、ファイルCacheは、高速検索のニーズを満足してこそ、ユーザの利用を影響せずに、ダウンロードされたファイルの情報の記録を迅速に完成することができる。そこで本発明では、高速検索を実現するために、ファイルCache管理器は、内部に赤黒木の構造をメンテナンスして、記録されたファイルの情報を管理する。もちろん、本発明はこれに限らず、その代わりに他のデータ構造を用いてもよい。赤黒木上の各ノード毎に、作成されたファイルの情報、及び当該ファイルが上書きされたか否かを示すマークを記録する（これは、ファイル書込み動作において更新される）。ファイルCache管理器にブラウザプロセスがファイルを作成するか又は開くことを通知する度に、ステップＳ２１５に示すように、メンテナンスされる赤黒木にファイル記述ノードを挿入し、挿入が成功した後にリターンする。また、記録された情報を簡単化するために、ファイルCache管理器に記憶されるファイルの情報は、本実施例ではファイル名／パスのチェック値だけであるが、本発明はこれに限られない。
【００３１】
作成されたファイル情報がファイルCache管理器に正しく記録された後、図２に示すように、脆弱性利用プログラムは、悪意プログラムをダウンロードし始めるように、オペレーションシステム４０に一連のファイル書込み要求を送信する（ステップＳ２２１）。本実施例では、オペレーションシステム４０のファイル書込み操作は傍受されるので、当該ファイル書込み要求は、本発明のWriteFile傍受モジュール２２に転送される（ステップＳ２２２）。次に、WriteFile傍受モジュール２２は、真実なシステムファイル書込み操作、例えばAPI関数WriteFile（）を呼び出すことにより、ファイルの書込み操作を行う（ステップＳ２２３）。書込み操作が成功すると、オペレーションシステムは、成功した旨のメッセージを返信する（ステップＳ２２４）。WriteFile傍受モジュール２２は、ファイルの書込みが成功した後、ファイルCache管理器に、この書込みファイルに対応するファイル記述ノードに当該ファイルが上書きされたことをマークするように通知する（ステップＳ２２５）。ファイルCache管理器が上書きマークを更新した後、更新完成メッセージを返信する（ステップＳ２２６）。最後に、WriteFile傍受モジュールは、ファイルの書込みが完成した旨のメッセージをブラウザプロセス１０に返信する（ステップＳ２２７）。
【００３２】
このように、脆弱性利用プログラムが現在のブラウザプロセスを通じてファイル作成及びファイル書込み操作を相次いで完成した後、ファイルCache管理器２３は、相応するファイルの情報を記録するだけでなく、当該ファイルが上書きされたことをマークする。よって、監視モジュール２０は持続に実行して、ブラウザプロセス１０にダウンロードされた全てのファイルの情報を監視して記録する。これら記録したファイルの情報は、傍受モジュール３０に利用される。ファイルCache管理器には、赤黒木をメンテナンスしているので、傍受モジュール３０はファイルがブラウザにダウンロードされたファイルであるか否かを照会する時に、この赤黒木に相応のファイル走査ノードを捜索し、その上書きマークをチェックする。相応のノードを見つけており、かつその上書きマークがファイルを書き込んだことを示している場合は、当該ファイルが現在ブラウザプロセスにダウンロードされたファイルであることを表明する。
【００３３】
上述のように、脆弱性利用プログラムは、現在のブラウザプロセスを通じて悪意プログラムをダウンロードした後、プロセス作成操作で新しいプロセスを起動することにより、ダウンロードされた悪意プログラムを活性化する。
従って、脆弱性利用プログラムのプロセス作成操作を有効に傍受するためには、まず、shellcodeの編集者がどの方式でプロセスを作成するかを分析する必要がある。
【００３４】
ｉ、ＡＰＩ関数GreateProcessA又はGreateProcessWを利用する。
この２つの関数は、何れもkernel32.dllから導出され、常用のプロセス作成方式に用いられる。
ｉｉ、ＡＰＩ関数ShellExecuteA又はShellExecuteWを利用する。
関数ShellExecuteは、最終的にGreateProcess関数を呼び出すので、その操作は、GreateProcess関数と同じであると見なされ、特別な処理を行う必要がない。
【００３５】
ｉｉｉ、ＡＰＩ関数execvp/execveを利用する。
この複数の関数も、最終的にGreateProcess関数を呼び出すので、特別な処理を行う必要がない。
ｉｖ、ＡＰＩ関数WinExecを利用する。
当該関数は、kernel32.dllから導出される。当該関数は比較的に特別なものであり、GreateProcessだけでなく、ZwCreateProcessさえも呼び出してプロセスを作成することはない。従ってこの場合は、この関数を単独に傍受する必要がある。
【００３６】
ｖ、ＡＰＩ関数ZwCreateProcessを利用する。
当業者が周知するように、この関数ZwCreateProcessは、プロセス対象だけを作成しているが、スレッドを作成しない。よって当該関数を呼び出すプログラムコードは、ファイルを開き、Section対象を作成し、プロセス対象を作成し、スレッドを作成し、スレッドを起動するなどの一連の操作を完了することで、初めてプロセスを確実に作成できる。Shellcodeの編集は、ある限界性を有するので、脆弱性利用コードの編集者は、一般的にこの方式でプロセスを作成しない。
【００３７】
上述の分析から明らかに分かるように、プロセス作成を傍受するためには三つのＡＰＩ関数、即ちGreateProcessA、GreateProcessW及びWinExecだけを単独に処理すればよい。
ここで、これらのＡＰＩ関数を傍受して処理するためには、異なるＡＰＩ関数のパラメータの各々の特性を一時的に無視し、それらの共通の性質だけを調べる。この調査によって、どの方式でもプロセスを起動する場合に完全なコメントラインを提供する必要があり、これは、それらの共通の性質であることが分かる。また、このコマンドラインには、必ず起動されるファイルの情報、例えばファイル名、パスなどを含む。よって、起動されるファイルの情報の取得は、コマンドラインを分析することにより実現することができる。
【００３８】
上述の分析に基づき、本発明の実施例に係る傍受モジュール３０は、図３に示すように傍受及び処理操作を実行する。
図３に示すように、傍受モジュール３０におけるプロセス作成傍受モジュールは、まず、GreateProcessAとGreateProcessWとWinExecとの三つのＡＰＩ関数のうちの一つ又は複数を傍受することにより、あるブラウザプロセスPaが新しいプロセスPbを作成する動作を傍受する（ステップＳ３１０）。
【００３９】
次に、傍受モジュール３０における判定モジュールは、傍受された関数のパラメータから得られた新たに作成されたプロセスに対応するファイルの情報、例えばファイル名、パスを取得する。当該ファイルの情報を取得した後、判定モジュールは、監視モジュール１０に記録された現在ブラウザプロセスPaにダウンロードされたファイルの情報を捜索する。即ち、得られたファイルの情報によりファイルCache管理器にメンテナンスされている赤黒木を捜索することにより、当該新しいプロセスPbに対応するファイルが現在ブラウザプロセスにダウンロードされたファイルであるか否かを判定する（ステップＳ３２０）。
【００４０】
ステップＳ３２０の判定結果が肯定であり、即ちファイルCache管理器にメンテナンスされている赤黒木から対応のファイル記述ノードを見つけ、かつ当該ノードのマークが上書きしたことを示している場合は、傍受モジュール３０における提示モジュールは、ユーザに提示情報を発送して、ユーザに現在ブラウザプロセスの脆弱性が利用される可能性があることを警告し、ユーザの処理を待つ（ステップＳ３５０）。
【００４１】
ステップＳ３２０の判定結果が否定である場合は、判定モジュールは、新たに作成したプロセスPbに対応するファイルがコマンドラインプログラム（例えばcmd.exeなど）、スクリプト翻訳プログラム、例えばWindows（登録商標）システム自身のコマンドラインスクリプト翻訳プログラムcscript.exe又はウインドウスクリプト翻訳プログラムwscript.exeであるか否かを判定し続けるが（ステップＳ３３０）、本発明はこれに限られず、例えばperl、python、rubyなどのスクリプト翻訳プログラムであってもよい。ステップＳ３３０の判定結果が否定である場合は、現在作成された新しいプロセスが安全であると認め、それが実行し続けることを許可する（ステップＳ３６０）。判定結果が肯定である場合には、判定モジュールは、現在起動された新しいプロセスが現在ブラウザプロセスにダウンロードされた悪意コードを翻訳し実行するものである可能性があると認める。よって、判定モジュールは、上述のコマンドラインプログラム又はスクリプト翻訳プログラムを起動しようとするコマンドラインパラメータには現在ブラウザプロセスにダウンロードされたファイルが含まれるか否かを判定し続ける（ステップＳ３４０）。具体的に言えば、本実施例では、CommandLineToArgvW関数で上述のプログラム、例えばcmd.exe、cscript.exe又はwscript.exeのコマンドラインパラメータを分割することにより、複数のパラメータを取得する。次に、各パラメータにおける内容を順にチェックすることにより、分割されたパラメータに監視モジュール２０に記録され、ブラウザにダウンロードされたファイルが含まれるか否かを判定する。コマンドラインパラメータにおけるファイルがブラウザにダウンロードされたファイルであると判定される場合は、脆弱性が利用される可能性を認めユーザに提示する（ステップＳ３５０）。そうでないと判定される場合には、当該新しいプロセスの作成を許可する（ステップＳ３６０）。
【００４２】
最後に、ステップＳ３５０では、現在ブラウザプロセスの脆弱性が利用されている可能性があることをユーザに提示して、ユーザの処理を待つ。ユーザが作成を拒絶することを選択する場合は（ステップＳ３７０）、現在のプロセスを傍受し（ステップＳ３８０）、選択しない場合には、プロセスの作成を許可する（ステップＳ３６０）。
（有益な効果）
以上、図１〜３を参照しながら本発明に係るウェブブラウザの脆弱性が利用されることを防止する方法及び装置を詳しく記載している。本発明に係る方法を用いて、ブラウザにダウンロードされたウイルスプログラムの実行を適時に傍受することができる。よって、本発明に係る方法及び装置によれば、ウェブブラウザは脆弱性が利用され悪意コードを実行する問題をよく解決することができる。また、本発明に係る方法によれば、ユーザは、ウェブページを閲覧する時に自動的にダウンロードしインストールされるアプレットを阻止することにより、コンピュータ資源の占用を避けることができる。
【００４３】
以上、好ましい実施例で本発明を例示し記述しているが、当業者であれば、本願の特許請求の範囲に限定される発明の主旨と範囲から離脱しない限り、様々な変更と補正をすることができる。
【図１】
2011501280.tif 000003
【図２】
2011501280.tif 000004
【図３】
2011501280.tif 000005
【国際調査報告】
2011501280.tif 000006
2011501280.tif 000007
2011501280.tif 000008
2011501280.tif 000009