【文献】
田島浩一他,脆弱性診断ツールの連携動作によるセキュリティ診断システムの構築,マルチメディア,分散,協調とモバイル(DICOMO2013)シンポジウム論文集 情報処理学会シンポジウムシリーズ Vol.2013 No.2 [CD−ROM],日本,一般社団法人情報処理学会,2013年 7月10日,第2013巻,第2号,p.749-p.754
(58)【調査した分野】(Int.Cl.,DB名)
前記第1統合部は、前記第1共通情報群に対応する共通識別子に対応付けられた共通説明が前記脆弱性管理テーブルに登録されていない場合、前記第1共通情報群に対応する共通識別子に対応付けて前記脆弱性管理テーブルに共通説明を登録し、登録された共通説明を前記統合結果に加える
請求項1に記載の診断結果統合装置。
前記第1統合部は、少なくともいずれかの診断ツールを除いて残りの診断ツールで共通して検出された脆弱性の共通識別子に対応する1つ以上の第1種類情報を第1部分情報群として選択し、
前記診断結果統合装置は、
第1部分情報群の集合から再診断の対象とならない脆弱性に対応する第1部分情報群である第1統合対象群を選択し、前記第1統合対象群に対応する共通識別子に対応付けられた共通説明を前記脆弱性管理テーブルから取得し、取得された共通説明を前記統合結果に加える部分統合部
を備える請求項1に記載の診断結果統合装置。
前記部分統合部は、第1部分情報群の集合から再診断の対象となる脆弱性に対応する第1部分情報群である第1再診断対象群を選択し、前記第1再診断対象群のそれぞれの脆弱性情報に含まれる個別識別子を再診断リストに登録する
請求項3から請求項6のいずれか1項に記載の診断結果統合装置。
前記第2種類情報の集合から前記複数の診断ツールで共通して検出された脆弱性に対応する複数の第2種類情報を第2共通情報群として選択し、前記第2共通情報群に含まれる個別識別子に対応付けられた共通説明を前記脆弱性管理テーブルから取得し、取得された共通説明を前記統合結果に加える第2統合部
を備える請求項1に記載の診断結果統合装置。
前記第2統合部は、前記第2共通情報群に対応する共通識別子に対応付けられた共通説明が前記脆弱性管理テーブルに登録されていない場合、前記第2共通情報群に対応する共通識別子に対応付けて前記脆弱性管理テーブルに共通説明を登録し、登録された共通説明を前記統合結果に加える
請求項9に記載の診断結果統合装置。
前記第2統合部は、少なくともいずれかの診断ツールを除いて残りの診断ツールで共通して検出された脆弱性に対応する1つ以上の第2種類情報を第2部分情報群として選択し、
前記診断結果統合装置は、
第2部分情報群の集合から再診断の対象とならない脆弱性に対応する第2部分情報群である第2統合対象群を選択し、前記第2統合対象群に含まれる個別識別子に対応付けられた共通説明を前記脆弱性管理テーブルから取得し、取得された共通説明を前記統合結果に加える部分統合部
を備える請求項9に記載の診断結果統合装置。
前記部分統合部は、第2部分情報群の集合から再診断の対象となる脆弱性に対応する第2部分情報群である第2再診断対象群を選択し、前記第2再診断対象群のそれぞれの脆弱性情報に含まれる個別識別子を再診断リストに登録する
請求項13に記載の診断結果統合装置。
【発明を実施するための形態】
【0010】
実施の形態1.
対象システム210のセキュリティを診断する診断システム200について、
図1から
図17に基づいて説明する。
【0011】
***構成の説明***
図1に基づいて、診断システム200の構成を説明する。
診断システム200は、対象システム210と診断装置220と診断結果統合装置100と複数のツールベンダサーバ230と複数の外郭団体サーバ240とを備える。これらはネットワークを介して通信を行う。具体的なネットワークはインターネットである。
【0012】
対象システム210は、診断される対象となるシステムである。システムは、1台以上のコンピュータを備える。システムに備わるコンピュータをホストという。具体的な対象システム210は業務システムである。
【0013】
診断装置220は、対象システム210を診断するコンピュータである。
診断装置220は、異なるツールベンダによって作られた複数の診断ツール221を備える。
診断ツール221は、セキュリティの診断を行うための診断処理をコンピュータに実行させるためのプログラムである。
診断装置220は、それぞれの診断ツール221を実行して、対象システム210を診断する。これにより、診断ツール221毎の診断結果が得られる。
診断結果は、対象システム210を診断して検出された脆弱性毎の脆弱性情報を含んだデータである。
脆弱性情報は、脆弱性に関する情報である。
脆弱性とは、セキュリティの欠陥である。
【0014】
診断結果統合装置100は、診断ツール221毎の診断結果を統合して統合結果を生成する。
【0015】
複数のツールベンダサーバ230のそれぞれは、ツールベンダ毎のサーバ装置である。
ツールベンダサーバ230は、対応状況データを提供する。
対応状況データは、脆弱性毎に診断ツール221の対応状況を示すデータである。
【0016】
複数の外郭団体サーバ240のそれぞれは、外郭団体毎のサーバ装置である。具体的な外郭団体は、JPCERTおよびIPA等である。JPCERTはJapan Computer Emergency Response Teamの略称であり、IPAはInformation−technology Promotion Agencyの略称である。
外郭団体サーバ240は、脆弱性データを提供する。
脆弱性データは、脆弱性に関する情報を示すデータである。
【0017】
図2に基づいて、診断結果統合装置100の構成を説明する。
診断結果統合装置100は、プロセッサ901とメモリ902と補助記憶装置903と通信装置904と入力装置907とディスプレイ908といったハードウェアを備えるコンピュータである。プロセッサ901は、信号線を介して他のハードウェアと接続されている。
【0018】
プロセッサ901は、プロセッシングを行うIC(Integrated Circuit)であり、他のハードウェアを制御する。具体的には、プロセッサ901は、CPU、DSPまたはGPUである。CPUはCentral Processing Unitの略称であり、DSPはDigital Signal Processorの略称であり、GPUはGraphics Processing Unitの略称である。
メモリ902は揮発性の記憶装置である。メモリ902は、主記憶装置またはメインメモリとも呼ばれる。具体的には、メモリ902はRAM(Random Access Memory)である。
補助記憶装置903は不揮発性の記憶装置である。具体的には、補助記憶装置903は、ROM、HDDまたはフラッシュメモリである。ROMはRead Only Memoryの略称であり、HDDはHard Disk Driveの略称である。
通信装置904は、通信を行う装置であり、レシーバとトランスミッタとを備える。具体的には、通信装置904は通信チップまたはNIC(Network Interface Card)である。
入力装置907は、入力を受け付ける装置である。具体的には、入力装置907は、キーボード、マウス、テンキーまたはタッチパネルである。
ディスプレイ908は、画像等を表示する表示装置である。具体的には、ディスプレイ908は液晶ディスプレイである。ディスプレイ908はモニタともいう。
【0019】
診断結果統合装置100は、情報分類部110と第1統合部120と第2統合部130と部分統合部140と再診断制御部150とテーブル更新部160といった「部」を機能構成の要素として備える。「部」の機能はソフトウェアで実現される。「部」の機能については後述する。
【0020】
補助記憶装置903には、「部」の機能を実現するプログラムが記憶されている。「部」の機能を実現するプログラムは、メモリ902にロードされて、プロセッサ901によって実行される。
さらに、補助記憶装置903にはOS(Operating System)が記憶されている。OSの少なくとも一部は、メモリ902にロードされて、プロセッサ901によって実行される。
つまり、プロセッサ901は、OSを実行しながら、「部」の機能を実現するプログラムを実行する。
「部」の機能を実現するプログラムを実行して得られるデータは、メモリ902、補助記憶装置903、プロセッサ901内のレジスタまたはプロセッサ901内のキャッシュメモリといった記憶装置に記憶される。
なお、診断結果統合装置100が複数のプロセッサ901を備えて、複数のプロセッサ901が「部」の機能を実現するプログラムを連携して実行してもよい。
【0021】
メモリ902は、診断結果統合装置100で使用、生成、入出力または送受信されるデータが記憶される記憶部191として機能する。但し、メモリ902以外の記憶装置が記憶部191として機能してもよい。
【0022】
通信装置904はデータを通信する通信部として機能する。通信装置904において、レシーバはデータを受信する受信部193として機能し、トランスミッタはデータを送信する送信部194として機能する。
入力装置907は入力を受け付ける受付部195として機能する。
ディスプレイ908は画像等を表示する表示部196として機能する。
【0023】
プロセッサ901とメモリ902と補助記憶装置903とをまとめたハードウェアを「プロセッシングサーキットリ」という。
「部」は「処理」または「工程」に読み替えてもよい。「部」の機能はファームウェアで実現してもよい。
「部」の機能を実現するプログラムは、磁気ディスク、光ディスクまたはフラッシュメモリ等の不揮発性の記憶媒体に記憶することができる。
【0024】
***動作の説明***
診断結果統合装置100の動作は診断結果統合方法に相当する。また、診断結果統合方法の手順は診断結果統合プログラムの手順に相当する。
【0025】
図3に基づいて、診断結果統合方法を説明する。
ステップS100は情報分類処理である。
ステップS100において、情報分類部110は、診断ツール221毎の診断結果310に含まれる脆弱性情報311を、脆弱性管理テーブル320を用いて、第1種類情報と第2種類情報とに分類する。
【0026】
図4に基づいて、診断結果310を説明する。
診断結果310は、診断日時、ホスト数、リビジョン、バージョンおよび脆弱性毎の脆弱性情報311などを含む。
診断日時は、診断が開始された時刻である。
ホスト数は、診断されたホストの数である。
リビジョンおよびバージョンは、診断ツール221の版を示す。
【0027】
脆弱性情報311は、個別識別子、個別説明、アドレス、ポート番号、OS情報、ホスト名および深刻度などを含む。
個別識別子は、脆弱性を識別するために診断ツール221で使用される識別子である。
個別説明は、脆弱性を説明するために診断ツール221で使用される説明である。具体的には、個別説明は文字列である。
アドレスは、ホストのアドレスである。具体的なアドレスは、IP(Internet Protocol)アドレスである。
ポート番号は、ホストのポートを識別する。
OS情報は、OS(Operating System)を特定する情報である。具体的なOS情報は、OS名およびバージョンである。
深刻度は、脆弱性に伴う深刻の度合いを示す。
【0028】
図5に基づいて、脆弱性管理テーブル320を説明する。
脆弱性管理テーブル320は、脆弱性を管理するためのデータである。
脆弱性管理テーブル320は、脆弱性毎のレコードを備える。図中の1行がレコードに相当する。
それぞれのレコードにおいて、分類と脆弱性識別子と共通識別子と共通説明と診断ツール221毎の個別識別子とが互いに対応付けられている。
分類は、共通識別子の有無を示す。
脆弱性識別子は、脆弱性を識別するために診断結果統合装置100で使用される識別子である。
共通識別子は、脆弱性を識別する識別子である。具体的な共通識別子は、CVE番号またはBID番号などである。CVEはCommon Vulnerabilities and Exposuresの略称であり、BIDはBugtraq Identifierの略称である。
共通説明は、脆弱性の内容を示すために診断結果統合装置100で使用される説明である。言い換えると、共通説明は、正規化して統一された説明である。具体的には、共通説明は文字列である。文字列は、日本語、英語または他の言語で記される。
個別識別子の欄に記載の「Tx」は、診断ツール221のツール識別子である。
【0029】
図3に戻り、ステップS100の説明を続ける。
第1種類情報は、共通識別子に対応付けられた個別識別子を含んだ脆弱性情報311である。
第2種類情報は、共通識別子に対応付けられていない個別識別子を含んだ脆弱性情報311である。
【0030】
図6に基づいて、情報分類処理(S100)の詳細を説明する。
ステップS110において、受信部193は、診断装置220から、診断ツール221毎の診断結果310を受信する。
記憶部191は、診断ツール221毎の診断結果310を記憶する。具体的には、記憶部191は、診断ツール221を識別するツール識別子に対応付けて診断結果310を記憶する。これにより、診断結果310に含まれる脆弱性情報311は、ツール識別子に対応付けて管理される。
【0031】
ステップS120において、情報分類部110は、診断結果310毎に、診断結果310から脆弱性情報311を抽出する。
【0032】
ステップS130において、情報分類部110は、診断結果310毎に、それぞれの脆弱性情報311を第1種類情報と第2種類情報とに分類する。
【0033】
具体的には、情報分類部110は、脆弱性情報311を以下のように分類する。
まず、情報分類部110は、脆弱性情報311から個別識別子を取得する。
次に、情報分類部110は、取得された個別識別子と同じ個別識別子を脆弱性管理テーブル320から選択する。
次に、情報分類部110は、選択された個別識別子に対応付けられた共通識別子が脆弱性管理テーブル320に登録されているか判定する。また、情報分類部110は、選択された個別識別子に対応付けられた脆弱性識別子を脆弱性管理テーブル320から取得する。
当該共通識別子が登録されている場合、情報分類部110は、脆弱性識別子に対応付けて脆弱性情報311を第1種類情報として記憶部191に記憶する。
当該共通識別子が登録されていない場合、情報分類部110は、脆弱性識別子に対応付けて脆弱性情報311を第2種類情報として記憶部191に記憶する。
【0034】
図3に戻り、ステップS200から説明を続ける。
ステップS200は第1統合処理である。
ステップS200において、第1統合部120は、第1種類情報の集合から第1共通情報群を選択し、第1共通情報群に対応する共通識別子に対応付けられた共通説明を脆弱性管理テーブル320から取得する。そして、第1統合部120は、取得された共通説明を統合結果330に加える。
第1共通情報群は、複数の診断ツール221で共通して検出された脆弱性の共通識別子に対応する複数の第1種類情報である。
【0035】
第1共通情報群に対応する共通識別子に対応付けられた共通説明が脆弱性管理テーブル320に登録されていない場合、第1統合部120は、第1共通情報群に対応する共通識別子に対応付けて脆弱性管理テーブル320に共通説明を登録する。そして、第1統合部120は、登録された共通説明を統合結果330に加える。
【0036】
図7に基づいて、統合結果330を説明する。
統合結果330は、診断ツール221毎の診断結果310を統合して得られるデータである。
統合結果330は、脆弱性毎の結果データを含む。図中の1行が結果データに相当する。
結果データにおいて、脆弱性識別子と共通説明と共通識別子と脆弱性情報とが互いに対応付けられている。脆弱性情報は、アドレス、ポート番号、OS情報およびツール識別子などを含む。
【0037】
図3に戻り、ステップS200の説明を続ける。
第1統合部120は、第1種類情報の集合から第1部分情報群を選択する。
第1部分情報群は、少なくともいずれかの診断ツール221を除いて残りの診断ツール221で共通して検出された脆弱性の共通識別子に対応する1つ以上の第1種類情報である。
【0038】
図8に基づいて、第1統合処理(S200)の詳細を説明する。
ステップS210において、第1統合部120は、それぞれの第1種類情報に対応付けられた脆弱性識別子に基づいて、第1種類情報の集合を組み分けする。
つまり、第1統合部120は、第1種類情報の集合を脆弱性識別子別に組み分けする。
同じ組に属する第1種類情報は、同じ脆弱性識別子に対応付けられている。
【0039】
ステップS221において、第1統合部120は、第1種類情報の未選択の組を1つ選択する。
【0040】
ステップS222からステップS225は、選択された組を対象にして実行される。
【0041】
ステップS222において、第1統合部120は、第1種類情報の組が第1共通情報群であるか判定する。
具体的には、第1統合部120は、それぞれの第1種類情報に対応付けられたツール識別子を参照し、全ての診断ツール221のツール識別子が第1種類情報の組に対応付けられているか判定する。全ての診断ツール221のツール識別子が第1種類情報の組に対応付けられている場合、第1統合部120は、第1種類情報の組が第1共通情報群であると判定する。
第1種類情報の組が第1共通情報群である場合、処理はステップS223に進む。
第1種類情報の組が第1共通情報群でない場合、処理は部分統合処理(S500)に進み、部分統合処理(S500)の後、処理はステップS226に進む。部分統合処理(S500)については後述する。なお、第1共通情報群でない第1種類情報の組を第1部分情報群という。
【0042】
ステップS223において、第1統合部120は、第1種類情報の組に対応する共通説明が脆弱性管理テーブル320に登録されているか判定する。
具体的には、第1統合部120は、第1種類情報の組に対応付けられている脆弱性識別子と同じ脆弱性識別子を脆弱性管理テーブル320から選択する。そして、第1統合部120は、選択された脆弱識別子に対応付けられた共通説明が脆弱性管理テーブル320に登録されているか判定する。
第1種類情報の組に対応する共通説明が脆弱性管理テーブル320に登録されている場合、処理はステップS225に進む。
第1種類情報の組に対応する共通説明が脆弱性管理テーブル320に登録されていない場合、処理はステップS224に進む。
【0043】
ステップS224において、第1統合部120は、第1種類情報の組に対応する共通説明を脆弱性管理テーブル320に登録する。
【0044】
具体的には、第1統合部120は、当該共通説明を以下のように登録する。
まず、第1統合部120は、それぞれの第1種類情報から個別説明を抽出する。
次に、第1統合部120は、抽出された個別説明を含んだ説明登録画面340を生成する。
次に、表示部196は、説明登録画面340を表示する。説明登録画面340には、共通説明が入力される。
次に、受付部195は、入力された共通説明を受け付ける。
そして、第1統合部120は、第1種類情報の組に対応付けられている脆弱性識別子と同じ脆弱性識別子を脆弱性管理テーブル320から選択し、選択された脆弱識別子に対応付けて脆弱性管理テーブル320に共通説明を登録する。
【0045】
図9に基づいて、説明登録画面340を説明する。
説明登録画面340は、第1種類情報から抽出された個別説明341と、個別説明341に対応付けられたラジオボタン342と、第1種類情報に対応付けられたツール識別子343とを含む。
さらに、説明登録画面340は、共通説明が記載されるテキストボックス344と、共通説明を登録するための登録ボタン345とを備える。
【0046】
第1統合部120は、それぞれの個別説明341に共通する単語を抽出する。そして、表示部196は、抽出された単語を強調して表示する。具体的な強調方法は、下線の付加またはフォントの色の変更などである。
利用者は、それぞれの個別説明341を参照する。そして、利用者は、入力装置907を操作して、いずれかのラジオボタン342を選択する。
表示部196は、選択されたラジオボタン342に対応する個別説明341をテキストボックス344に記載する。
利用者は、入力装置907を操作して、テキストボックス344に記載された個別説明341を編集する。編集後、利用者は、入力装置907を操作して、登録ボタン345を押す。
登録ボタン345が押された場合、受付部195は、テキストボックス344に記載されている文字列を共通説明として受け付ける。そして、第1統合部120は、受け付けられた共通説明を登録する。
【0047】
図8に戻り、ステップS225から説明を続ける。
ステップS225において、第1統合部120は、第1種類情報の組に基づいて結果データを生成し、生成された結果データを統合結果330に追加する。
【0048】
具体的には、第1統合部120は、結果データを以下のように生成する。
まず、第1統合部120は、第1種類情報の組に対応する脆弱性識別子と共通説明と共通識別子とを脆弱性管理テーブル320から取得する。
次に、第1統合部120は、第1種類情報の組を用いて、脆弱性情報を生成する。
そして、第1統合部120は、脆弱性識別子と共通説明と共通識別子と脆弱性情報とを含んだ結果データを生成する。
【0049】
ステップS226において、第1統合部120は、第1種類情報の未選択の組があるか判定する。
第1種類情報の未選択の組がある場合、処理はステップS221に戻る。
第1種類情報の未選択の組がない場合、処理は終了する。
【0050】
図3に戻り、ステップS300から説明を続ける。
ステップS300は第2統合処理である。
ステップS300において、第2統合部130は、第2種類情報の集合から第2共通情報群を選択し、第2共通情報群に含まれる個別識別子に対応付けられた共通説明を脆弱性管理テーブル320から取得する。そして、第2統合部130は、取得された共通説明を統合結果330に加える。
第2共通情報群は、複数の診断ツール221で共通して検出された脆弱性に対応する複数の第2種類情報である。
【0051】
第2統合部130は、それぞれの第2種類情報に含まれるホスト情報に基づいて、第2共通情報群を選択する。ホスト情報は、アドレスとポート番号とOS情報との少なくともいずれかである。
【0052】
第2統合部130は、それぞれの第2種類情報に含まれる個別説明に基づいて、第2共通情報群を選択する。
【0053】
第2共通情報群に対応する共通識別子に対応付けられた共通説明が脆弱性管理テーブル320に登録されていない場合、第2統合部130は、第2共通情報群に対応する共通識別子に対応付けて脆弱性管理テーブル320に共通説明を登録する。そして、第2統合部130は、登録された共通説明を統合結果330に加える。
【0054】
また、第2統合部130は、第2種類情報の集合から第2部分情報群を選択する。
第2部分情報群は、少なくともいずれかの診断ツールを除いて残りの診断ツールで共通して検出された脆弱性に対応する1つ以上の第2種類情報である。
【0055】
図10に基づいて、第2統合処理(S300)の詳細を説明する。
ステップS310において、第2統合部130は、それぞれの第2種類情報に含まれるホスト情報に基づいて、第2種類情報の集合を組み分けする。具体的には、ホスト情報は、アドレス、ポート番号およびOS情報である。
つまり、第2統合部130は、第2種類情報の集合をホスト情報別に組み分けする。
同じ組に属する第2種類情報は、同じホスト情報を含んでいる。つまり、同じ組に属する第2種類情報は、同じアドレスと同じポート番号と同じOS情報とを含んでいる。
【0056】
ステップS321において、第2統合部130は、第2種類情報の未選択の組を1つ選択する。
【0057】
ステップS322からステップS327は、選択された組を対象にして実行される。
【0058】
ステップS322において、第2統合部130は、第2種類情報の組が第2共通情報群の候補であるか判定する。
具体的には、第2統合部130は、それぞれの第2種類情報に対応付けられたツール識別子を参照し、全ての診断ツール221のツール識別子が第2種類情報の組に対応付けられているか判定する。全ての診断ツール221のツール識別子が第2種類情報の組に対応付けられている場合、第2統合部130は、第2種類情報の組が第2共通情報群の候補であると判定する。
第2種類情報の組が第2共通情報群の候補である場合、処理はステップS323に進む。
第2種類情報の組が第2共通情報群でない場合、処理は部分統合処理(S500)に進み、部分統合処理(S500)の後、処理はステップS328に進む。部分統合処理(S500)については後述する。なお、第2共通情報群の候補でない第2種類情報の組を第2部分情報群という。
【0059】
ステップS323において、第2統合部130は、それぞれの第2種類情報から個別説明を抽出する。
次に、第2統合部130は、それぞれの個別説明から単語を抽出する。
そして、第2統合部130は、個別説明毎の単語を比較し、それぞれの個別説明に共通する単語の数を数える。得られる数を共通単語数という。
【0060】
ステップS324において、第2統合部130は、共通単語数を単語数閾値と比較する。単語数閾値は予め決められた値である。
共通単語数が単語数閾値以上である場合、処理はステップS325に進む。この場合の第2種類情報の組を第2共通情報群という。
共通単語数が単語数閾値未満である場合、処理は部分統合処理(S500)に進み、部分統合処理(S500)の後、処理はステップS328に進む。部分統合処理(S500)については後述する。なお、共通単語数が単語数閾値未満である場合の第2種類情報の組を第2部分情報群という。
【0061】
ステップS325において、第2統合部130は、第2種類情報の組に対応する共通説明が脆弱性管理テーブル320に登録されているか判定する。
判定方法は、
図8で説明したステップS223と同じである。つまり、ステップS325は、ステップS223において第1種類情報の組を第2種類情報の組に置き換えた処理と同じである。
第2種類情報の組に対応する共通説明が脆弱性管理テーブル320に登録されている場合、処理はステップS327に進む。
第2種類情報の組に対応する共通説明が脆弱性管理テーブル320に登録されていない場合、処理はステップS326に進む。
【0062】
ステップS326において、第2統合部130は、第2種類情報の組に対応する共通説明を脆弱性管理テーブル320に登録する。
登録方法は、
図8に基づいて説明したステップS224と同じである。つまり、ステップS326は、ステップS224において第1種類情報の組を第2種類情報の組に置き換えた処理と同じである。
【0063】
ステップS327において、第2統合部130は、第2種類情報の組に基づいて結果データを生成し、生成された結果データを統合結果330に追加する。
結果データの生成方法は、
図8で説明したステップS225と同じである。つまり、ステップS327は、ステップS225において第1種類情報の組を第2種類情報の組に置き換えた処理と同じである。
【0064】
ステップS328において、第2統合部130は、第2種類情報の未選択の組があるか判定する。
第2種類情報の未選択の組がある場合、処理はステップS321に戻る。
第2種類情報の未選択の組がない場合、処理は終了する。
【0065】
次に、部分統合処理(S500)を説明する。
ステップS500において、部分統合部140は、第1部分情報群の集合から第1統合対象群を選択し、第1統合対象群に対応する共通識別子に対応付けられた共通説明を脆弱性管理テーブル320から取得する。そして、部分統合部140は、取得された共通説明を統合結果330に加える。
第1統合対象群は、再診断の対象とならない脆弱性に対応する第1部分情報群である。
【0066】
また、部分統合部140は、第1部分情報群の集合から第1再診断対象群を選択し、第1再診断対象群のそれぞれの脆弱性情報に含まれる個別識別子を再診断リスト350に登録する。
第1再診断対象群は、再診断の対象となる脆弱性に対応する第1部分情報群である。
【0067】
同様に、部分統合部140は、第2部分情報群の集合から第2統合対象群を選択し、第2統合対象群に含まれる個別識別子に対応付けられた共通説明を脆弱性管理テーブル320から取得する。そして、部分統合部140は、取得された共通説明を統合結果330に加える。第2統合対象群は、再診断の対象とならない脆弱性に対応する第2部分情報群である。
また、部分統合部140は、第2部分情報群の集合から第2再診断対象群を選択し、第2再診断対象群のそれぞれの脆弱性情報に含まれる個別識別子を再診断リスト350に登録する。第2再診断対象群は、再診断の対象となる脆弱性に対応する第2部分情報群である。
【0068】
なお、部分統合部140は、対応状況テーブル360と診断履歴ファイル370とを用いて、第1統合対象群と第1再診断対象群と第2統合対象群と第2再診断対象群とを選択する。
対応状況テーブル360は、脆弱性毎に診断ツール毎の対応状況を示すデータである。
診断履歴ファイル370は、診断ツール221毎の診断ミスの履歴を示すデータである。
【0069】
図11に基づいて、再診断リスト350を説明する。
再診断リスト350は、診断ツール221と脆弱性との組毎の再診断データを含む。図中の1行が再診断データに相当する。
再診断データにおいて、ツール識別子と個別識別子とアドレスとポート番号とが互いに対応付けられている。
【0070】
図12に基づいて、対応状況テーブル360を説明する。
対応状況テーブル360は、脆弱性毎のレコードを備える。図中の1行がレコードに相当する。
それぞれのレコードにおいて、脆弱性識別子と脆弱性名と共通識別子と公表日と診断ツール221毎の対応状況とが互いに対応付けられている。
脆弱性名は、脆弱性の名称である。
公表日は、脆弱性に関する情報が外郭団体から公表された日の日付である。
対応状況は、対応日または未対応を示す。対応日は、診断ツール221が脆弱性を検出できるようになった日の日付である。未対応は、診断ツール221が脆弱性を検出することができないことを意味する。未対応は、ブランク、記号または文字列で表される。
【0071】
図13に基づいて、診断履歴ファイル370を説明する。
診断履歴ファイル370は、診断ミス毎の履歴データを含む。図中の1行が履歴データに相当する。
履歴データにおいて、日付と脆弱性識別子と診断ツール221毎の診断履歴とが互いに対応付けられている。
日付は、履歴データが生成された日付である。
診断履歴は、診断ミスまたはミスなしを示す。診断ミスは、誤検知または検知漏れである。誤検知は、脆弱性がないにも関わらず脆弱性が誤って検出されたことを意味する。検知漏れは、脆弱性があるにも関わらず脆弱性が検出されなかったことを意味する。ミスなしは、診断ミスでなかったことを意味する。図中のハイフンはミスなしを意味する。
【0072】
図14に基づいて、部分統合処理(S500)の詳細を説明する。
部分統合処理(S500)は、第1統合処理(S100)で選択された第1部分情報群または第2統合処理(S200)で選択された第2部分情報群を対象にして実行される。
第1部分情報群および第2部分情報群を総称して部分情報群という。
【0073】
ステップS511において、部分統合部140は、部分情報群に対応する脆弱性に対する診断ツール221毎の対応状況を、対応状況テーブル360から取得する。
具体的には、部分統合部140は、部分情報群に対応付けられた脆弱性識別子と同じ脆弱性識別子を対応状況テーブル360から選択する。そして、部分統合部140は、選択された脆弱性識別子に対応付けられた診断ツール221毎の対応状況を対応状況テーブル360から取得する。
【0074】
ステップS512において、部分統合部140は、部分情報群に対応する脆弱性に対する診断ツール221毎の診断履歴を、診断履歴ファイル370から取得する。
具体的には、部分統合部140は、部分情報群に対応付けられた脆弱性識別子と同じ脆弱性識別子を診断履歴ファイル370から選択する。そして、部分統合部140は、選択された脆弱性識別子に対応付けられた診断ツール221毎の診断履歴を取得する。
【0075】
ステップS513において、部分統合部140は、部分情報群と診断ツール221毎の対応状況と診断ツール221毎の診断履歴とを用いて、診断ツール221毎の検出結果を決定する。
【0076】
具体的には、部分統合部140は、診断ツール221の検出結果を以下のように決定する。
診断ツール221のツール識別子に対応付けられた脆弱性情報311が部分情報群に含まれる場合、部分統合部140は、診断ツール221の検出結果に検出を設定する。
診断ツール221のツール識別子に対応付けられた脆弱性情報311が部分情報群に含まれない場合、部分統合部140は、診断ツール221の検出結果に不検出を設定する。
診断ツール221の対応状況が未対応である場合、部分統合部140は、診断ツール221の検出結果を無効に更新する。
診断ツール221の診断履歴に診断ミスが含まれる場合、部分統合部140は、診断ツール221の検出結果を無効に更新する。
【0077】
ステップS521において、部分統合部140は、検出結果の多数決を取る。
具体的には、部分統合部140は、検出と不検出と無効とのそれぞれの数を数える。
【0078】
ステップS522において、部分統合部140は、検出結果の多数決が成立するか判定する。
具体的には、部分統合部140は、検出の数または不検出の数が過半数であるか判定する。検出の数または不検出の数が過半数である場合、部分統合部140は、診断ツール221毎の検出結果の多数決が成立すると判定する。
検出結果の多数決が成立する場合、処理はステップS523に進む。
検出結果の多数決が成立しない場合、処理はステップS525に進む。
【0079】
ステップS523において、部分統合部140は、部分情報群と多数決の結果とを用いて履歴データを生成し、生成された履歴データを診断履歴ファイル370に登録する。
【0080】
具体的には、部分統合部140は、以下のような日付と脆弱性識別子と診断ツール221毎の診断履歴とを含んだ履歴データを生成する。
日付は、履歴データを生成したときの日付である。
脆弱性識別子は、部分情報群に対応付けられた脆弱性識別子である。
診断ツール221のツール識別子に対応付けられた脆弱性情報311が部分情報群に含まれ、多数決の結果が検出である場合、診断ツール221の診断履歴はミスなしである。
診断ツール221のツール識別子に対応付けられた脆弱性情報311が部分情報群に含まれ、多数決の結果が不検出である場合、診断ツール221の診断履歴は誤検知である。
診断ツール221のツール識別子に対応付けられた脆弱性情報311が部分情報群に含まれず、多数決の結果が検出である場合、診断ツール221の診断履歴は検知漏れである。
診断ツール221のツール識別子に対応付けられた脆弱性情報311が部分情報群に含まれず、多数決の結果が不検出である場合、診断ツール221の診断履歴はミスなしである。
【0081】
ステップS524において、多数決の結果が検出である場合、部分統合部140は、部分情報群に基づいて結果データを生成し、生成された結果データを統合結果330に追加する。
結果データを生成する方法は、
図8で説明したステップS225と同じである。つまり、多数決の結果が検出である場合のステップS524は、ステップS225において第1種類情報の組を部分情報群に置き換えた処理と同じである。
【0082】
ステップS525において、部分統合部140は、部分情報群に含まれる脆弱性情報311毎に再診断データを生成し、生成された再診断データを再診断リスト350に登録する。
【0083】
具体的には、部分統合部140は、再診断データを以下のように生成する。
まず、部分統合部140は、脆弱性情報311に対応付けられたツール識別子を取得する。
次に、部分統合部140は、脆弱性情報311から個別識別子とアドレスとポート番号とを抽出する。
そして、部分統合部140は、ツール識別子と個別識別子とアドレスとポート番号とを含んだ再診断データを生成する。
【0084】
図3に戻り、ステップS400から説明を続ける。
ステップS400は再診断制御処理である。
ステップS400において、再診断制御部150は、再診断制御を行う。
再診断制御は、再診断リスト350に含まれる個別識別子に対応する診断ツール221に個別識別子で識別される脆弱性を対象とする診断を行わせるための制御である。
【0085】
図15に基づいて、再診断制御処理(S400)の詳細を説明する。
ステップS401において、再診断制御部150は、再診断回数にゼロを設定する。
【0086】
ステップS411において、再診断制御部150は、再診断リスト350から再診断データを読み出す。
【0087】
ステップS412において、送信部194は、それぞれの再診断データを診断装置220に送信する。
それぞれの再診断データは、診断装置220によって受信されて診断ツール221に設定される。具体的には、再診断データに含まれるツール識別子で識別される診断ツール221に、再診断データに含まれる個別識別子とアドレスとポート番号とが設定される。
【0088】
ステップS413において、診断装置220は、再診断データが設定された診断ツール221のそれぞれを実行し、診断ツール221毎の診断結果310を診断結果統合装置100に送信する。
そして、受信部193は、診断ツール221毎の診断結果310を受信する。記憶部191は、診断ツール221毎の診断結果310を記憶する。
【0089】
ステップS421において、再診断制御部150は、今回の診断ツール221毎の診断結果310を前回の診断ツール221毎の診断結果310と比較する。
今回の診断ツール221毎の診断結果310が前回の診断ツール221毎の診断結果310と異なる場合、処理はステップS520に進む。
今回の診断ツール221毎の診断結果310が前回の診断ツール221毎の診断結果310と同じ場合、処理はステップS423に進む。
【0090】
ステップS520は脆弱性毎の多数決処理である。
ステップS520において、再診断制御部150は、今回の診断ツール221毎の診断結果310から、脆弱性情報311を抽出する。
次に、再診断制御部150は、脆弱性情報311の集合を脆弱性識別子別に組み分けする。組み分け方法は
図8で説明したステップS210と同じである。
そして、再診断制御部150は、脆弱性識別子毎に、脆弱性情報311の組を対象にして、
図14で説明したステップS521からステップS525を実行する。
なお、診断ツール221毎の検出結果は、脆弱性情報311の有無によって決まる。つまり、脆弱性情報311に対応する診断ツール221の検出結果は検出であり、残りの診断ツール221の検出結果は不検出である。
ステップS520の後、処理はステップS422に進む。
【0091】
ステップS422において、部分統合部140は、ステップS520で生成された再診断リスト350に再診断データがあるか判定する。
再診断データがある場合、処理はステップS423に進む。
再診断データがない場合、処理は終了する。
【0092】
ステップS423において、部分統合部140は、再診断回数に1を加える。
【0093】
ステップS424において、部分統合部140は、再診断回数を回数閾値と比較する。回数閾値は予め決められた値である。
再診断回数が回数閾値未満である場合、処理はステップS411に戻る。
再診断回数が回数閾値以上である場合、処理はステップS430に進む。
【0094】
ステップS430において、部分統合部140は、再診断リスト350にある再診断データに基づいて、結果データと履歴データとを生成する。
履歴データにおいて、再診断データに含まれるツール識別子と同じツール識別子に対応する診断履歴には未解決が設定される。
そして、部分統合部140は、結果データを統合結果330に追加し、履歴データを診断履歴ファイル370に登録する。
【0095】
次に、テーブル更新部160によって実行されるテーブル更新処理(S600)を説明する。
ステップS600において、テーブル更新部160は、新たな脆弱性を示す脆弱性データを取得し、取得された脆弱性データを用いて脆弱性管理テーブル320および対応状況テーブル360を更新する。
さらに、テーブル更新部160は、新たな対応状況を示す対応状況データを取得し、取得された対応状況データを用いて脆弱性管理テーブル320および対応状況テーブル360を更新する。
【0096】
図16に基づいて、テーブル更新処理(S600)の詳細を説明する。
ステップS611において、それぞれの外郭団体サーバ240は、新たな脆弱性データが登録された場合、新たな脆弱性データを診断結果統合装置100に送信する。新たな脆弱性データは、新たに発見された脆弱性を示すデータである。脆弱性データは、分類、脆弱性識別子、脆弱性名、共通識別子、共通説明および公表日などを含む。
それぞれの外郭団体サーバ240から新たな脆弱性データが送信された場合、受信部193は、新たな脆弱性データを受信する。
新たな脆弱性データが受信された場合、処理はステップS612に進む。
新たな脆弱性データが受信されなかった場合、処理はステップS621に進む。
【0097】
ステップS612において、テーブル更新部160は、新たな脆弱性データを用いて、脆弱性管理テーブル320および対応状況テーブル360を更新する。
具体的には、テーブル更新部160は、新たな脆弱性データに含まれる分類、脆弱性識別子、共通識別子および共通説明を用いて、脆弱性管理テーブル320のレコードを生成する。そして、テーブル更新部160は、生成されたレコードを脆弱性管理テーブル320に追加する。追加されるレコードの個別識別子の欄は空欄である。
具体的には、テーブル更新部160は、新たな脆弱性データに含まれる脆弱性識別子、脆弱性名、共通識別子および公表日を用いて、対応状況テーブル360のレコードを生成する。そして、テーブル更新部160は、生成されたレコードを対応状況テーブル360に追加する。追加されるレコードの対応状況の欄には未対応が設定される。
【0098】
ステップS621において、それぞれのツールベンダサーバ230は、新たな対応状況データが登録された場合、新たな対応状況データを診断結果統合装置100に送信する。新たな対応状況データは、追加または変更された対応状況を示すデータである。対応状況データは、ツール識別子、個別識別子、脆弱性識別子、共通識別子および対応状況などを含む。
それぞれのツールベンダサーバ230から新たな対応状況データが送信された場合、受信部193は、新たな対応状況データを受信する。
新たな対応状況データが受信された場合、処理はステップS622に進む。
新たな対応状況データが受信されなかった場合、処理は終了する。
【0099】
ステップS622において、テーブル更新部160は、新たな対応状況データを用いて、脆弱性管理テーブル320および対応状況テーブル360を更新する。
具体的には、テーブル更新部160は、脆弱性管理テーブル320から、新たな対応状況データに含まれる脆弱性識別子に対応するレコードを選択する。テーブル更新部160は、選択されたレコードの個別識別子の欄から、新たな対応状況データに含まれるツール識別子に対応する欄を選択する。そして、テーブル更新部160は、選択された個別識別子の欄に、新たな対応状況データに含まれる個別識別子を設定する。
具体的には、テーブル更新部160は、対応状況テーブル360から、新たな対応状況データに含まれる脆弱性識別子に対応するレコードを選択する。テーブル更新部160は、選択されたレコードの対応状況の欄から、新たな対応状況データに含まれるツール識別子に対応する欄を選択する。そして、テーブル更新部160は、選択された対応状況の欄に、新たな対応状況データに含まれる対応状況を設定する。
【0100】
***実施の形態1の効果***
人手で行われていた複数の診断結果の突き合わせを自動化して、作業の効率化を図ることができる。
作業者が経験に基づいて手作業で確認していた誤検知および検知漏れについて、外郭団体またはツールベンダから提供される最新情報をもとに随時更新されるテーブルと診断ツールの診断履歴とに基づいた特定により、属人性を排除することができる。
再診断が必要な脆弱性のみが診断ツールで再診断されるため、再診断に必要な時間を短縮することができる。
【0101】
***他の構成***
診断結果統合装置100は、
図17に示すような対応状況チャート380を生成するチャート生成部を機能構成の要素として備えてもよい。
対応状況チャート380は、脆弱性毎に診断ツール221の対応状況を示す図表である。
チャート生成部は、対応状況テーブル360を用いて、対応状況チャート380を生成する。そして、表示部196は、対応状況チャート380を表示する。
利用者は、対応状況チャート380を参照することにより、脆弱性毎の診断ツール221の対応状況を視覚的に把握することができる。
【0102】
診断結果統合装置100は、診断装置220を兼ねてもよい。
具体的には、診断結果統合装置100は、診断ツール221を実行して対象システム210を診断する診断部を機能構成の要素として備えてもよい。
【0103】
診断システム200は、互いに異なる診断ツール221を実行する複数の診断装置220を備えてもよい。
具体的には、診断システム200は、診断ツール221毎に診断装置220を備えてもよい。
【0104】
再診断リスト350は、利用者によって編集されてもよい。
具体的には、診断結果統合装置100は、再診断リスト350を編集する編集部を備えてもよい。
表示部196は再診断リスト350を表示し、利用者は入力装置907を操作して編集指示を入力する。受付部195は編集指示を受け付け、編集部は編集指示に従って再診断リスト350を編集する。
同様に、脆弱性管理テーブル320および対応状況テーブル360が、利用者によって編集されてもよい。
【0105】
脆弱性管理テーブル320において、共通識別子があるレコードと共通識別子がないレコードとは、データベースのフィルタ機能を利用して分離することが可能である。
脆弱性管理テーブル320は、共通識別子があるレコードから成るテーブルと共通識別子がないレコードから成るテーブルとに分けてもよい。
【0106】
実施の形態2.
複数の対象システム210を備える診断システム200について、
図18に基づいて説明する。但し、実施の形態1と重複する説明は省略または簡略する。
【0107】
***構成の説明***
図18に基づいて、診断システム200の構成について説明する。
診断システム200は、対象システム210と診断装置220と診断結果統合装置100との組を複数備える。
さらに、診断システム200は、テーブル管理装置250と、脆弱性管理データベース251と、対応状況データベース252とを備える。
テーブル管理装置250、脆弱性管理データベース251および対応状況データベース252は、クラウド環境に設けられる。
【0108】
脆弱性管理データベース251は、脆弱性管理テーブル320が記憶される記憶装置である。
対応状況データベース252は、対応状況テーブル360が記憶される記憶装置である。
テーブル管理装置250は、脆弱性管理データベース251に記憶された脆弱性管理テーブル320と、対応状況データベース252に記憶された対応状況テーブル360とを管理するコンピュータである。
具体的には、テーブル管理装置250は、実施の形態1で説明したテーブル更新部160を機能構成の要素として備える。
【0109】
それぞれの診断結果統合装置100は、脆弱性管理テーブル320を使用するために脆弱性管理データベース251にアクセスし、対応状況テーブル360を使用するために対応状況データベース252にアクセスする。
診断結果統合装置100の機能構成は、テーブル更新部160を除いて、実施の形態1と同じである。
【0110】
***動作の説明***
診断結果統合装置100の診断結果統合方法は、テーブル更新処理(S600)を除いて、実施の形態1と同じである。
【0111】
***実施の形態2の効果***
テーブルがクラウドで管理されるため、診断結果統合装置100の記憶容量を減らすことができる。また、診断結果統合装置100においてテーブルを更新する必要がないため、診断結果統合装置100の負荷を軽減することができる。
【0112】
***実施の形態の補足***
実施の形態において、診断結果統合装置100の機能はハードウェアで実現してもよい。
図19に、診断結果統合装置100の機能がハードウェアで実現される場合の構成を示す。
診断結果統合装置100は処理回路990を備える。処理回路990はプロセッシングサーキットリともいう。
処理回路990は、実施の形態で説明した「部」の機能を実現する専用の電子回路である。この「部」には記憶部191も含まれる。
具体的には、処理回路990は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA、ASIC、FPGAまたはこれらの組み合わせである。GAはGate Arrayの略称であり、ASICはApplication Specific Integrated Circuitの略称であり、FPGAはField Programmable Gate Arrayの略称である。
なお、診断結果統合装置100が複数の処理回路990を備えて、複数の処理回路990が「部」の機能を連携して実現してもよい。
【0113】
診断結果統合装置100の機能は、ソフトウェアとハードウェアとの組み合わせで実現してもよい。つまり、「部」の一部をソフトウェアで実現し、「部」の残りをハードウェアで実現してもよい。
【0114】
実施の形態は、好ましい形態の例示であり、本発明の技術的範囲を制限することを意図するものではない。実施の形態は、部分的に実施してもよいし、他の形態と組み合わせて実施してもよい。フローチャート等を用いて説明した手順は、適宜に変更してもよい。