本実施形態では、判定対象のファイルに含まれた悪意のあるプログラム等(マルウェア)による不正な命令の生成を検知する機能によって脆弱性を診断する装置(システム)について説明する。脆弱性診断装置10は、プロセッサ11がプログラムを処理する際に実行される命令を監視する機能を有している。この機能は、アプリケーションによってファイルを処理する際に生成・実行される命令を監視し、不正な命令が生成されたことを検出し、実行前にその不正命令の実行を中止させることによって悪意のあるプログラム等(マルウェア)の実行を阻止する。このとき、プログラムの実行タイミングと不正命令を検知したタイミングとを比較することによって悪意のあるプログラム等(マルウェア)を含むファイルを特定する。以下、図面を参照しながら本願発明の具体的な内容について説明する。
(第1実施形態)
本実施形態では、Webサイトの脆弱性を診断する脆弱性診断装置10について説明する。脆弱性診断装置10は、指定されたWebサイトから参照される各ファイルに悪意のあるプログラム等(マルウェア)が含まれているか否かを判定し、当該Webサイトの脆弱性を診断する装置である。
まず、Webサイトの脆弱性を診断する手順の概要について説明する。脆弱性診断装置10は、管理端末20から脆弱性を診断するWebサイトの指定を受け付けると、インターネットを介して指定されたサイトを構成するファイルを取得する。脆弱性診断装置10では取得したファイルをアプリケーションによって処理する。このとき、ファイルを処理するための各種命令の生成及び実行を命令実行監視部140によって監視し、不正な命令が生成された場合には実行前にその実行を中止させ、処理したファイルに悪意のあるプログラム等(マルウェア)が含まれていると判定する。診断結果は診断結果記憶部240に記憶し、診断結果出力部160によって出力される。
次に、脆弱性診断装置10のハードウェア構成について説明する。図1は、本発明の第1実施形態におけるWebサイトの脆弱性を判定する脆弱性診断装置10の構成の一例を示す図である。脆弱性診断装置10は、各種演算を行うプロセッサ11、ネットワークに接続するネットワークインターフェース12、プログラムやデータを一時的に記憶するメモリ13、及び、プログラムやデータを記憶する不揮発性記憶媒体である記憶装置14を備える。脆弱性診断装置10は、一般的な計算機であってもよく、必ずしも専用の装置である必要はない。
脆弱性診断装置10は、記憶装置14などに記憶されたプログラムをメモリ13に読み出し、プロセッサ11によって当該プログラムを実行する。プロセッサ11は、プログラム実行時にメモリ13に記憶されたデータを処理し、処理(演算)結果をメモリ13に書き出す。プロセッサ11は、メモリ13に記憶されているデータを必要に応じて記憶装置14に読み書きする。
ネットワークインターフェース12は、ネットワークに接続し、ルーター等を介してインターネットに接続する。本実施形態では、ネットワークを介して管理端末20が脆弱性診断装置10に接続される。管理端末20は、脆弱性診断装置10に診断対象のWebサイトのURLを指定したり、診断を実行するために必要な設定を行ったりする。なお、管理端末20から設定等を行うのではなく、脆弱性診断装置10に備えられた入力装置から直接情報の入力や各種設定を行うようにしてもよい。
次に、本実施形態の脆弱性診断装置10によりWebサイトの脆弱性を診断するためのソフトウェア(プログラム)やデータについて説明する。脆弱性診断装置10のメモリ13は、Webサイトの脆弱性を診断するためのソフトウェア(プログラム)として、サイト情報取得部130、命令実行監視部140、脆弱性診断部150、及び、診断結果出力部160を備える。また、記憶装置14は、各種データを記憶する記憶領域として、サイト情報記憶部(サイト情報テーブル)210、システムログ220、アプリケーションログ230及び診断結果記憶部(診断結果テーブル)240を提供する。
オペレーティングシステム110は、脆弱性診断装置10を管理及び制御するためのソフトウェアである。オペレーティングシステム110は、例えば、Windows(登録商標)である。アプリケーション120は、オペレーティングシステム110を介してハードウェアにアクセスし、各種機能を提供する。アプリケーション120は、脆弱性の診断対象となるWebサイトから提供されるファイルを処理するためのプログラムである。ファイルと当該ファイルを処理するためのアプリケーション120は、オペレーティングシステム110であらかじめ設定されている。
サイト情報取得部130は、指定されたWebサイトの情報や提供されるファイルを取得する。サイト情報取得部130は、サイト構成情報取得部131及びファイル取得部132を含む。サイト構成情報取得部131は、指定されたWebサイトの構成(サイトマップ)及びWebページやファイルの更新日時などの情報を取得し、各種情報をサイト情報記憶部210に格納する。ファイル取得部132は、指定されたWebサイトを構成するWebページから参照可能なファイルを取得する。
命令実行監視部140は、ファイル取得部132によって取得されたファイルをアプリケーション120によって処理し、不正な命令の生成を検出するとともに当該不正命令の実行を実行前に中止させ、ログ情報をシステムログ220やアプリケーションログ230に記録する。命令実行監視部140は、不正命令実行中止部141及び不正命令実行記録部142を含む。
不正命令実行中止部141は、システムに害を与えるなどの不正な動作が行われる際に実行される命令(不正命令)の生成を検出し、当該命令の実行を実行前に中止させる。不正な動作は、例えば、システム領域に配置された設定ファイルを書き換える動作、権限のない領域に格納されたデータを読み書きする動作、実行中の他のアプリケーションのメモリ領域を書き換える動作などである。また、不正な動作であるか否かの判定は命令の種類だけでなく、当該命令を実行するアプリケーションにより実行の可否が決定される。不正命令は、単一の命令であってもよいし、複数の命令のセットであってもよい。命令実行監視部140は、脆弱性診断時に実行するようにしてもよいし、脆弱性診断装置10の起動時からメモリ内に常駐させてもよい。
ここで、「不正命令」の実行を中止させる手段について説明する。前述のように、「不正命令」とは、オペレーティングシステム110がユーザー(管理者を含まない)に与えた権限を逸脱した命令のことである。メールソフトや文書作成ソフトなどの汎用アプリケーションでは、本来このような命令を実行することはユーザーには許可されていない(管理者としての実行権限がない)が、アプリケーションにより生成されたプロセスから間接的に不正な命令が実行される可能性がある。
具体的に説明すると、アプリケーションが実行されると、まず、当該アプリケーションに対応するプロセスを生成し、さらに、生成されたプロセスから必要に応じて子プロセス及び孫プロセスを生成する。そして、各プロセス(タスク)が対応する処理を実行することによりアプリケーションで指定された処理を完結させる。このとき、子プロセスや孫プロセスにおける処理でマルウェアをメモリやレジストリに潜ませ、スクリプトやバッチファイルからコマンドラインインターフェイスによって不正な命令が実行されてしまうおそれがある。
汎用アプリケーションの実行には、実行したユーザーの権限又はアプリケーションの権限などから、システム領域への書き込みやレジストリに対するアクセス及び操作などを行うことが制限されている。しかしながら、アプリケーションの実行により生成された子プロセスや孫プロセスでは実行したユーザーの権限が適用されないといった脆弱性が発生する場合がある。また、コマンドラインインターフェイスから実行されるプログラムでは、システムの設定等を可能とする必要があることから、システム領域へのアクセスやレジストリ操作などを許可する(管理者権限を利用して実行権限を制限しない)必要がある。そのため、子プロセスや孫プロセスでコマンドラインインターフェイスからプログラムが実行されると、正当なスクリプトと不正なスクリプトを区別できず、不正な命令が実行されるおそれがある。例えば、文書ファイルに内在させたマクロを子(孫)プロセスで実行することによりコマンドラインインターフェイスから不正な命令を含むプログラムを実行し、マルウェアに感染させたり、マルウェアを実行させたりする可能性がある。
そこで、本実施形態の脆弱性診断装置10は、アプリケーション実行時に生成された子プロセス及び孫プロセスにアプリケーションの実行権限の継承を監視する。これにより、実行されたアプリケーションに対する権限が各プロセスに対して適切な実行権限であるか否かを監視することが可能となり、アプリケーションからコマンドラインインターフェイスを起動させる命令をユーザ権限から管理者権限への不正継承と判断してその実行を制限することができる。そして、継承させた実行権限に基づく命令の生成をカーネルレベルで監視することにより、マルウェアの実行や感染を阻止する。
不正命令実行記録部142は、生成された命令を不正命令として検出した場合(不正命令の実行を中止させた場合)に検出した時刻等をシステムログ220に記録する。システムログ220は、脆弱性診断専用のテーブル(データベース)であってもよいし、オペレーティングシステム110によって管理されるイベントログと兼用であってもよい。アプリケーションログ230への記録は、システムログ220を更新したタイミングで行ってもよいし、脆弱性診断部150を実行する際にシステムログ220の内容を反映させるようにしてもよい。
脆弱性診断部150は、アプリケーションログ230に記憶されたアプリケーション120による不正命令の実行情報に基づいて、診断対象のファイルの脆弱性を診断する。さらに、脆弱性の診断結果を診断結果記憶部240に記憶する、
また、脆弱性診断部150には、ファイル比較部151が含まれている。ファイル比較部151は、指定されたWebサイトを構成するWebページや当該Webページから提供されるファイルに関する情報を前回診断時にファイルが取得された際の情報と比較する。これにより、Webサイトを構成するページや提供されるファイルが更新されたか否か判定することが可能となる。更新されていないページやファイルについては診断を省略して脆弱性診断に要する時間を短縮するようにしてもよい。ファイル比較部151は、サイト情報取得部130によりWebサイトの構成情報や診断対象のファイルの情報が取得される際に実行される。
診断結果出力部160は、診断結果記憶部240から脆弱性を診断した結果を取得し、出力する。診断結果は表示装置(図示せず)に表示してもよいし、メールなどによって管理者に送信するようにしてもよい。
続いて、本実施形態の脆弱性診断装置10によって脆弱性を診断するために使用されるデータ及び診断結果を格納するテーブル(データベース)について説明する。これらのデータは記憶装置14に格納される。
記憶装置14は、前述のように、各種データを記憶する記憶領域としてとして、サイト情報記憶部210、システムログ220、アプリケーションログ230及び診断結果記憶部240を提供する。以下、各情報について説明する。
サイト情報記憶部210は、脆弱性の診断対象のWebサイトに関する情報(サイト情報)が記憶される。サイト情報は、サイト情報取得部130によって収集される。サイト情報には、Webサイトの構成を示すサイトマップとWebページのサイズ及び更新日時などが含まれる。なお、Webページそのものを保持せずにURLを記憶する。さらに、各Webページから参照(提供)されるファイルのURLやサイズ、更新日時を保持する。以下、サイト情報記憶部210の一例を図2に示す。
図2は、本発明の第1実施形態のサイト情報記憶部(サイト情報テーブル)210の構成の一例を示す図である。サイト情報記憶部210は、前述のように、指定されたWebサイトの構成情報(サイトマップ)とページ(ファイル)の情報を格納する。各レコードは、脆弱性を診断する対象となるファイルに対応する。これらのファイルは、不正プログラムを実行可能なファイル(例えば、画像ファイルや文書ファイルなど)に限定してもよいし、スクリプトなどの含まれていないテキストファイルを含めるようにしてよい。テキストファイルのような不正プログラムを実行される可能性の少ないファイルについても改ざん等の可能性を判定することでWebサイトに対する不正なアクセスを判定する要素の一つとなりうる。
サイト情報記憶部210は、URL211、Page212、FileName213、FileType214a、Size214b、Update214c、Text215、Server216、AccessTime1(217)、AccessTime2(218)、Status219を含む。
URL211は、診断対象のファイル(ページ)のURLである。Page212は、診断対象のファイル(ページ)の名称である。FileName213は、診断対象のファイルのファイル名である。FileType214aは、診断対象のファイルの種類である。例えば、画像ファイルの種類(“gif”、“jpg”等)や文書ファイルの種類(“pdf”、“doc”等)が格納される。Size214bは、診断対象のファイルのファイルサイズである。Update214cは、診断対象のファイルの更新日時である。Size214b及びUpdate214cを比較することによりファイルが改ざんされた可能性を判定することができる。
Text215は、診断対象のファイル(ページ)のテキストコンテンツの内容である。Server216は、診断対象のファイル(ページ、コンテンツ)が保存されているサーバーのIPアドレスである。診断対象のファイルが外部サーバーに格納されている場合には外部サーバーのIPアドレスが格納される。
AccessTime1(217)は、診断対象のファイル(ページ、コンテンツ)にアクセスした日付及び時刻であり、診断時の日時が格納される。AccessTime2(218)は、診断対象のファイル(ページ、コンテンツ)にアクセスした日付及び時刻であり、前回診断時の日時が格納される。なお、本実施形態では、前回診断時のアクセス日時のみを保持しているが、前々回診断時のアクセス日時をさらに保持するようにしてもよいし、別テーブルに履歴情報として保持するようにしてもよい。
Status219は、診断対象のwebサイトのファイル(コンテンツ)の脆弱性診断結果を示す。設定される値は、診断結果に問題がない場合には“OK”、不正プログラムが実行される可能性が疑われる場合には“NG”となる。なお、前回診断時とファイルのサイズや更新日時が異なっており、改ざんの可能性があると判定される場合にはその他の値を設定するようにしてもよい。また、実際に格納される値は“OK”の場合は“1”、“NG”の場合は“0”、その他の場合には“2”とするようにしてもよい。
なお、サイト情報記憶部210に格納されるレコードは、指定されたWebサイトに保存されているファイルであるが、Webサイトを構成する各ページ(ファイル)から直接参照される画像ファイルや文書ファイルなどの不正プログラムを実行可能なファイルを含めてもよい。
また、本実施形態の脆弱性診断装置10は、同時に診断可能なWebサイトは単一となるが、連続して複数のWebサイトの脆弱性を診断することができる。そのため、サイト情報記憶部210には、複数Webサイトのサイト情報が格納されるため、上記した項目の他に脆弱性診断時に指定されたWebサイトのURLを保持するようにしてもよい。これにより、診断対象のWebサイトから参照されるファイルの特定を容易にし、脆弱性診断や診断結果の集計を効率化することができる。
システムログ220は、脆弱性診断装置10でプログラム(アプリケーション)が実行された際にオペレーティングシステム110によって自動的に記録される。また、システムログ220は、プログラムが正常に実行された場合以外にも、プログラムが正常に実行されなかった場合に警告情報やエラー情報なども記録される。本実施形態では、命令実行監視部140により不正な命令の生成を検知し、当該不正な命令の実行が実行前に中止された場合には、エラー情報としてシステムログ220に記録される。以下、システムログ220の一例を図3に示す。
図3は、本発明の第1実施形態のシステムログ220の構成の一例を示す図である。本実施形態のシステムログ220の各レコードは、図3に示すように、XML形式で記録され、テーブル形式に変換される。上段はXML形式で示した1レコード分のデータであり、下段はテーブル形式で示すものである。
システムログ220は、Level221、Time222、Source223、EventID224、EventData1~EventData5(225~229)を含む。
Level221は、プログラムの実行情報を示し、本実施形態では“1”~“4”の値が設定される。Level221の値が“1”の場合には、正常に実行されたことを示す。一方、エラーが発生した場合には“3”が設定される。その他、プログラムの実行によりオペレーティングシステム110が停止する可能性がある場合などには“4”、エラーとは判断できないが正常ではない可能性がある場合などに“2”が設定される。
Time222は、当該レコードが記録された日時である。Source223は、当該レコードが記録される元となったプログラム等である。EventID224は、プログラムの実行によるイベントを識別する情報である。例えば、オペレーティングシステム110の起動や停止、エラーの発生などが対応する。
EventData1~EventData5(225~229)は、当該レコードが記録される元となったプログラムに関連するデータである。具体的には、関連して実行されたプログラムの識別情報やパラメータ、参照されたデータなどである。
本実施形態の命令実行監視部140は、プログラム“SysProtect”に対応しており、不正な命令が生成され、実行が中止された場合には、EventID224は“18”が設定される。
アプリケーションログ230は、システムログ220に記憶されたログ情報のうち脆弱性の診断に必要な情報を抽出したものである。具体的には、不正な命令が生成され、中止させられたことを記録するプログラム“SysProtect”がSource223に設定されているレコードを抽出する。アプリケーションログ230の具体例については図4にて説明する。
図4は、本発明の第1実施形態のアプリケーションログ230の構成の一例を示す図である。アプリケーションログ230は、SystemTime231、Level232、Source233、EventID234、EventData1~EventData5(235~239)を含む。アプリケーションログ230のSystemTime231、Level232、Source233、EventID234、EventData1~EventData5(235~239)は、システムログ220のTime222、Level221、Source223、EventID224、EventData1~EventData5(225~229)に対応する。各項目の内容については、システムログ220の各項目と同様である。
アプリケーションの実行により生成されたプロセスにより各種命令を実行する場合、コンピュータの基本原理として、「命令の生成」「命令の実行準備」「命令の実行」といった手順に従い、その後「命令の消滅」を経て命令の実行が完了する。命令(タスク)を実行しようとすると当該プロセスの実行権限に基づいて「実行すべき命令」と「不正な命令として実行を阻止すべき命令」に判別し、「不正な命令として実行を阻止すべき命令」であった場合には、「命令の実行」の前、すなわち、「命令の実行準備」の段階で不正な命令の実行を中止させる。このとき、プログラム“SysProtect”は、不正な命令の実行が中止させられたこと(不正な命令を生成したこと、不正な命令を実行しようとしたこと)をシステムログ220(アプリケーションログ230)に記録する。
また、オペレーティングシステム110は、アプリケーション(親プロセス)から継承された実行権限(アプリケーションを実行するユーザー(利用者)の権限)に基づいて、不正命令の実行のみを阻止する。このとき、プログラム“SysProtect”は、不正な命令を実行しようとしたプロセスを記録する。これにより、システムを保護し、安全性を確保することを可能としているが、親プロセスが使用したファイルを特定できないため、不正な命令を実行させる要因となったファイルを特定するための情報が必要となる。そこで、脆弱性診断装置10は、アプリケーションログ230のEventData1~EventData5(235~239)やサイト情報記憶部210、システムログ220、その他オペレーティングシステム110が保持する情報を参照することによって、不正な命令を実行させる要因となったファイル(親プロセス)、すなわち、マルウェア等を含むファイルや当該ファイルを特定する。なお、具体的な特定方法については、図6にて後述する。
診断結果記憶部240は、サイト情報記憶部210及びアプリケーションログ230から抽出されたデータと、脆弱性の診断結果とを含む情報を格納する。診断結果記憶部240に格納されたデータは、診断結果出力部160により、加工したデータを管理端末20の画面に表示したり、当該データに基づいてレポートを作成して電子メール等により管理者に送信したりする。
図5は、本発明の第1実施形態の診断結果記憶部240の構成の一例を示す図である。診断結果記憶部240は、Probe241、Idx242、Domain243、Component244、Server245、Status246、Time1(247)、Time2(248)を含む。
Probe241は、診断対象を特定するための情報であり、例えば、診断対象のWebサイトの各ページに対応する。また、サイト情報記憶部210のURL211と対応させてもよい。診断結果記憶部240に複数のWebサイトの診断結果を格納する場合には、ページ名が別のWebサイトと重複する可能性があるため、URLとページ名を組み合わせるなどして識別用の名称を設定してもよい。
Idx242は、各レコード(診断結果)を識別するための情報である。Idx242は、診断結果記憶部240全体で一意としてもよいし、Probe241との組み合わせることで一意となるようにしてもよい。また、診断対象のWebサイト内で一意となるようにしてもよい。また、Idx242は、診断結果を表示する際の表示順序を示すようにしてもよい。
Domain243は、各レコードに対応するファイル(コンポーネント)を格納している場所を示し、当該コンポーネントを含むwebページの親となるIPアドレス(インターネット上のドメイン名を示すIPアドレス)が格納される。なお、ファイル(コンポーネント)の格納場所を特定できる情報であれば別の形式であってもよい。Component244は、コンポーネント(ファイル)の情報が格納されている場所(URL)を示しており、ファイル名を直接示すURLとなる場合もある。Server245は、ファイル(コンポーネント)が実際に格納されているサーバーのIPアドレスが格納される。
Status246は、ファイル(コンポーネント)ごとの脆弱性の診断結果が格納される。Status246は、サイト情報記憶部210のStatus219の値が格納される。Time1(247)は、ファイル(コンポーネント)にアクセスした最新の時間が格納される。Time2(248)は、前回ファイル(コンポーネント)にアクセスした時間が格納される。Time1(247)及びTime2(247)は、サイト情報記憶部210のAccessTime1(217)及びAccessTime2(218)に対応する。
以上、本実施形態の脆弱性診断装置10によって脆弱性を診断するために使用されるデータ及び診断結果を格納するテーブル(データベース)について説明した。続いて、本実施形態の脆弱性診断装置10によるWebサイトの脆弱性を診断する手順について説明する。
図6は、本発明の第1実施形態の指定されたWebサイトの脆弱性を脆弱性診断装置10によって診断する手順を説明する図である。
まず、脆弱性診断装置10は、脆弱性を診断するWebサイトの指定を受け付ける。図6に示す例では、管理端末20からURLを入力することによってWebサイトを指定する。なお、脆弱性診断装置10にあらかじめ脆弱性を診断するWebサイトの一覧を用意し、タイマ起動などによって定期的に実行するようにしてもよい。
脆弱性診断装置10は、脆弱性を診断するWebサイトの指定(URL)を受け付けると、ネットワークインターフェース12からインターネットを介して指定されたWebサイトにアクセスし、サイト情報取得部130のサイト構成情報取得部131により、Webサイトの構成情報(サイトマップ)を取得する。このとき、Webサイトを構成するファイルに関する情報も併せて取得する。
次に、脆弱性診断装置10は、脆弱性診断部150に含まれるファイル比較部151によってWebサイトを構成するファイルが更新されたか否かを判定する。サイト構成情報取得部131は、Webサイトの構成情報の他、ファイルサイズや更新日時を取得しており、サイト情報記憶部210(図2)に登録された情報と比較することによってファイルの更新を判定することができる。ファイルが更新されておらず、前回の診断結果が格納されたStatus219が“OK”の場合には、命令実行監視部140による脆弱性の診断を省略してもよい。
脆弱性診断装置10は、ファイル比較部151によってファイルを比較し、必要に応じてサイト情報記憶部210の対応するレコードを更新する。このとき、新たにWebサイトを構成するページやファイルが追加・削除された場合には対応するレコードを追加したり、削除したりする。また、指定されたWebサイトを初めて診断する場合には、サイト情報記憶部210に登録済みのデータが存在しないため、新たにレコードを作成する。
次に、脆弱性診断装置10は、ファイル取得部132によってWebサイトを構成するファイルを取得する。さらに、取得したファイルに対応するアプリケーション120を実行する。例えば、画像ファイルであれば、ペイントソフトや表示ソフトによってファイルを表示する。また、文書ファイルであれば当該ファイルを編集可能なアプリケーションによってファイルを開く。
アプリケーション120の実行により生成されたプロセスで不正な命令が生成されると、命令実行監視部140によりプロセス生成時に継承された実行権限に基づいて当該不正な命令が実行前に中止される。これにより、オペレーティングシステム110に対する想定外の影響を受けること防止することができる。このとき、不正命令実行記録部142により不正な命令の実行情報をシステムログ220(図3)に記録する。システムログ220には不正な命令が生成された場合以外の情報も記録されるため、システムログ220に記録された情報のうち不正な命令に関する情報を抽出し、アプリケーションログ230(図4)に記録する。具体的には、不正命令実行中止部141に対応するアプリケーション(“SysProtect”)がSource223に設定されているレコードを抽出する。このとき、不正な命令を生成したプロセスとアプリケーション120とを関連づける情報を付加してもよい。
本実施形態のシステムログ220は、前述したように、オペレーティングシステム110によって提供された機能であるため、アプリケーションの実行時刻(SystemTime231)などはシステムログ220にデータを登録する際に自動的に付加される。なお、オペレーティングシステム110によって提供された機能を使用しない場合には、アプリケーションログ230にデータを直接登録するようにしてもよい。
続いて、脆弱性診断装置10は、脆弱性診断部150によりWebサイトを構成する各ファイルの脆弱性を診断する。脆弱性の診断は、サイト情報記憶部210に記録されたファイルのアクセスした日時(AccessTime1(217))と、アプリケーションログ230のSystemTime231とを比較することによって特定する。また、ファイルとアプリケーションとはオペレーティングシステム110などによりあらかじめ関連付けられており、EventData1~5(235~239)に実行されたアプリケーションやファイルに関連する情報が格納されることからサイト情報記憶部210のレコードとアプリケーションログ230のレコードとの対応を特定することができる。サイト情報記憶部210のレコードとアプリケーションログ230のレコードとの対応が特定されると、これらのレコードに含まれるデータに基づいて診断結果を作成し、診断結果記憶部240(図5)に格納(登録)する。また、サイト情報記憶部210のStatus219にも診断結果を登録する。
最後に、脆弱性診断装置10は、診断結果出力部160により診断結果を出力する。診断結果の出力は、管理端末20の表示装置に出力してもよいし、レポート形式に整形して文書ファイルやグラフを作成し、メールに添付して管理者に送信するようにしてもよい。また、管理端末20等の表示装置に診断結果を出力する場合には、管理者が必要に応じて参照できるようになっている。図7に表示装置への出力例を示す。
図7は、本発明の第1実施形態の脆弱性診断装置10によってWebサイトの脆弱性を診断した結果の出力例を示す図である。図7に示す画面は、管理端末20などの表示装置に出力される。図7に示す例では、最初に、Webサイトを選択する画面が表示される。この画面では、診断対象のサイトと脆弱性が診断された日時を示すチャートが表示される。管理者は、診断結果を参照するWebサイトと診断日時を画面から選択する。
Webサイト及び診断日時が選択されると、サイトマップが表示され、ページごとのエラー件数が表示される。さらに、ページを選択すると、選択されたページに含まれるファイル(コンポーネント)ごとの詳細な脆弱性の診断結果が表示される。
以上のように、本発明の第1実施形態によれば、あらかじめ定義された情報(パターン)と比較してマルウェアなどの不正プログラムを検知するのではなく、アプリケーションやファイルの内容にかかわらず、アプリケーションを実行したユーザーの権限(オペレーティングシステム110がユーザーに与えた権限)を逸脱した命令をシステムに害を与える可能性の高い不正な命令とし、その生成を検知することによってファイル(コンポーネント)の脆弱性を診断する。これにより、未知のマルウェアが含まれるファイルを検出することが可能となり、脆弱性診断装置の定期的なメンテナンスを削減することが可能となるため、運用コストを削減することができる。
(第2実施形態)
第1実施形態では、本願発明におけるファイル(コンポーネント)の脆弱性を診断する技術をWebサイトに対する診断に適用したが、プロキシサーバーに対して適用することも可能である。具体的には、プロキシサーバーにキャッシュされているWebサイトのコンポーネントに含まれるファイルの脆弱性を診断することにより、ネットワークの安全性を高めることができる。以下、第2実施形態として、本願発明におけるファイル(コンポーネント)の脆弱性を診断する技術をプロキシサーバーに適用した例について説明する。
図8は、本発明の第2実施形態におけるファイルの脆弱性を診断する脆弱性診断装置(プロキシサーバー)1010の構成の一例を示す図である。本実施形態の脆弱性診断装置1010は、プロキシサーバーに脆弱性を診断する機能を付加したものであるが、第1実施形態の脆弱性診断装置10と共通の構成については説明を省略して同じ符号を付与し、相違する構成について説明する。
第1実施形態の脆弱性診断装置10と相違する構成としては、サイト情報取得部130の代わりにプロキシサーバー170を備える点である。また、診断対象のファイルを含むWebサイトのコンポーネント(コンテンツ)を格納するコンテンツキャッシュ部(コンテンツ記憶部)250を備えている。本実施形態では、クライアント30からインターネットを介してWebサイトにアクセスする場合に、脆弱性診断装置(プロキシサーバー)1010を経由する。脆弱性診断装置1010のプロキシサーバーとしての機能については一般的な機能と相違はないが、Webサイトのアクセス時にコンテンツキャッシュ部250に格納されたファイルの脆弱性を診断し、脆弱性が発見された場合にはアクセスを遮断する点で相違する。
プロキシサーバー170には、コンテンツ取得部171及びコンテンツ配信部172を備える。コンテンツ取得部171はクライアント30から指定されたWebサイトのURLを受け付け、インターネットを介して指定されたWebサイトからコンテンツを取得し、コンテンツキャッシュ部250に格納する。コンテンツ配信部172は、脆弱性が発見されなかったコンテンツをコンテンツキャッシュ部250から取得し、クライアント30に配信する。
記憶装置14は、記憶領域としてコンテンツキャッシュ部250を提供する。記憶装置14は、脆弱性診断装置1010に備えられるものでなくてもよく、外部のストレージ装置としてもよい。なお、本実施形態では、キャッシュされたコンテンツを管理する情報に脆弱性の診断結果を記録する項目を追加する。脆弱性が発見されたファイルそのものは保持しなくてもよいし、別の記憶領域に隔離して保持するようにしてもよい。
続いて、本実施形態の脆弱性診断装置1010によりキャッシュされたファイルの脆弱性を診断する手順について説明する。図9は本発明の第2実施の脆弱性診断装置(プロキシサーバー)によってキャッシュされたファイルの脆弱性を診断する手順を説明する図である。
まず、脆弱性診断装置(プロキシサーバー)1010は、クライアント30からアクセスするWebサイトの指定を受け付ける。コンテンツ取得部171は、指定されたWebサイトのコンテンツがコンテンツキャッシュ部250にキャッシュされているか否かを確認し、キャッシュされていればキャッシュされたコンテンツをクライアント30に配信する。一方、Webサイトのコンテンツがコンテンツキャッシュ部250にキャッシュされていなければ、Webサイトのコンテンツを取得し、コンテンツキャッシュ部250に格納する。
次に、脆弱性診断装置1010は、クライアント30に配信するコンテンツに含まれるファイルの脆弱性を診断する。脆弱性を診断する機能は、第1実施形態の脆弱性診断装置10と同様である。
脆弱性の診断が終了すると、脆弱性診断装置1010は、診断済みのファイルを含む指定されたWebサイトのコンテンツをコンテンツ配信部172によってクライアント30に配信する。脆弱性が発見されたファイルについては配信せずに警告メッセージ等を配信する。なお、明確な脆弱性が含まれていないが安全性に懸念があるファイルについては警告メッセージとともにファイルのダウンロード(表示)を確認するメッセージを送信するようにしてもよい。
脆弱性診断装置10は、診断結果出力部160により診断結果を出力する。診断結果については、脆弱性が発見された場合に管理者に随時通知するようにしてもよいし、管理者が管理端末20から適宜(定期的に)確認するようにしてもよい。
以上のように、本発明の第2実施形態の脆弱性診断装置1010では、指定されたWebサイトのコンテンツに含まれる脆弱性をリアルタイムに診断することによって、Webアクセスの遅延を抑制しながらセキュリティリスクを削減することができる。また、ファイル処理時に実行される不正な命令の生成を検知して脆弱性を診断するため、第1実施形態と同様に、未知のファイルの脆弱性を診断するため、定期的なメンテナンスを必要とせず、システムの運用効率を高めることができる。
(第3実施形態)
以上、第2実施形態として本願発明におけるファイル(コンポーネント)の脆弱性を診断する技術をプロキシサーバーに適用した例について説明したが、ここではメールサーバーに適用する例について説明する。具体的には、メールに添付されたファイルに対して脆弱性を診断することによって安全にファイルを送受信することを可能とする。以下、第3実施形態として、本願発明におけるファイル(コンポーネント)の脆弱性を診断する技術をメールサーバーに適用した例について説明する。
図10は、本発明の第3実施形態におけるメールに添付されたファイルの脆弱性を診断する脆弱性診断装置(メールサーバー)2010の構成の一例を示す図である。本実施形態の脆弱性診断装置2010は、メールサーバーに脆弱性を診断する機能を付加したものであるが、第1実施形態の脆弱性診断装置10と共通の構成については説明を省略して同じ符号を付与し、相違する構成について説明する。
第1実施形態の脆弱性診断装置10と相違する構成としては、サイト情報取得部130の代わりにメールサーバー180を備える点である。また、メールに添付されたファイルを格納する添付ファイル格納部260を備えている。本実施形態では、クライアント30に送信するメールを脆弱性診断装置(メールサーバー)2010が中継する。脆弱性診断装置2010のメールサーバーとしての機能については一般的な機能と相違はなく、メールに添付されたファイルの脆弱性を診断し、脆弱性が発見された場合にはファイルを削除して警告メッセージとともに送信する点で相違する。
メールサーバー180には、メール受信部181及びメール送信部182を備える。メール受信部181は、通常のメール受信機能に加え、受信したメールから添付ファイルを分離し、添付ファイル格納部26に格納する。メール送信部182は、脆弱性診断後のメールをクライアント30に送信する。添付ファイル格納部260は、記憶装置14によって提供された記憶領域であり、受信したメールから分離された添付ファイルを格納する。
続いて、本実施形態の脆弱性診断装置2010により受信したメールに添付されたファイルの脆弱性を診断する手順について説明する。図11は、本発明の第3実施形態の脆弱性診断装置(メールサーバー)によってメールに添付されたファイルの脆弱性を診断する手順を説明する図である。
脆弱性診断装置(メールサーバー)2010は、メール受信部181がメールを受信すると、受信したメールから添付ファイルを分離し、添付ファイル格納部260に格納する。
次に、脆弱性診断装置1010は、受信したメールから分離された添付ファイルの脆弱性を診断する。なお、脆弱性を診断する機能は、第1実施形態の脆弱性診断装置10と同様である。メールにファイルが添付されていない場合には脆弱性の診断をせずにそのままメール送信部182によってクライアント30に送信するようにしてもよい。
脆弱性の診断が終了すると、脆弱性診断装置1010は、脆弱性を診断したファイルが添付されていたメールをメール送信部182によって送信する。このとき、メール送信部182は、送信するメールのヘッダ情報に脆弱性を診断したことを示す情報と、脆弱性の診断結果を示す情報を追加し、脆弱性診断結果追加部として機能する。詳細については、図12から図14にて後述する。なお、添付ファイルに脆弱性が発見されなかった場合には、メールにファイルを再添付してもよいし、クライアント30がメールを受信した後にメールサーバー180からダウンロードするようにしてもよい。
第2実施形態と同様に、脆弱性診断装置10は、診断結果出力部160により診断結果を出力する。診断結果については、脆弱性が発見された場合に通知するようにしてもよいし、管理者が管理端末20から適宜確認するようにしてもよい。
続いて、添付ファイルの脆弱性が診断されたメールを受信した利用者が診断結果を確認するための構成について説明する。メールのヘッダ情報に追加する脆弱性の診断に関する情報について図12及び図13にて説明する。また、脆弱性の診断に関する情報がヘッダ情報に追加されたメールを受信した場合の確認手段の例について図14にて説明する。
図12は、本発明の第3実施形態の脆弱性診断装置(メールサーバー)によって脆弱性が診断されたファイルが添付されたメールの一例を示す図である。図13は、本発明の第3実施形態の脆弱性診断装置(メールサーバー)によって脆弱性が診断されたファイルが添付されたメールに追加されるヘッダ情報の一例を示す図である。
図12及び図13に示すように、本実施形態の脆弱性診断装置(メールサーバー)2010では、脆弱性を診断した場合にはヘッダ情報に“X-SysProtect-Check:Done”を追加する。ヘッダ情報“X-SysProtect-Check:Done”は、本実施形態の脆弱性診断装置2010による脆弱性の診断が実行されたか否かを判定するための識別子となる。ヘッダ情報“X-SysProtect-Check:Done”が含まれている場合には後述する診断結果を示すヘッダ情報(“X-SysProtect:OK”又は“X-SysProtect:NG”)に基づいて安全性を確認することができる。一方、ヘッダ情報“X-SysProtect-Check:Done”が含まれていない場合には脆弱性が診断されていないため、個別に安全性を確認する必要があることを認識することができる。
脆弱性診断装置(メールサーバー)2010は、添付ファイルの脆弱性を診断した場合には、診断結果を示すヘッダ情報をさらに追加する。例えば、脆弱性が発見されなかった場合には“X-SysProtect:OK”、脆弱性が発見され、異常を検出した場合には“X-SysProtect:NG”とする。
このように、メールのヘッダ情報に脆弱性の診断結果を追加することにより、クライアント30でメールを受信した際に添付されたファイルの安全性を確認することができる。例えば、ヘッダ情報に基づいて診断結果を提示する機能をメールを受信するソフトウェアに追加すればよい。機能の追加はソフトウェアのプラグイン機能などで実現するとよい。
図14は、本発明の第3実施形態の脆弱性診断装置(メールサーバー)によって脆弱性が診断されたメールから診断結果を通知する機能の一例を示す図である。(A)はメールを受信するソフトウェアの画面300、(B)~(D)は、画面下部に設けられた表示部301である。表示部301には、添付ファイルの数(サイズ)と診断結果が表示される。また、表示部301に含まれる操作部を操作することによって添付ファイルをメールサーバーから取得し、保存することができる。
(B)はメールのヘッダ情報には“X-SysProtect-Check:Done”が含まれておらず、脆弱性の診断を行っていない場合の表示であり、診断結果を示す情報は表示されていない(通常表示)。
(C)はメールのヘッダ情報には“X-SysProtect-Check:Done”が含まれており、さらに診断結果として“X-SysProtect:OK”が含まれている場合である。本実施形態では、診断結果が正常であることを示すマーク(“◎”)が表示される。
(D)はメールのヘッダ情報には“X-SysProtect-Check:Done”が含まれており、さらに診断結果として“X-SysProtect:NG”が含まれている場合である。本実施形態では、診断結果が以上であることを示すマーク(“×”)が表示される。このとき、添付ファイルを保存する操作部を無効にしてもよく、利用者が脆弱性を含むファイルを誤って保存することを防止することができる。
以上のように、本発明の第3実施形態の脆弱性診断装置1010では、受信したメールに添付されたファイルの脆弱性を診断してからクライアント30に送信するため、安全にメールの送受信を行うことができる。また、脆弱性が診断されたメールのヘッダ情報に診断結果を示す情報を追加するため、メールを受信するソフトウェアにプラグインなどによって診断結果を通知する機能を追加することによって受信者がメールの安全性を確認することができる。
以上、本発明の実施形態について説明したが、上記実施形態は本発明の適用例の一部を示したに過ぎず、本発明の技術的範囲を上記実施形態の具体的構成に限定する趣旨ではない。
例えば、脆弱性を診断する機能を有する計算機と脆弱性を診断する対象となるファイルを格納するストレージ装置を備える計算機システムを構築することによって、一般的なプロキシサーバーにキャッシュされたファイルやメールサーバーに受信されたメールの添付ファイルをストレージ装置に格納することによって脆弱性を診断する機能を独立させることができる。