(57)【特許請求の範囲】
【請求項１】
コンピュータに、
第１の診断ルールに基づく脆弱性診断を実行した際に診断対象の情報処理装置から取得された装置情報を記憶部に記憶し、
前記脆弱性診断の実行後に、前記第１の診断ルールと異なる第２の診断ルールに基づいて新たな脆弱性診断を行う場合、前記記憶部に記憶された前記装置情報に基づいて、診断対象の前記情報処理装置についての脆弱性診断を行う、
処理を実行させることを特徴とする診断プログラム。
【請求項２】
前記コンピュータに、さらに、
有効な前記装置情報が前記記憶部に記憶されていない場合、前記情報処理装置に対して前記第１の診断ルールに基づく脆弱性診断を実行し、有効な前記装置情報が前記記憶部に記憶されている場合、前記第２の診断ルールに基づく脆弱性診断を実行する、
処理を実行させることを特徴とする請求項１記載の診断プログラム。
【請求項３】
前記コンピュータに、さらに、
前記装置情報が前記記憶部に記憶されてから所定時間経過後に、前記装置情報を無効にする、
処理を実行させることを特徴とする請求項１または２記載の診断プログラム。
【請求項４】
前記コンピュータに、さらに、
前記第２の診断ルールに基づく新たな脆弱性診断を行う際に、該脆弱性診断に使用される情報が不足している場合、不足している情報のみを前記情報処理装置から取得する、
処理を実行させることを特徴とする請求項１乃至３のうち何れか１項に記載の診断プログラム。
【請求項５】
前記コンピュータに、さらに、
前記第２の診断ルールに基づく新たな脆弱性診断を行った結果に基づいて、前記情報処理装置に存在することが検出された脆弱性情報を第１のリストに記録し、
前記第２の診断ルールに基づく新たな脆弱性診断を行った結果に基づいて、前記情報処理装置に存在する可能性があることが検出された脆弱性情報を第２のリストに記録し、
前記第１のリストおよび前記第２のリストを提示する、
処理を実行させることを特徴とする請求項１乃至４のうち何れか１項に記載の診断プログラム。
【請求項６】
前記コンピュータに、
前記第２の診断ルールに基づく新たな脆弱性診断を行った結果、前記装置情報の条件を全て満たし、且つ脆弱性レベルが所定レベル以上の脆弱性情報を前記第１のリストに記録し、
前記第２の診断ルールに基づく新たな脆弱性診断を行った結果、前記装置情報の一部の条件が不足しているか、または前記脆弱性レベルが前記所定レベル未満の脆弱性情報を前記第２のリストに記録する、
処理を実行させることを特徴とする請求項５記載の診断プログラム。
【請求項７】
コンピュータが、
第１の診断ルールに基づく脆弱性診断を実行した際に診断対象の情報処理装置から取得された装置情報を記憶部に記憶し、
前記脆弱性診断の実行後に、前記第１の診断ルールと異なる第２の診断ルールに基づいて新たな脆弱性診断を行う場合、前記記憶部に記憶された前記装置情報に基づいて、診断対象の前記情報処理装置についての脆弱性診断を行う、
処理を実行することを特徴とする診断方法。
【請求項８】
第１の診断ルールに基づく脆弱性診断を実行した際に診断対象の情報処理装置から取得された装置情報を記憶する記憶部と、
前記脆弱性診断の実行後に、前記第１の診断ルールと異なる第２の診断ルールに基づいて新たな脆弱性診断を行う場合、前記記憶部に記憶された前記装置情報に基づいて、診断対象の前記情報処理装置についての脆弱性診断を行う診断部と、
を備えることを特徴とする診断装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、診断プログラム、診断方法および診断装置に関する。
【背景技術】
【０００２】
情報処理装置で動作するOperating System(OS)やミドルウェア、アプリケーションプログラム等には脆弱性が存在する場合がある。脆弱性を調査するために、例えば、シグネチャに沿った診断パケットを情報処理装置に送信し、情報処理装置からの反応に基づいて、脆弱性の診断を行う技術が用いられている。
【０００３】
関連する技術として、セキュリティを診断するエージェントにセキュリティ診断の指示を行い、エージェントから受信したセキュリティの診断データを解析する技術が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−４８５５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
診断対象の情報処理装置に対する脆弱性診断の頻度が低くなると、脆弱性診断が行われない時間が長くなるため、この時間の間に追加された脆弱性情報についての脆弱性診断が情報処理装置に対して行われない。脆弱性診断が、長い間、情報処理装置に対して行われないことは、セキュリティの観点から好ましくない。
【０００６】
一方、診断対象の情報処理装置に対する脆弱性診断の頻度が高くなると、情報処理装置に対する診断負荷が高くなる。また、診断パケットを用いた通信により脆弱性診断が行われるため、ネットワーク負荷も高くなる。
【０００７】
１つの側面として、本発明は、情報処理装置に対する脆弱性診断の負荷低減を図ることを目的とする。
【課題を解決するための手段】
【０００８】
１つの態様では、診断プログラムは、コンピュータに、第１の診断ルールに基づく脆弱性診断を実行した際に診断対象の情報処理装置から取得された装置情報を記憶部に記憶し、前記脆弱性診断の実行後に、前記第１の診断ルールと異なる第２の診断ルールに基づいて新たな脆弱性診断を行う場合、前記記憶部に記憶された前記装置情報に基づいて、診断対象の前記情報処理装置についての脆弱性診断を行う、処理を実行させる。
【発明の効果】
【０００９】
１つの側面によれば、情報処理装置に対する脆弱性診断の負荷を低減できる。
【図面の簡単な説明】
【００１０】
【図１】診断装置および診断対象端末の一例を示す図である。
【図２】脆弱性診断の第１の例におけるデータベースの一例を示す図である。
【図３】脆弱性診断の第１の例を説明するための図である。
【図４】脆弱性診断の第１の例におけるデータベースおよびリストの一例を示す図である。
【図５】脆弱性診断の第２の例におけるデータベースの一例を示す図である。
【図６】脆弱性診断の第２の例を説明するための図である。
【図７】脆弱性診断の第２の例におけるデータベースおよびリストの一例を示す図である。
【図８】脆弱性診断の第３の例におけるデータベースの一例を示す図である。
【図９】実施形態の処理の一例を示すフローチャート（その１）である。
【図１０】実施形態の処理の一例を示すフローチャート（その２）である。
【図１１】実施形態の処理の一例を示すフローチャート（その３）である。
【図１２】診断装置のハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１１】
＜実施形態の診断装置の一例＞
以下、図面を参照して、実施形態について説明する。図１は、実施形態の診断装置１および診断対象端末２の一例を示す。診断装置１は、診断対象端末２の脆弱性の診断を行うコンピュータである。診断対象端末２は、情報処理装置の一例である。
【００１２】
診断対象端末２ではＯＳが実行されており、ＯＳ上でミドルウェアが動作する。また、ミドルウェア上では、１または複数のアプリケーションプログラム（以下、アプリケーションと称する）が動作する。実施形態では、ミドルウェア上で複数のアプリケーションが動作しているものとする。
【００１３】
ＯＳ、ミドルウェアおよびアプリケーションは、Central Processing Unit(CPU)により実行されるプログラムである。これらのプログラムには、それぞれ脆弱性が存在する可能性がある。
【００１４】
セキュリティの観点から、脆弱性があるプログラムが診断対象端末２で動作することは好ましくない。診断装置１は、診断対象端末２で動作するプログラムのそれぞれについて、脆弱性が存在するか否か、または脆弱性が存在する可能性があるか否かの診断を行う。
【００１５】
以下、診断装置１が診断対象端末２に対して行う上記の診断を脆弱性診断と称する。診断装置１は、ＯＳ、ミドルウェアおよびアプリケーションのそれぞれに対して脆弱性診断を行う。
【００１６】
次に、診断装置１の各部について説明する。診断装置１は、処理部１１と通信部１２と画面部１３とスキャン情報ＤＢ１４と脆弱性情報ＤＢ１５とリスト記憶部１６とを含む。ＤＢはデータベースの略称である。スキャン情報ＤＢ１４は、記憶部の一例である。
【００１７】
処理部１１は、取得部２１と推定部２２と診断部２３とリスト処理部２４と有効期限管理部２５とを含む。
【００１８】
取得部２１は、診断対象端末２から、脆弱性診断を行うための各種の情報（以下、装置情報と称する）を取得する。取得部２１が取得した装置情報は、スキャン情報として、スキャン情報ＤＢ１４に記憶される。
【００１９】
取得部２１は、診断対象端末２またはスキャン情報ＤＢ１４から装置情報を取得する。取得部２１が診断対象端末２から装置情報を取得する場合、診断装置１と診断対象端末２との間で通信が発生する。
【００２０】
つまり、この場合、オンラインにより装置情報が取得される。以下、取得部２１が診断対象端末２から装置情報を取得することをネットワークスキャンと称する。
【００２１】
取得部２１は、スキャン情報ＤＢ１４から装置情報を取得することもある。取得部２１がスキャン情報ＤＢ１４から取得する装置情報をスキャン情報と称する。取得部２１がスキャン情報ＤＢ１４からスキャン情報を取得する場合、診断装置１と診断対象端末２との間に通信は発生しない。
【００２２】
つまり、この場合、オフラインにより、装置情報（スキャン情報）が取得される。以下、取得部２１がスキャン情報ＤＢ１４からスキャン情報を取得することをキャッシュスキャンと称する。
【００２３】
推定部２２は、装置情報（スキャン情報）に基づいて、診断対象端末２で動作しているＯＳおよびミドルウェアの種別を推定する。実施形態では、装置情報は、診断対象端末２で動作しているＯＳ、ミドルウェア、アプリケーションに関する情報を含む。
【００２４】
実施形態では、ＯＳに関する情報には、例えば、ＯＳのフィンガープリントやバナー情報（ＯＳの名称等を示す情報）等が含まれ、ミドルウェアに関する情報には、例えば、オープンポートやフィンガープリント、バナー情報等が含まれるものとする。ただし、ＯＳに関する情報およびミドルウェアに関する情報は、上記の例には限定されない。
【００２５】
推定部２２は、これらの情報に基づいて、診断対象端末２で動作しているＯＳおよびミドルウェアの種別を推定する。例えば、推定部２２は、ＯＳおよびミドルウェアの種類やバージョン等を種別として推定する。
【００２６】
診断部２３は、診断対象端末２の脆弱性診断を行う。診断部２３は、推定されたＯＳ種別やミドルウェア種別、アプリケーションが動作しているか否かの情報と、脆弱性情報ＤＢ１５に記憶されている脆弱性情報とを照合して、診断対象端末２の脆弱性診断を行う。
【００２７】
リスト処理部２４は、診断部２３による脆弱性診断の結果を示すリストに対して記録や更新等の処理を行う。実施形態では、リスト処理部２４は、脆弱性検出リストと脆弱性可能性リストとの２つのリストに対して記録や更新等の処理を行う。
【００２８】
脆弱性検出リストは、診断部２３による脆弱性診断の結果、診断対象端末２から検出された脆弱性を示すリストである。脆弱性検出リストは、第１のリストの一例である。
【００２９】
脆弱性可能性リストは、診断部２３による脆弱性診断の結果、診断対象端末２に存在する可能性がある脆弱性を示すリストである。脆弱性可能性リストは、第２のリストの一例である。
【００３０】
有効期限管理部２５は、スキャン情報ＤＢ１４に記憶されているスキャン情報の有効期限を管理する。スキャン情報には、所定の有効期限が設定されており、有効期限管理部２５は、有効期限を超過したスキャン情報を無効化する。
【００３１】
通信部１２は、診断対象端末２と通信を行う。画面部１３は、所定の情報を表示する。スキャン情報ＤＢ１４は、取得部２１が取得した装置情報をスキャン情報として記憶する。取得部２１が装置情報を取得するごとに、スキャン情報ＤＢ１４にスキャン情報が記憶される。
【００３２】
脆弱性情報ＤＢ１５は、脆弱性情報を記憶する。脆弱性情報は、ＯＳやミドルウェア、アプリケーション等に存在する脆弱性に関する情報である。新たな脆弱性情報が検出されるごとに、脆弱性情報ＤＢ１５には、脆弱性情報が記憶されていく。
【００３３】
例えば、脆弱性情報の収集を行っている不図示の装置が、新たな脆弱性情報を検出した場合、該装置から、診断装置１は新たに検出された脆弱性情報を取得してもよい。取得された新たな脆弱性情報は、脆弱性情報ＤＢ１５に記憶される。
【００３４】
＜個別要求および個別反応の一例＞
次に、個別要求および個別反応について説明する。個別要求は、アプリケーションを実行させるための命令に関する情報を含むリクエストである。個別要求は、診断対象端末２に送信される。
【００３５】
診断対象端末２で、個別要求に対応するアプリケーションが有効に動作している場合、該アプリケーションは、個別要求に基づくアプリケーションが実行されたことを示す情報を診断装置１に送信する。
【００３６】
診断対象端末２で、個別要求に対応するアプリケーションが有効に動作していない場合、該アプリケーションは、個別要求に基づくアプリケーションが実行されなかったことを示す情報を診断装置１に送信する。
【００３７】
個別要求に基づくアプリケーションが実行されたか否かを示す情報が個別反応である。この個別反応がレスポンスとして、診断対象端末２から診断装置１に送信される。個別要求は、アプリケーション以外の所定の機能を実行させるリクエストであってもよい。
【００３８】
例えば、「GET /usage/index.cgi HTTP/1.1」という命令は、個別要求の一例である。この命令のうち「index.cgi」はアプリケーションを示す。診断対象端末２で該アプリケーションが有効に動作している場合、個別要求の命令が実行される。
【００３９】
例えば、診断対象端末２で上記の個別要求に対応するアプリケーションが有効に動作している場合、該アプリケーションは、「HTTP/1.1 200 OK」という実行結果を出力する。個別反応は、この実行結果を含む。該個別反応は、診断対象端末２で個別要求に対応するアプリケーションが有効に動作していることを示す。
【００４０】
例えば、診断対象端末２で上記の個別要求に対応するアプリケーションが有効に動作していない場合、該アプリケーションは、「HTTP/1.1 404 NOT FOUND」という実行結果を出力する。個別反応は、この実行結果を含む。該個別反応は、診断対象端末２で個別要求に対応するアプリケーションが有効に動作していないことを示す。
【００４１】
従って、診断装置１は、個別反応に基づいて、個別要求に対応するアプリケーションが、診断対象端末２で有効に動作しているか否かを認識することができる。
【００４２】
＜脆弱性診断の第１の例＞
次に、脆弱性診断の第１の例について説明する。図２は、「2015/02/26」におけるスキャン情報ＤＢ１４および脆弱性情報ＤＢ１５の一例を示す。スキャン情報ＤＢ１４に記憶されるスキャン情報について説明する。
【００４３】
スキャン情報のうち、「Target IP」は、端末のInternet Protocol(IP)アドレスを示す。図２の例では、ＩＰアドレスが「10.y.y.y」および「10.z.z.z」である２つの端末のスキャン情報がスキャン情報ＤＢ１４に記憶されている。
【００４４】
「Time to Live」は、スキャン情報の有効期限を示す。この有効期限を超過したスキャン情報は、有効期限管理部２５により無効化される。無効化されたスキャン情報は、スキャン情報ＤＢ１４から削除されてもよいし、上書きがされてもよい。
【００４５】
上記の有効期限は、任意の期間に設定されてもよい。実施形態では、有効期限が１ヶ月に設定されている例について説明するが、有効期限は、１週間であってもよいし、２ヶ月であってもよい。
【００４６】
「OS Fingerprint」はＯＳのフィンガープリントを示す。「OS Barner」はＯＳのバナー情報を示す。「Mid port No.」は、ミドルウェアのオープンポートの番号を示す。「Mid Fingerprint」は、ミドルウェアのフィンガープリントを示す。「Mid Barner」は、ミドルウェアのバナー情報を示す。
【００４７】
個別反応は、上述した個別反応である。図２の例では、個別要求１に対する反応を示す個別反応１、個別要求２に対する反応を示す個別反応２および個別要求３に対する反応を示す個別反応３がスキャン情報ＤＢ１４に記憶されている。
【００４８】
次に、脆弱性情報ＤＢ１５に記憶される脆弱性情報について説明する。図２の例の場合、脆弱性情報ＤＢ１５には、脆弱性１〜脆弱性４の４つの脆弱性情報が記憶されている。脆弱性情報は、レベルと条件との項目を含む。
【００４９】
レベルは、脆弱性情報の脆弱性レベルを示す。図２において、脆弱性レベルは「高」、「中」および「低」の３段階である例を示している。脆弱性レベルの４段階以上であってもよいし、２段階であってもよい。
【００５０】
条件は、脆弱性があるＯＳ種別を特定する条件である。条件には、さらに、ミドルウェア種別を特定する条件と、個別要求に対する個別反応の条件との何れか一方または両方が含まれる場合がある。
【００５１】
脆弱性情報の条件のうち、「個別要求＝個別反応」は、個別要求に対応するアプリケーションが有効に動作していることを個別反応が示すものであるとする。
【００５２】
例えば、図２の例において、脆弱性１の脆弱性情報は、ＯＳ種別が「ＯＳ１」であり、且つミドルウェア種別が「Ｍｉｄ１」である環境には、レベルの高い脆弱性が存在することを示す。
【００５３】
脆弱性２の脆弱性情報は、ＯＳ種別が「ＯＳ２」であり、個別要求１に対する反応が個別反応１である環境（個別要求１に対応するアプリケーションが有効に動作している環境）には、レベルが「中」の脆弱性が存在することを示す。
【００５４】
例えば、脆弱性３は、ＯＳ種別が「ＯＳ３」であり、ミドルウェア種別が「Ｍｉｄ２」であり、個別要求３に対する反応が個別反応３であるアプリケーションが動作する環境には、レベルの低い脆弱性が存在することを示す。
【００５５】
図２の例では、「2015/02/26」の時点で、スキャン情報ＤＢ１４には、２つの端末２のスキャン情報が記憶され、脆弱性情報ＤＢ１５には、４つの脆弱性情報が記憶されている。
【００５６】
以下、診断装置１は、ＩＰアドレスが「10.x.x.x」である端末を脆弱性診断の対象の診断対象端末２とした場合について説明する。取得部２１は、スキャン情報ＤＢ１４に診断対象端末２（ＩＰアドレスが「10.x.x.x」）のスキャン情報が記憶されているか否かを確認する。
【００５７】
図２の例の場合、診断対象端末２のスキャン情報（装置情報）はスキャン情報ＤＢ１４に記憶されていない。この場合、取得部２１は、通信部１２を制御して、ネットワークスキャンを行う。
【００５８】
通信部１２は、装置情報を取得するリクエストを診断対象端末２に送信する。図３は、脆弱性診断の第１の例を説明するための図である。図３において、ネットワークスキャンは「ＮＷスキャン」と表記される。取得部２１は、診断対象端末２に対して、ネットワークスキャンを行う。
【００５９】
診断対象端末２のＩＰアドレスは、上述したように、「10.x.x.x」である。この診断対象端末２で動作しているＯＳ種別は「ＯＳ１」であり、ミドルウェア種別は「Ｍｉｄ１」であるとする。
【００６０】
また、取得部２１は、脆弱性情報ＤＢ１５に記憶されている各脆弱性情報に含まれる個別要求を、ネットワークスキャンのリクエストに含める。図２の例の場合、取得部２１は、個別要求１および個別要求３をネットワークスキャンのリクエストに含める。
【００６１】
例えば、個別要求１が上述した「GET /usage/index.cgi HTTP/1.1」という命令の情報であるとする。診断対象端末２で個別要求１に対応するアプリケーションが有効に動作している場合、個別反応１は、例えば、「HTTP/1.1 200 OK」という情報になる。
【００６２】
一方、診断対象端末２で個別要求１に対応するアプリケーションが有効に動作していない場合、個別反応１は、例えば、「HTTP/1.1 404 NOT FOUND」という情報になる。
【００６３】
装置情報には、ＯＳに関する情報（フィンガープリントやバナー情報等）、ミドルウェアに関する情報（オープンポートやフィンガープリント、バナー情報等）および個別反応の情報が含まれる。
【００６４】
診断対象端末２は、レスポンスとして、上記の装置情報を診断装置１に送信する。これにより、取得部２１は、装置情報を取得する。取得部２１は、取得した装置情報をスキャン情報ＤＢ１４に記憶する。
【００６５】
図４は、ＩＰアドレスが「10.x.x.x」である診断対象端末２の装置情報（スキャン情報）がスキャン情報ＤＢ１４に追加された例を示す。
【００６６】
図４の例において、個別反応１である「aaaaaaa」は、個別要求１に対応するアプリケーションが有効に動作していることを示す。同様に、個別反応３である「ccccccc」は、個別要求３に対応するアプリケーションが有効に動作していることを示す。
【００６７】
取得部２１は、スキャン情報ＤＢ１４から、診断対象端末２のスキャン情報を取得する。この取得は、スキャン情報ＤＢ１４からのスキャン情報の取得であるため、キャッシュスキャンである。
【００６８】
推定部２２は、取得部２１が取得したスキャン情報に基づいて、ＯＳ種別およびミドルウェア種別を推定する。
【００６９】
診断部２３は、脆弱性情報ＤＢ１５に記憶されている全ての脆弱性情報と、推定されたＯＳ種別、推定されたミドルウェア種別および個別反応とを照合して、診断対象端末２の脆弱性診断を行う。
【００７０】
推定されたＯＳ種別、推定されたミドルウェア種別および個別反応が、脆弱性情報ＤＢ１５に記憶されている脆弱性情報の条件と全て一致する脆弱性情報がある場合、診断部２３は、診断対象端末２に該脆弱性情報の脆弱性が存在することを検出する。
【００７１】
また、診断部２３は、上記の脆弱性情報の条件のうち、推定されたＯＳ種別およびミドルウェア種別が一致し、且つスキャン情報に個別反応が不足している場合、診断対象端末２に脆弱性が存在する可能性があることを検出する。
【００７２】
診断対象端末２に脆弱性が存在することが検出された場合、リスト処理部２４は、脆弱性が検出されたことを示す情報を脆弱性検出リストに追加する。診断対象端末２に脆弱性が存在する可能性があることが検出された場合、リスト処理部２４は、脆弱性の存在の可能性を示す情報を脆弱性可能性リストに追加する。
【００７３】
ネットワークスキャンが行われ、取得された装置情報がスキャン情報ＤＢ１４に記憶された際に、診断部２３は、その時点で脆弱性情報ＤＢ１５に記憶されている脆弱性情報に基づいて、脆弱性診断を行う。
【００７４】
この場合の脆弱性情報は、第１の診断ルールの一例である。また、実行される脆弱性診断は、第１の診断ルールに基づく脆弱性診断の一例である。
【００７５】
ネットワークスキャンを行うためのリクエストには、脆弱性情報ＤＢ１５に記憶されている全ての個別要求が含まれる。よって、診断対象端末２から取得される装置情報には、各個別要求のそれぞれに対応する個別反応が含まれる。
【００７６】
従って、スキャン情報ＤＢ１４には、診断対象端末２について、脆弱性診断の対象となる全ての個別反応が記憶されるため、スキャン情報に個別反応が不足することはない。つまり、ネットワークスキャンが行われた場合、診断部２３は、脆弱性を可能性としては検出しない。
【００７７】
このため、図４の例に示されるように、脆弱性可能リストには、脆弱性可能性情報が記録されない。一方、診断部２３が脆弱性を検出した脆弱性１については、リスト処理部２４により、脆弱性検出リストに追加される。
【００７８】
＜脆弱性診断の第２の例＞
次に、脆弱性診断の第２の例について説明する。図５は、「2015/02/27」の時点でのスキャン情報ＤＢ１４および脆弱性情報ＤＢ１５の一例を示す。スキャン情報ＤＢ１４に記憶されているスキャン情報のうち、ＩＰアドレスが「10.y.y.y」および「10.z.z.z」の端末のスキャン情報は、有効期限である「2015/02/26」を超過している。
【００７９】
このため、有効期限管理部２５は、これらのスキャン情報を無効化する。無効化されたスキャン情報に対しては、網掛けが施されている。また、「2015/02/27」の時点では、脆弱性情報ＤＢ１５に脆弱性５および脆弱性６の脆弱性情報が追加されている。
【００８０】
図６は、脆弱性診断の第２の例を説明するための図である。取得部２１は、スキャン情報ＤＢ１４に、診断対象端末２（ＩＰアドレスが「10.x.x.x」）の有効なスキャン情報が記憶されているか否かを確認する。
【００８１】
「2015/02/27」の時点で、ＩＰアドレスが「10.x.x.x」の診断対象端末２の有効なスキャン情報が記憶されている。この場合、診断部２３は、スキャン情報ＤＢ１４に記憶されている有効なスキャン情報に基づいて、診断対象端末２の脆弱性診断を行う。
【００８２】
第２の例の脆弱性診断は、上述した第１の例の脆弱性診断が実行された後に行われる。また、脆弱性診断の第２の例では、脆弱性診断の第１の例と比べて、脆弱性５および脆弱性６の脆弱性情報が脆弱性情報ＤＢ１５に追加されている。
【００８３】
このため、脆弱性診断の第２の例では、脆弱性診断の第１の例とは異なる脆弱性情報に基づいて、脆弱性診断が行われる。脆弱性診断の第２の例における脆弱性情報ＤＢ１５に記憶されている各脆弱性情報は、第２の診断ルールの一例である。
【００８４】
脆弱性診断の第２の例では、取得部２１は、ネットワークスキャンを行わず、キャッシュスキャンを行い、スキャン情報ＤＢ１４から診断対象端末２のスキャン情報を取得する。
【００８５】
推定部２２は、取得されたスキャン情報に基づいて、ＯＳ種別およびミドルウェア種別を推定する。診断部２３は、推定されたＯＳ種別や推定されたミドルウェア種別、個別反応と、脆弱性情報ＤＢ１５に記憶されている各脆弱性情報とを照合して、脆弱性診断を行う。
【００８６】
診断部２３は、脆弱性情報ＤＢ１５に記憶されている条件の個別反応が、スキャン情報ＤＢ１４に記憶されている診断対象端末２のスキャン情報に不足しているか否かを判定する。
【００８７】
図５の例の場合、脆弱性情報ＤＢ１５には、脆弱性５の条件として「個別要求５＝個別反応５」が追加されており、脆弱性６の条件として「個別要求６＝個別反応６」が追加されている。従って、診断対象端末２のスキャン情報に、個別反応５および個別反応６が不足している。
【００８８】
診断部２３は、不足している個別反応に対応する脆弱性情報の脆弱性レベルが所定レベル以上（脆弱性レベルが「高」）であるか否かを判定する。脆弱性５の脆弱性レベルは「中」であり、脆弱性６の脆弱性レベルは「高」である。
【００８９】
取得部２１は、診断対象端末２のスキャン情報に不足している個別反応のうち、脆弱性レベルが「高」である個別反応６についてのみ個別的にネットワークスキャンを行う。この個別的なネットワークスキャンを個別ネットワークスキャンと称する。
【００９０】
この場合、個別ネットワークスキャンを行うために、取得部２１は、個別要求６のリクエストを診断対象端末２に送信する。診断対象端末２は、個別要求６のリクエストに応じて、個別反応６を診断装置１に送信する。
【００９１】
個別反応６は、個別要求６に応じたアプリケーションが診断対象端末２で有効に動作していることを示している場合もあり、有効に動作していないことを示している場合もある。
【００９２】
図６の例で、「ddddddd」は、個別要求６に応じたアプリケーションが診断対象端末２で有効に動作していることを示すものとする。取得部２１は、個別反応６を取得した後、スキャン情報ＤＢ１４に記憶されている診断対象端末２のスキャン情報に個別反応６を追加する。
【００９３】
取得部２１は、スキャン情報ＤＢ１４から、図７の例に示す診断対象端末２のスキャン情報を取得する。この取得は、キャッシュスキャンである。
【００９４】
診断部２３は、脆弱性情報ＤＢ１５に記憶されている脆弱性情報のうち、推定されたＯＳ種別およびミドルウェア種別と一致し、且つ個別要求に対応する個別反応がある脆弱性情報を検出する。
【００９５】
図７の例の場合、脆弱性６の各条件は、診断対象端末２の推定されたＯＳ種別、ミドルウェア種別および個別反応と一致する。この場合、診断部２３は、診断対象端末２に脆弱性６が存在することを検出する。リスト処理部２４は、脆弱性検出リストに脆弱性６を追加する。
【００９６】
一方、脆弱性５の脆弱性レベルは「中」であり、「高」ではない。この場合、取得部２１は、脆弱性５の個別要求５についての個別ネットワークスキャンは行わない。従って、スキャン情報ＤＢ１４に記憶されている診断対象端末２のスキャン情報には、個別反応５は含まれていない。
【００９７】
この場合、脆弱性５の各条件のうち、診断対象端末２の推定されたＯＳ種別およびミドルウェア種別は一致するが、スキャン情報に個別情報５が不足している。従って、診断部２３は、診断対象端末２に脆弱性５の存在の可能性があることを検出する。リスト処理部２４は、脆弱性可能性リストに脆弱性５を追加する。
【００９８】
脆弱性診断の第２の例の場合、診断装置１は、診断対象端末２に対して、スキャン情報に不足している個別要求に応じた個別反応のみを取得する個別ネットワークスキャンを行う。一方、ネットワークスキャンの場合、診断装置１は、診断対象端末２から装置情報を取得する。
【００９９】
装置情報は、ＯＳに関する情報やミドルウェアに関する情報、複数のアプリケーションについての個別要求に対する個別反応を含む。従って、個別ネットワークスキャンは、ネットワークスキャンよりも、診断対象端末２およびネットワークに対する負荷が低くなる。
【０１００】
このため、診断対象端末２やネットワークに対する負荷が高くなることを抑制しつつ、高い頻度で診断対象端末２の脆弱性診断を行うことができる。従って、効率的な脆弱性診断が実現される。
【０１０１】
脆弱性診断の第２の例では、スキャン情報ＤＢ１４に記憶されたスキャン情報を利用して、脆弱性診断を行うための情報が不足している場合には、個別ネットワークスキャンを行い、不足している情報を取得する。
【０１０２】
例えば、図７の例において、脆弱性６の脆弱性レベルが「中」である場合、取得部２１は、個別ネットワークスキャンを行わない。この場合、診断装置１と診断対象端末２との間に通信は発生せず、診断対象端末２やネットワークに対する脆弱性診断のための負荷は発生しない。
【０１０３】
つまり、診断装置１は、オフラインで診断対象端末２の脆弱性診断を行うことができる。このため、高い頻度で脆弱性診断が行われたとしても、診断対象端末２やネットワークに対する負荷が高くなることはない。
【０１０４】
ただし、脆弱性レベルが「高」の場合、診断装置１は、迅速に診断対象端末２の最新の情報を取得することが好ましい。従って、この場合、個別ネットワークスキャンが実施される。
【０１０５】
なお、診断対象端末２を再現するシステムを用意し、該システムに対して、診断装置１が脆弱性診断を行うことで、診断対象端末２に対する負荷を抑制することが考えられる。ただし、この場合、診断対象端末２と同様のシステムを用意する必要があり、ハードウェア資源の増大を将来する。
【０１０６】
また、診断対象端末２を再現するシステムを用意することは難しく、該システムと診断対象端末２との間に差分が生じ、該差分により、脆弱性診断の診断精度が低下する。このため、実際の診断対象端末２に対して脆弱性診断が行われることが好ましい。
【０１０７】
＜脆弱性診断の第３の例＞
図８は、脆弱診断の第３の例におけるスキャン情報ＤＢ１４および脆弱性情報ＤＢ１５の一例を示す。図８の例に示すスキャン情報ＤＢ１４および脆弱性情報ＤＢ１５は、「2015/03/27」の時点での情報を示す。
【０１０８】
「2015/03/27」の時点では、スキャン情報ＤＢ１４に記憶されている診断対象端末２（ＩＰアドレス「10.x.x.x」）のスキャン情報は有効期限を超過している。有効期限管理部２５は、スキャン情報ＤＢ１４の上記のスキャン情報を無効化する。
【０１０９】
取得部２１は、診断対象端末２の有効なスキャン情報がスキャン情報ＤＢ１４に記憶されているか否かを確認する。診断対象端末２の有効なスキャン情報がスキャン情報ＤＢ１４に記憶されていないため、取得部２１は、診断対象端末２に対して、ネットワークスキャンを行う。
【０１１０】
ネットワークスキャンが行われると、診断装置１は、診断対象端末２から、脆弱性診断の対象となる全ての個別要求に対する個別反応を取得する。このため、スキャン情報ＤＢ１４には、全ての個別反応が記憶されるため、診断部２３は、スキャン情報に個別反応が不足していると判定することはない。
【０１１１】
このため、リスト処理部２４は、脆弱性レベルにかかわらず、診断対象端末２の推定されたＯＳ種別およびミドルウェア種別と同一の脆弱性情報を脆弱性検出リストに追加する。一方、スキャン情報に個別反応がないと判定されないため、リスト処理部２４は、脆弱性可能性リストに脆弱性情報を記録しない。
【０１１２】
＜実施形態の処理の流れを示すフローチャートの一例＞
次に、実施形態の処理の一例について、フローチャートを参照して説明する。取得部２１は、スキャン情報ＤＢ１４に、診断対象端末２の有効なスキャン情報が記憶されているかを確認する（ステップＳ１）。
【０１１３】
スキャン情報ＤＢ１４に、診断対象端末２の有効なスキャン情報が記憶されていない場合（ステップＳ２でＮＯ）、取得部２１は、ネットワークキャンを実施する（ステップＳ３）。これにより、取得部２１は、診断対象端末２から装置情報を取得する。
【０１１４】
取得部２１は、取得した装置情報をスキャン情報としてスキャン情報ＤＢ１４に記憶する（ステップＳ４）。ステップＳ２でＹＥＳの場合、ステップＳ３およびステップＳ４の処理は行われない。つまり、スキャン情報ＤＢ１４に、診断対象端末２の有効なスキャン情報が記憶されている場合、ネットワークスキャンは実施されない。
【０１１５】
取得部２１は、診断対象端末２のスキャン情報をスキャン情報ＤＢ１４から取得するキャッシュスキャンを実施する（ステップＳ５）。推定部２２は、取得されたスキャン情報に基づいて、診断対象端末２のＯＳ種別およびミドルウェア種別を推定する（ステップＳ６）。
【０１１６】
診断部２３は、推定されたＯＳ種別、推定されたミドルウェア種別および個別反応と、脆弱性情報ＤＢ１５に記憶されている各脆弱性情報の条件と照合する（ステップＳ７）。そして、処理は「Ａ」に進む。「Ａ」以降の処理について、図１０の例を参照して説明する。
【０１１７】
診断部２３は、脆弱性情報ＤＢ１５に記憶されている各脆弱性情報の条件のうち、ＯＳ種別およびミドルウェア種別が一致し、個別反応が不足している脆弱性情報があるか否かを判定する（ステップＳ８）。
【０１１８】
ＯＳ種別およびミドルウェア種別が一致し、個別反応が不足している脆弱性情報がある場合（ステップＳ８でＹＥＳ）、診断部２３は、その脆弱性情報の脆弱性レベルが「高」であるか否かを判定する（ステップＳ９）。
【０１１９】
判定対象の脆弱性情報の脆弱性レベルが「高」である場合（ステップＳ１０でＹＥＳ）、取得部２１は、不足している個別反応に対応する個別要求を取得する個別ネットワークスキャンを実施する（ステップＳ１０）。
【０１２０】
取得部２１は、診断対象端末２から、個別要求に対応する個別反応の情報を取得する。そして、取得部２１は、取得された個別反応の情報をスキャン情報ＤＢ１４に記憶する（ステップＳ１１）。この際、取得部２１は、スキャン情報ＤＢ１４に記憶されているスキャン情報のうち、診断対象端末２のスキャン情報に、取得された個別反応の情報を追加する。
【０１２１】
ステップＳ８でＮＯの場合およびステップＳ９でＮＯの場合、ステップＳ１０およびステップＳ１１の処理は行われない。この場合、取得部２１は、診断対象端末２に対して個別ネットワークスキャンを行わない。
【０１２２】
診断部２３は、脆弱性情報ＤＢ１５に記憶されている各脆弱性情報と、診断対象端末２のＯＳ種別、ミドルウェア種別および個別反応とに基づいて、診断対象装置２の脆弱性診断を行う（ステップＳ１２）。
【０１２３】
診断部２３は、脆弱性情報ＤＢ１５に記憶されている各脆弱性情報のうち、診断対象端末２のＯＳ種別、ミドルウェア種別および個別反応の全ての条件に一致する脆弱性情報があるか否かを判定する。
【０１２４】
上記の脆弱性情報がある場合、リスト処理部２４は、該脆弱性情報をリスト記憶部１６に記憶されている脆弱性検出リストに記録する（ステップＳ１３）。
【０１２５】
診断部２３は、脆弱性情報ＤＢ１５に記憶されている各脆弱性情報の条件のうち、診断対象端末２のＯＳ種別およびミドルウェア種別と一致し、スキャン情報に個別反応が不足している脆弱性情報があるか否かを判定する。
【０１２６】
上記の脆弱性情報がある場合、リスト処理部２４は、該脆弱性情報をリスト記憶部１６に記憶されている脆弱性可能性リストに記録する（ステップＳ１４）。
【０１２７】
処理部１１は、リスト記憶部１６に記憶されている脆弱性検出リストおよび脆弱性可能性リストを提示する（ステップＳ１５）。例えば、処理部１１は、脆弱性検出リストおよび脆弱性リストを画面部１３に表示することで、提示を行ってもよい。
【０１２８】
また、処理部１１は、脆弱性検出リストおよび脆弱性リストを、例えばプリンタ等に印刷することで、定時を行ってもよい。これにより、例えば、診断装置１を操作する操作者（例えば、保守担当員）に対して、診断対象端末２に脆弱性が検出されたことだけでなく、脆弱性の可能性があることを提示することもできる。
【０１２９】
次に、有効期限管理部２５の処理の一例について、図１１のフローチャートを参照して説明する。有効期限管理部２５は、スキャン情報ＤＢ１４に記憶されているスキャン情報のうち、有効期限を超過しているスキャン情報があるかを検索する（ステップＳ２１）。
【０１３０】
検索の結果、有効期限を超過しているスキャン情報が見つかった場合（ステップＳ２２でＹＥＳ）、有効期限管理部２５は、有効期限を超過しているスキャン情報を無効化する（ステップＳ２３）。検索の結果、有効期限を超過しているスキャン情報が見つからなかった場合（ステップＳ２２でＮＯ）、ステップＳ２３の処理は行われない。
【０１３１】
＜診断装置のハードウェア構成の一例＞
次に、図１２の例を参照して、診断装置１のハードウェア構成の一例を説明する。図１２の例に示すように、バス１００に対して、プロセッサ１１１とＲＡＭ１１２とＲＯＭ１１３と補助記憶装置１１４と媒体接続部１１５と通信インタフェース１１６と入出力インタフェース１１７とが接続されている。図１２において、インタフェースは「ＩＦ」と略して示されている。
【０１３２】
プロセッサ１１１は任意の処理回路である。プロセッサ１１１はＲＡＭ１１２に展開されたプログラムを実行する。実行されるプログラムとしては、実施形態の処理を行う診断プログラムが適用されてもよい。ＲＯＭ１１３はＲＡＭ１１２に展開されるプログラムを記憶する不揮発性の記憶装置である。
【０１３３】
補助記憶装置１１４は、種々の情報を記憶する記憶装置であり、例えばハードディスクドライブや半導体メモリ等を補助記憶装置１１４に適用してもよい。媒体接続部１１５は、可搬型記録媒体１１９と接続可能に設けられている。
【０１３４】
可搬型記録媒体１１９としては、可搬型のメモリや光学式ディスク（例えば、Compact Disc(CD)やDigital Versatile Disc(DVD)等）を適用してもよい。この可搬型記録媒体１１９に実施形態の処理を行うプログラムが記録されていてもよい。
【０１３５】
入出力インタフェース１１７は、外部の装置と接続するインタフェースである。外部の装置としては、例えば、ディスプレイ１１７Ａやプリンタ１１７Ｂ等が適用されてもよい。
【０１３６】
診断装置１のうち、処理部１１は、与えられた診断プログラムをプロセッサ１１１が実行することにより実現されてもよい。通信部１２には、通信インタフェース１１６が適用されてもよい。
【０１３７】
画面部１３には、ディスプレイ１１７Ａが適用されてもよい。スキャン情報ＤＢ１４、脆弱性情報ＤＢおよびリスト記憶部１６には、ＲＡＭ１１２や補助記憶装置１１４等が適用されてもよい。
【０１３８】
ＲＡＭ１１２、ＲＯＭ１１３、補助記憶装置１１４および可搬型記録媒体１１９は、何れもコンピュータ読み取り可能な有形の記憶媒体の一例である。これらの有形な記憶媒体は、信号搬送波のような一時的な媒体ではない。
【０１３９】
＜その他＞
本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
【符号の説明】
【０１４０】
１    診断装置
２    診断対象端末
１１    処理部
１２    通信部
１３    画面部
１４    スキャン情報ＤＢ
１５    脆弱性情報ＤＢ
１６    リスト記憶部
２１    処理部
２２    推定部
２３    診断部
２４    リスト処理部
２５    有効期限管理部
１１１    プロセッサ
１１２    ＲＡＭ
１１３    ＲＯＭ
【図１】
0006531601.tif 000002
【図２】
0006531601.tif 000003
【図３】
0006531601.tif 000004
【図４】
0006531601.tif 000005
【図５】
0006531601.tif 000006
【図６】
0006531601.tif 000007
【図７】
0006531601.tif 000008
【図８】
0006531601.tif 000009
【図９】
0006531601.tif 000010
【図１０】
0006531601.tif 000011
【図１１】
0006531601.tif 000012
【図１２】
0006531601.tif 000013