説明

脆弱性判定装置、脆弱性判定方法及び脆弱性判定プログラム

【課題】特定の開発情報のみによって、プログラムの脆弱性を判定してしまうという問題を解決することができる脆弱性判定装置、脆弱性判定方法及び脆弱性判定プログラムを提供すること
【解決手段】本発明にかかる脆弱性判定装置1は、種類に応じて分類された開発情報21a、21b、21cを、それぞれ関連付けられて格納する開発情報記憶部20と、脆弱性情報31を格納する脆弱性情報記憶部30を備える。また、所定種類の開発情報50について脆弱性を判定する場合に、当該判定対象となる開発情報50の種類に関連付けられた種類の開発情報21a、21b、21cも判定対象に含めて、当該判定対象の開発情報21a、21b、21c、50及び脆弱性情報記憶部30に格納された脆弱性情報31に基づいて、プログラムの脆弱性を判定する判定処理部10を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、脆弱性判定装置、脆弱性判定方法及び脆弱性判定プログラムに関するものであり、特にプログラムの脆弱性を判定する脆弱性判定装置、脆弱性判定方法及び脆弱性判定プログラムに関する。
【背景技術】
【0002】
脆弱性を判定するシステムは、脆弱性を判定するプログラムに関連するキーワードを入力することによって、脆弱性の判定を実行する。例えば、ユーザが脆弱性の判定対象となるプログラムをJAVA(登録商標)で開発している場合には、脆弱性判定システムは、このプログラムの実行時に使用されるJRE(Java Runtime Environment)(登録商標)をキーワードとして入力し、プログラムの脆弱性の有無を検索する。
非特許文献1に記載の脆弱性を検索するシステムは、ユーザがプログラムの脆弱性を判定する場合には、プログラムに関連する所望のキーワードを入力し、入力したキーワードに該当する脆弱性情報を、脆弱性情報が格納されているデータベースから検索して表示する。
【0003】
また、特許文献1には、権限昇格、DoS(Denial of Service attack)、XSS(Cross Site Scripting)及びHTTP(Hyper Text Transfer Protocol)等の脆弱性キーワードDB(DataBase)に格納された脆弱性に関連するキーワード、並びにOS(Operating System)名、HW(HardWare)名、使用SW(SoftWare)名及び使用ライブラリ名等の製品DBに格納された製品に関連するキーワードを用いて、調査対象とすべき脆弱性情報を効果的に提示する技術が開示されている。特許文献1に記載の装置においても、ユーザがプログラムの脆弱性を判定する場合には、非特許文献1と同様に、プログラムに関連するキーワードを入力し、入力されたキーワードによって、提示された脆弱性情報を検索することによって行うことができる。
【0004】
一方、ソフトウェア開発もしくはシステム開発において、プログラムを作成する場合には、開発段階のそれぞれにおいて、開発ドキュメント、ソースコード及びプログラム等の開発情報が作成される。
しかし、上述のような、キーワードを入力することによって脆弱性を判定する場合は、ユーザの検索のしかたによっては、特定の開発情報のみに基づいて、プログラムの脆弱性を判定してしまう場合がある。例えば、プログラムで使用しているライブラリ関数について脆弱性を判定するというように、ソースコードから確認できるキーワードのみを使用して脆弱性を判定してしまう場合である。
【0005】
なお、特許文献2には、ソフトウェア開発において作成される生産物、生産物の変更要因、試験に関わる情報を連携して管理する技術が開示されている。
また、特許文献3には、ネットワークを介して、複数のデータファイルを取得し、取得したデータファイルに対して、所定の切り出しルールと用語の関係記述であるオントロジを利用して、必要な情報を抽出することで、Web上に公開されている様々な領域のカタログを、自動的に切り出すことを可能とする技術が開示されている。
【0006】
さらに、特許文献4には、データベースに記録されている脆弱性に関するデータに基づいて、支援ツールを利用して作成した製品のセキュリティ対策の脆弱性を判定することにより、顧客や製品開発関係者が有するセキュリティに関する知識や経験の水準によらずに、脆弱性を判定することができる技術が開示されている。
また、特許文献5には、入力されたURL(Uniform Resource Locator)に応じたWeb(World Wide Web)ページを取得し、取得したWebページに含まれるリンクとなるURLに応じたWebページを取得する処理を繰り返すことにより、公開されている脆弱性情報を幅広く収集することができる技術が開示されている。
【特許文献1】特開2007−058514号公報
【特許文献2】特開2003−122570号公報
【特許文献3】特開2004−062446号公報
【特許文献4】特開2007−122372号公報
【特許文献5】特開2008−197877号公報
【非特許文献1】独立行政法人情報処理推進機構(IPN)他、JVN iPedia 脆弱性対策情報データベース、[online]、[2008年10月23日検索]、インターネット<URL:http://jvnd.jvn.jp/>
【発明の開示】
【発明が解決しようとする課題】
【0007】
背景技術に記載した技術によって脆弱性を判定する場合には、特定の開発情報のみによって、プログラムの脆弱性を判定してしまうという問題がある。
【0008】
本発明の目的は、上述したような課題である特定の開発情報のみによって、プログラムの脆弱性を判定してしまうという問題を解決することができる脆弱性判定装置、脆弱性判定方法及び脆弱性判定プログラムを提供することにある。
【課題を解決するための手段】
【0009】
本発明にかかる脆弱性判定装置は、種類に応じて分類された開発情報を、それぞれ関連付けられて格納する開発情報記憶部と、脆弱性情報を格納する脆弱性情報記憶部と、 所定種類の開発情報について脆弱性を判定する場合に、当該判定対象となる開発情報の種類に関連付けられた種類の開発情報も判定対象に含めて、当該判定対象の開発情報及び前記脆弱性情報記憶部に格納された脆弱性情報に基づいて、プログラムの脆弱性を判定する判定処理部を備えたものである。
【発明の効果】
【0010】
本発明により、特定の開発情報のみによって、プログラムの脆弱性を判定してしまうという問題を解決することができる脆弱性判定装置、脆弱性判定方法及び脆弱性判定プログラムを提供することができる。
【発明を実施するための最良の形態】
【0011】
発明の実施の形態1.
図1は、本発明の実施の形態1にかかる脆弱性判定装置の概略を示すブロック図である。
ここで、本発明の実施の形態における脆弱性とは 、プログラムの適切な実行を阻害する要因をいう。例えば、プログラムが動作するハードウェア、プログラムが動作するOS、プログラム自身が有している欠陥、バグ、誤設定及び仕様上の問題点等であり、プログラムの誤動作や不正アクセスによるシステムの乗っ取り、情報漏洩及びデータの改ざん等の要因となるものをいう。
【0012】
脆弱性判定装置1は、判定処理部10、開発情報記憶部20及び脆弱性情報記憶部30を備えている。
判定処理部10は、脆弱性情報記憶部30に格納されている脆弱性情報を用いて、開発情報について脆弱性を判定する。
【0013】
開発情報記憶部20は、開発情報レコード21を含む、1つ又は複数の開発情報レコードが格納されている。開発情報レコード21は、開発情報21a、21b、21cが含まれる。開発情報21a、21b、21cは、それぞれに1つ又は複数の開発情報を含む。開発情報21a、21b、21cに含まれる開発情報は、開発情報レコードの単位によって関連付けられている。
【0014】
ここで、開発情報とは、プログラムの開発に関連する情報である。開発情報は、例えば、開発するプログラムの開発者に関する開発者情報、開発するプログラムの開発する環境及び稼働する環境を示す開発/導入環境情報、開発ドキュメント、ソースコード及び開発したプログラム等の種類に分けられる。
開発者情報21a、21b、21cは、それぞれに異なる種類の開発情報を含む。開発情報21bは、異なる種類の開発情報21aに基づいて作成された開発情報であり、開発情報21cは、異なる種類の開発情報21bに基づいて作成された開発情報である。
脆弱性情報記憶部30は、脆弱性に関する情報である脆弱性情報31を含む、1つ又は複数の脆弱性情報が格納されている。
【0015】
続いて、図1に示す脆弱性判定装置の処理について説明する。
まず、判定処理部10は、脆弱性を判定する所定種類の開発情報50の入力を受ける。ここで、開発情報50は、プログラムの開発情報であり、開発情報レコード21に関連付けられた開発情報である。また、開発情報50は、開発情報21cの種類における開発情報である。
次に、判定処理部10は、開発情報50の種類と関連する種類の開発情報21a、21b、21cの開発情報も脆弱性の判定対象に含める。
そして、判定処理部10は、判定対象とした開発情報21a、21b、21cの開発情報及び開発情報50について、脆弱性情報記憶部30に格納された脆弱性情報に基づいて、脆弱性の判定を行うことにより、プログラムの脆弱性を判定する。
【0016】
なお、脆弱性判定装置1に入力された開発情報を含めずに、予め開発情報記憶部20に格納されている開発情報のみを判定対象として、判定処理を実行してもよい。例えば、開発情報50ではなく、開発情報21cの開発情報を示す情報を判定処理部10に入力し、開発情報21cに関連する種類の開発情報21a、21bの開発情報を脆弱性の判定対象に含め、開発情報21a、21b、21cの開発情報について、脆弱性を判定してもよい。
【0017】
図2は、本発明の実施の形態1にかかる脆弱性判定装置の詳細を示すブロック図である。
脆弱性判定装置100は、入力制御処理部110、ルール選択処理部120、判定処理部130、開発情報リポジトリ制御処理部140、開発情報リポジトリ141、脆弱性DB制御処理部150、脆弱性DB151、出力処理部160、公開脆弱性情報取得処理部170及び脆弱性DB処理部180を備える。
【0018】
入力制御処理部110は、脆弱性の判定対象となる開発情報や脆弱性判定リクエストの入力を処理する。
ルール選択処理部120は、脆弱性の判定対象となる開発情報の開発段階のそれぞれに応じた脆弱性情報判定ルールを選択する処理を行う。
判定処理部130は、脆弱性情報記憶部151に格納されている脆弱性レコードを用いて、開発情報について脆弱性を判定する。
開発情報リポジトリ制御処理部140は、開発情報リポジトリ141に格納されている開発情報から所望の開発情報を検索して取得する処理、開発情報リポジトリ141に所望の開発情報を登録する処理を行う。
【0019】
脆弱性DB制御処理部150は、脆弱性DB151に格納されている脆弱性レコードから所望の脆弱性レコードを検索して取得する処理、脆弱性DB151に所望の脆弱性レコードを登録する処理を行う。
出力処理部160は、脆弱性の判定結果を出力する処理を行う。
公開脆弱性情報取得処理部170は、インターネット(登録商標)、イントラネット、電話回線網等の任意のネットワーク200を介して、公開されている脆弱性に関する情報を取得する処理を行う。
脆弱性DB処理部180は、公開脆弱性情報取得処理部170が取得した脆弱性に関する情報から脆弱性DB151に登録するための脆弱性レコード152を作成する処理を行う。公開脆弱性情報取得処理部及び脆弱性DB処理部は、脆弱性情報処理部として機能する。
【0020】
開発情報リポジトリ141は、プロジェクトレコード142を含む1つ又は複数のプロジェクトレコードが格納される。プロジェクトレコード142は、プロジェクトID142a、開発者情報142b、開発/導入環境情報142c、ドキュメント142d、ソースコード142e、プログラム142f及びキーワード142gが含まれる。
開発者情報142b、開発/導入環境情報142c、ドキュメント142d、ソースコード142e、プログラム142f及びキーワード142gは、それぞれに異なる開発段階の1つ又は複数の開発情報を含む。
【0021】
なお、開発者情報142b、開発/導入環境情報142cやキーワード142gのように、プログラムの開発における一般的な生産物でないものは、任意の開発段階における開発情報としてもよい。本実施の形態では、開発者情報142bが最も上流工程の開発段階であり、開発/導入環境情報142c、ドキュメント142d、ソースコード142e、プログラム142f、キーワード142gと、順番に下流工程の開発段階となる。
開発情報リポジトリ141は、開発情報記憶部に相当し、プロジェクトレコード142は、開発情報レコードに相当する。
【0022】
プロジェクトID142aは、プロジェクトの識別子を示す情報である。プロジェクトIDは、ソフトウェアもしくはシステムを開発するプロジェクトの単位で付与されている。つまり、プロジェクトレコード142に含まれる開発情報は、プロジェクトID142aによって関連付けられる。なお、プロジェクトIDは、本実施の形態とは異なる任意の単位で付与してもよい。
開発者情報142bは、開発者の氏名、開発担当内容、メールアドレスや電話番号等の連絡先等のプログラムの開発者に関する情報である。ここでは、開発担当内容とは、例えば、システム開発において、開発者がどの機能もしくはモジュールを担当しているかを示す情報である。なお、開発者情報142bの構成要素に、開発者のプロジェクトに関わった年数等のスキルや経験を示す情報を加えてもよく、開発者に関する情報であれば、本実施の形態に例示した内容に限られない。
【0023】
開発/導入環境情報142cは、開発言語、使用ライブラリ、関連ソフトウェアや開発ツール等のプログラムを開発する環境や、OS、使用ライブラリや関連システム等の開発したプログラムが稼働する環境を示す情報である。
ドキュメント142dは、要求仕様書、基本設計書及び詳細設計書等の開発に関連するドキュメント情報である。
ソースコード142eは、プログラムのソースコードである。
プログラム142fは、プログラムである。
キーワード142gは、既に脆弱性の判定において使用された検索キーを示す情報である。キーワード142g及び検索キーについては、後に詳述する。
【0024】
なお、プロジェクトレコード142は、上述した開発情報以外の任意の開発情報が追加された構成としてもよく、上述した開発情報から任意の開発情報を除いた構成としてもよく、本実施の形態に例示した構成に限られない。
また、プロジェクトレコード142には、開発初期から上述した全ての開発段階の開発情報が格納されていなくてもよく、開発段階に従って逐次開発情報を追加してもよい。
さらに、開発情報リポジトリ141に格納されるプロジェクトレコード142及び開発情報は、全て同一ディスク上に格納してもよく、異なるディスク上や異なる装置上に分散して格納して、開発情報をリンクする形態としてもよい。例えば、異なるディスク上に開発情報を分散して格納して、プロジェクトID142aにおいて関連付けて管理してもよく、シンボリックリンクを用いてリンクしてもよい。
【0025】
脆弱性DB151は、脆弱性レコード152を含む1つ又は複数の脆弱性レコードが格納される。脆弱性DB151は、脆弱性情報記憶部に相当し、脆弱性レコード152は、脆弱性情報に相当する。
脆弱性レコード152には、脆弱性情報の識別子を示す情報である脆弱性情報IDと、脆弱性を判定するときのキーワードとなる脆弱性の対象名や脆弱性の内容、開発するソフトウェアもしくはシステムへの影響度、関連ベンダ及び脆弱性判定の優先順位の情報が含まれる。
【0026】
脆弱性情報IDは、脆弱性情報を識別する情報である。IDの範囲によってクラス分けを行い、それぞれのクラスを開発情報の開発段階と対応させる。
脆弱性の対象名は、開発情報からプログラムの脆弱性の有無を判定するためのキーワードとなる情報である。例えば、DoS(攻撃手法)やJRE(SW名)等である。
脆弱性の内容は、対象名が示す脆弱性よりもさらに具体的な情報である。例えば、あるライブラリ関数に脆弱性がある場合には、その関数を用いたソースコードの記述例である。なお、脆弱性の内容から一部の記述を抜き出して、プログラムの脆弱性の有無を判定するためのキーワードとすることもできる。
影響度は、ソフトウェアもしくはシステムへの影響を示した情報であり、任意の段階を設定してもよい。
【0027】
関連ベンダは、脆弱性が製品等に関するものである場合は、その製品等のベンダ名である。
脆弱性判定の優先順位は、脆弱性を判定する場合の優先順位を示す情報である。例えば、この優先順位は、優先順位の高い脆弱性レコードから脆弱性の判定を行う場合に参照される。また、優先順位は、特定の優先順位の脆弱性レコードまで脆弱性の判定を実行し、それよりも優先順位が低い脆弱性レコードは脆弱性の判定を実行しない場合にも参照される。さらに、この優先順位に基づいた順番によって、判定結果500で出力される順序を決定してもよい。
なお、脆弱性レコード152は、上述した構成要素以外の任意の構成要素が追加された構成としてもよく、上述した構成要素から任意の構成要素を除いた構成としてもよく、本実施の形態に例示した構成に限られない。
【0028】
続いて、図2に示す脆弱性判定装置の処理について説明する。
図3のフローチャートを用いて、図2に示す脆弱性判定装置における脆弱性に関する情報を取得する処理について説明する。
まず、公開脆弱性情報取得処理部170は、ネットワークを介して、公開されている脆弱性に関する情報を取得する(S710)。
【0029】
ここで、公開されている脆弱性に関する情報の取得処理は、定期的もしくは自動的に実行してもよく、マニュアル操作により実行してもよい。
また、公開されている脆弱性に関する情報は、インターネット(登録商標)上のサイトから取得してもよく、社内に設置されたPC(Personal Computer)、サーバ等の情報処理装置からネットワークを介して取得してもよい。さらに、脆弱性に関する情報は、脆弱性に関する情報が記述された電子メールを受信することにより取得してもよく、脆弱性に関する情報が記述された電子メールをPC(Personal Computer)、メールサーバ等の情報処理装置から取得するようにしてもよい。その他に、公開脆弱性情報取得処理部170に出版物から情報を取り込む機能を設け、出版物から脆弱性に関する情報を取得してもよく、キーボードもしくはマウス等の入力装置から入力された脆弱性に関する情報を取得してもよい。
【0030】
次に、脆弱性DB処理部180は、取得した脆弱性に関する情報から、脆弱性レコード152を作成し、脆弱性DB制御処理部150に出力する。脆弱性DB制御処理部150は、入力された脆弱性レコード152を脆弱性DB151に格納する(S720)。
【0031】
続いて、図4のフローチャートを用いて、図2に示す脆弱性判定装置による脆弱性を判定する処理について説明する。
まず、開発情報リポジトリ141に所定の開発情報を登録する場合、入力制御処理部110は、登録する開発情報300の入力を受ける。ここで、開発情報300は、プロジェクトレコード142に登録する開発情報である。
一方、開発情報リポジトリ141に開発情報を登録せず脆弱性の判定を行う場合、入力制御処理部110は、脆弱性判定リクエスト400の入力を受ける。脆弱性判定リクエスト400には、脆弱性の判定を行おうとするプロジェクトのプロジェクトIDが含まれている。
【0032】
入力制御処理部110は、入力された情報に基づいて脆弱性の判定対象を示す情報である判定対象リストを作成する(S810)。
ここで、ステップS810における処理の詳細な処理について、図5のフローチャートを用いて説明する。
まず、入力制御処理部110は、入力された開発情報300、もしくは脆弱性判定リクエスト400を取得する(S821)。
【0033】
次に、開発情報リポジトリに登録する開発情報300が入力された場合には、入力した開発情報の開発段階を含めた上流工程の開発段階の開発情報を判定対象として決定する(S822、S823)。例えば、開発情報300として、ソースコードを登録する場合には、開発者情報142b、開発/導入環境情報142c、ドキュメント142d及びソースコード142eの開発情報を判定対象とする。
なお、登録する開発情報の開発段階における開発情報のみを判定対象として決定してもよく、登録する開発情報より1つだけ上流工程の開発段階までの開発情報を判定対象とする形態としてもよく、判定対象を決定する処理は、本実施の形態に例示した処理に限られない。
【0034】
一方、脆弱性判定リクエスト400が入力された場合、入力制御処理部110は、脆弱性判定リクエスト400に含まれるプロジェクトIDに関連付けられた全ての開発段階の開発情報を判定対象として決定する(S822、S824)。つまり、指定したプロジェクトID142aが格納されたプロジェクトレコード142の全ての開発情報が判定対象となる。
なお、脆弱性判定リクエスト400は、所定の開発情報を指定できるようにして、所定の開発情報の開発段階を含めた上流工程の開発段階の開発情報を判定対象として決定してもよく、所定の開発情報を指定できるようにし、所定の開発情報の開発段階における開発情報のみを判定対象としてもよく、判定対象の決定処理は、本実施の形態に例示した処理に限られない。
【0035】
次に、入力制御処理部110は、判定対象を決定したら、その決定した判定対象に基づいて判定対象リストを作成する(S825)。
図6に判定対象リストの例を示す。図6は、開発情報300として、ソースコード(function.c)が入力された場合に、作成される判定対象リストを例示している。
判定対象リストには、判定対象となるプロジェクトID、入力された開発情報の開発段階、それぞれの開発段階における開発情報を判定対象とするか否かの情報が含まれる。判定対象とする場合には「Y」が、判定対象外とする場合には「N」で示されている。
図6に示すように、ソースコードを含めた上流工程の開発段階の開発情報が判定対象として決定される。
【0036】
なお、プロジェクトID及び開発段階は、ソースコード(function.c)を入力制御処理部110に入力するときに、同時に入力するようにしてもよく、入力されたソースコード(function.c)に基づいて入力制御処理部110が導き出すようにしてもよい。例えば、プロジェクトID及び開発段階は、開発情報リポジトリ141を参照することによって、入力されたソースコードに基づいて導き出してもよく、開発情報のそれぞれに対応するプロジェクトID及び開発段階を示す情報を予め任意の記憶装置もしくは入力制御処理部110内に用意しておき、その情報に基づいて導き出してもよい。
【0037】
次に、ルール選択処理部120は、入力制御処理部110において作成された判定対象リストと、開発段階のそれぞれにおける脆弱性の判定方法を定義した脆弱性情報判定ルールに基づいて、脆弱性情報判定ルールに示される情報を判定対象に限定した脆弱性情報判定ルールリストを作成する(S825)。
ここで、判定対象リストは、入力制御処理部110からルール選択処理部120に出力するようにしてもよく、脆弱性判定装置100に設けられた任意の記憶装置に入力制御処理部110が格納し、ルール選択処理部120が参照するようにしてもよい。
また、脆弱性情報判定ルールは、ルール選択処理部120に格納してもよく、脆弱性判定装置100に設けられた任意の記憶装置に格納し、ルール選択処理部120が参照してもよい。
【0038】
ここで、図7に示す脆弱性情報判定ルールについて説明する。
脆弱性情報判定ルールは、判定対象、対応脆弱性情報、検索キー、検索方法によって特定される。
判定対象には、判定対象となりうる開発段階がそれぞれ示されている。
対応脆弱性情報には、脆弱性DB151に格納された脆弱性レコードのうちから脆弱性の判定に使用する脆弱性レコードが、開発段階のそれぞれに対応して関連付けられている。なお、図7におけるIDとは、脆弱性情報IDを示す。
検索キーは、開発情報の脆弱性を判定するときに用いられるキーワードである。つまり、脆弱性の判定は、この検索キーで開発情報を検索することで行う。
検索方法は、検索キーに示されるキーワードによって、開発情報を検索するときの検索方法を示す。
【0039】
脆弱性情報判定ルールの開発者情報に関する項目は、ID10000からID19999までの脆弱性レコードに含まれる対象名をキーワードとして、開発者情報を検索して脆弱性を判定することを示している。例えば、経験の浅い開発者が行ってしまいやすいコーディングミスに関する脆弱性レコードがあり、脆弱性の対象名が「1年」の経験年数である場合は、キーワード「1年」に一致する文字列を開発者情報142aから検索する。
【0040】
脆弱性情報判定ルールの開発/稼働環境情報に関する項目は、ID20000からID29999までの脆弱性レコードに含まれる対象名をキーワードとして、開発/稼働環境情報を検索すること示している。例えば、Linux(登録商標)に関する脆弱性レコードがあり、脆弱性の対象名が「Linux」(登録商標)である場合は、キーワード「Linux」(登録商標)に一致する文字列を開発/稼働環境情報142bから検索する。
ドキュメントについても、開発者情報、開発/稼働環境と同様に、対象名によってキーワード検索が行われる。
【0041】
脆弱性情報判定ルールのソースコードに関する項目は、ID40000からID49999までの脆弱性レコードに含まれる内容から抜き出したパターンをキーワードとして、ソースコードから一致するパターンを検索することを示している。例えば、脆弱性の内容としてソースコードの記述例がある場合に、ソースコード142eから、ソースコードの記述例において変数等の一部の記述がどのようになっていてもよい場合に、前後の記述のパターンの一致によって検索することができる。
【0042】
脆弱性情報判定ルールのプログラムに関する項目は、検索キーが示されていないが、これは既存のウィルス検索ソフトウェアによって検索されることを示している。この項目のAV(Anti Virus)シグネチャとは、ウィルスシグネチャのことである。プログラム142eから、ウィルスシグネチャと一致するパターンのコードを含むプログラムを検索することを示している。
【0043】
脆弱性情報判定ルールのキーワードに関する項目は、検索キーが対象名となっているが、ここでの対象名は、キーワード142gに含まれる既に検索を行った対象名のことである。ここで、キーワード142gには、脆弱性の判定において使用された検索キーが蓄積されている。
脆弱性判定リクエスト400によって、キーワード142gが判定対象とされた場合は、他の開発段階とは異なる検索が行われる。具体的には、キーワード142gに含まれる既に検索を行った対象名をキーワードとして、全ての脆弱性DB151に格納された脆弱性レコードを検索する。
【0044】
これにより、一度検索した対象名を含む脆弱性レコードが更新された場合であっても、最新の脆弱性レコードによる判定結果を得ることができる。また、キーワード142gに、既に検索を行った検索キーと、その検索キーを有する開発情報を示す情報を関連付けて含めておくことで、判定結果に対象となる開発情報を含めることができる。
なお、脆弱性情報判定ルールにおける、それぞれの判定対象物に対して示されている対応脆弱性情報、検索キー及び検索方法は、本実施の形態と異なるものを自由に指定することができ、図7において例示されたものに限られない。
【0045】
図6に示す判定対象リストと、図7に示す脆弱性情報判定ルールに基づいて作成される脆弱性情報判定ルールリストを図8に示す。
図8に示す脆弱性情報判定ルールリストについては、図7に示す脆弱性情報判定ルールに示される情報を、図6に示す判定対象リストにおいて判定対象とされた判定対象に限定したものであり、格納されている情報は図7に示す脆弱性情報判定ルールと同様であるとため、説明を省略する。
【0046】
次に、判定処理部130は、脆弱性情報判定ルールリストに基づいて、判定対象の開発情報について、脆弱性を判定する(S830)。
ここで、ステップS830における処理の詳細な動作について、図9のフローチャートを用いて説明する。ここでは、図8に示す脆弱性情報判定ルールリストに基づいて、ステップS830の処理を行う場合について例示する。
まず、判定処理部130は、作成された脆弱性情報判定ルールリストを取得する(S831)。ここで、脆弱性情報判定ルールリストは、ルール選択処理部120から判定処理部130に出力してもよく、脆弱性判定装置100に設けられた任意の記憶装置にルール選択処理部120が格納し、判定処理部130が参照するようにしてもよい。
【0047】
次に、判定処理部130は、脆弱性DB151から脆弱性DB制御処理部150を介して、脆弱性情報判定ルールリストが示す開発者情報142bに対応する脆弱性レコード(ID10000〜ID19999)を取得し、開発情報リポジトリ141から開発情報リポジトリ制御処理部140を介して、開発者情報142bの開発情報を取得する。そして、取得した脆弱性レコードの検索キーによって、開発者情報を検索する(S832)。
そして、ステップS832による検索結果を出力処理部160に出力する(S833)。
【0048】
次に、開発情報リポジトリの判定対象の全ての検索が終了していない場合は、再び検索が行われる(S834)。
図8に示す脆弱性情報判定ルールリストは、ソースコードまでの開発段階の開発情報を判定対象としているため、再び開発/稼働環境情報142cについて、検索が行われ、検索結果が出力処理部160に出力される(S832、S833)。その後も、図8に示す脆弱性情報判定ルールリストが示す判定対象の開発段階の開発情報であるドキュメント142d及びソースコード142eについて検索が行われる(S832、S833、S834)。
【0049】
そして、ソースコード142eまで検索が終了すると、図8に示す脆弱性情報判定ルールリストに示す全ての判定対象の開発段階の開発情報についての検索が終了するため、脆弱性の判定を終了する(S834)。
ここで、本実施の形態では、上流工程の開発段階から順番に検索をしているが、検索の順序は本実施の形態に例示したものに限られない。例えば、下流工程の開発段階から検索してもよく、一度に判定対象の開発情報及び脆弱性レコードを全て取得して検索を行うようにしてもよい。
【0050】
なお、開発情報300は、入力制御処理部110から開発情報リポジトリ制御処理部140に出力し、開発情報リポジトリ制御処理部140によって開発情報リポジトリ141に登録した後に、ステップS830による脆弱性の判定を行うことで、判定対象に含めることができる。また、開発情報300は、判定処理部130にて脆弱性の判定を行った後に、開発情報リポジトリ141に登録するようにしてもよい。
【0051】
次に、出力処理部160は、判定処理部130から出力された判定結果を出力する(S840)。
判定結果の出力である判定結果500の内容は、プロジェクトID、開発情報名、検索キーや脆弱性の内容等の開発情報名、開発情報や脆弱性レコードに含まれる情報等を自由に組み合わせた情報を出力することができる。
また、ここでの出力は、表示装置に表示してもよく、ファイルに出力してもよく、出力処理部160に、情報共有のためのWebコンテンツ作成用データを含めておき、Webコンテンツの形式で出力してもよい。さらに、出力処理部160に、関係者の連絡先を含めておき、メールを送信する形式で出力してもよい。
【0052】
以上のように、本発明の実施の形態1にかかる脆弱性判定装置によれば、所定種類の開発情報について脆弱性を判定する場合に、この開発情報の種類に関連付けられた種類の開発情報も脆弱性の判定対象に含めることができるため、特定の開発情報のみによって、プログラムの脆弱性を判定してしまうという問題を解決することができる。
これによりプログラムに関係する開発情報について、効率的に脆弱性を判定することができ、脆弱性の判定を迅速に行うことができる。
また、プログラムの開発の初期段階においても、タイムリーに脆弱性を判定することができ、セキュアな開発をすることができる。
【0053】
発明の実施の形態2.
図10は、本発明の実施の形態2にかかる脆弱性判定装置の詳細を示すブロック図である。
なお、本発明の実施の形態2にかかる脆弱性判定装置100の全体構成は、図1に示す実施の形態1にかかる脆弱性判定装置と比較して、脆弱性対策DB処理部190及び脆弱性対策DB191をさらに備える点が異なる。
脆弱性DB処理部190は、脆弱性対策DB191から、脆弱性に対する対策案を示す情報を取得する処理を行う。脆弱性DB処理部は、脆弱性対策情報処理部として機能する。
脆弱性対策DB191は、脆弱性に対する対策案を示す情報が格納されている。脆弱性対策DBは、脆弱性対策情報記憶部に相当する。
脆弱性DB処理部190、脆弱性対策DB191以外の構成要素については、実施の形態1と同様であるため、説明を省略する。
【0054】
図11のフローチャートを用いて、本発明の実施の形態2にかかる脆弱性判定装置における脆弱性に関する情報を取得する処理について説明する。
ここで、図11に示すステップS810、S820、S830における処理については、実施の形態1と同様であるため、説明を省略する。
【0055】
本実施の形態では、判定処理部130が脆弱性の判定を行い、判定処理部130が出力した判定結果を出力処理部160が取得したときに、脆弱性対策DB処理部190は、判定結果において示された脆弱性に対する対策案を示す情報を、脆弱性DB191から検索して取得し、対策案を示す情報を出力処理部160に出力する。
そして、出力処理部160は、脆弱性対策DB処理部190が出力した対策案を示す情報を取得し、対策案を示す情報を付加して判定結果500を出力する(S850)。
以上のように、本発明の実施の形態2にかかる脆弱性判定装置によれば、脆弱性の判定結果と併せて、脆弱性に対する対策案も提示することができる。
【0056】
以上に説明した本発明にかかる脆弱性判定装置は、上述の実施の形態の機能を実現するプログラムを記憶した記憶媒体をシステムもしくは装置に供給し、システムあるいは装置の有するコンピュータ又はCPU(Central Processing Unit)、MPU(Micro Processing Unit)がこのプログラムを実行することによって、構成することが可能である。
また、このプログラムは様々な種類の記憶媒体に格納することが可能であり、また、通信媒体を介して伝達されることが可能である。ここで、記憶媒体には、例えば、フレキシブルディスク、ハードディスク、磁気ディスク、光磁気ディスク、CD−ROM(Compact Disk Read Only Memory)、DVD(Digital Versatile Disk)、BD(Blu-ray Disc)、ROM(Read Only Memory)カートリッジ、バッテリバックアップ付きRAM(Random Access Memory)メモリカートリッジ、フラッシュメモリカートリッジ、不揮発性RAMカートリッジを含む。また、通信媒体には、電話回線の有線通信媒体、マイクロ波回線の無線通信媒体を含み、インターネット(登録商標)も含まれる。
【0057】
また、コンピュータが上述の実施の形態の機能を実現するプログラムを実行することにより、上述の実施の形態の機能が実現されるだけではなく、このプログラムの指示に基づき、コンピュータ上で稼動しているOS(Operating System)もしくはアプリケーションソフトと共同して上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
さらに、このプログラムの処理の全てもしくは一部がコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットにより行われて上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
【図面の簡単な説明】
【0058】
【図1】本発明の実施の形態1にかかる脆弱性判定装置の概略を示すブロック図である。
【図2】本発明の実施の形態1にかかる脆弱性判定装置の詳細を示すブロック図である。
【図3】図2に示す脆弱性判定装置における脆弱性に関する情報を取得する処理を示すフローチャートである。
【図4】図2に示す脆弱性判定装置における脆弱性を判定する処理を示すフローチャートである。
【図5】図2に示す脆弱性判定装置における判定対象リストを作成する処理の詳細な動作を示すフローチャートである。
【図6】本発明の実施の形態1にかかる判定対象リストの例を示す図である。
【図7】本発明の実施の形態1にかかる脆弱性情報判定ルールを示す図である。
【図8】本発明の実施の形態1にかかる脆弱性情報判定ルールリストを示す図である。
【図9】図2に示す脆弱性判定装置における脆弱性を判定する処理の詳細な動作を示すフローチャートである。
【図10】本発明の実施の形態2にかかる脆弱性判定装置の詳細を示すブロック図である。
【図11】図10に示す脆弱性判定装置における脆弱性を判定する処理を示すフローチャートである。
【符号の説明】
【0059】
1、100 脆弱性判定装置
10 判定処理部
20 開発情報記憶部
21 開発情報レコード
30 脆弱性情報記憶部
31 脆弱性情報
50 開発情報
110 入力制御処理部
120 ルール選択処理部
130 判定処理部
140 開発情報リポジトリ制御処理部
141 開発情報リポジトリ
142 プロジェクトレコード
150 脆弱性DB制御処理部
151 脆弱性DB
152 脆弱性レコード
160 出力処理部
170 公開脆弱性情報取得処理部
180 脆弱性DB処理部
190 脆弱性対策DB処理部
191 脆弱性対策DB
200 ネットワーク
300 開発情報
400 脆弱性判定リクエスト
500 判定結果

【特許請求の範囲】
【請求項1】
種類に応じて分類された開発情報を、それぞれ関連付けて格納する開発情報記憶部と、
脆弱性情報を格納する脆弱性情報記憶部と、
所定種類の開発情報について脆弱性を判定する場合に、当該判定対象となる開発情報の種類に関連付けられた種類の開発情報も判定対象に含めて、当該判定対象の開発情報及び前記脆弱性情報記憶部に格納された脆弱性情報に基づいて、プログラムの脆弱性を判定する判定処理部を備えた脆弱性判定装置。
【請求項2】
前記開発情報の種類は、プログラムの開発段階に応じた種類である請求項1に記載の脆弱性判定装置。
【請求項3】
前記判定処理部は、前記判定対象の開発情報について、種類に応じた判定方法によって、プログラムの脆弱性を判定する請求項1又は2に記載の脆弱性判定装置。
【請求項4】
前記脆弱性判定装置は、前記種類のそれぞれに応じた判定方法を決定するルール選択処理部をさらに備えた請求項3に記載の脆弱性判定装置。
【請求項5】
前記脆弱性情報記憶部では、前記脆弱性情報が種類のそれぞれに応じて分類され、
前記判定処理部は、前記判定対象の開発情報について、種類のそれぞれに応じた脆弱性情報に基づいて、プログラムの脆弱性を判定する請求項1乃至4のいずれかに記載の脆弱性判定装置。
【請求項6】
前記脆弱性判定装置は、所定種類の開発情報もしくは所定種類の開発情報を示す情報が入力されたことをトリガーとして、当該所定種類の開発情報に基づいて、判定対象の開発情報を決定する請求項1乃至5のいずれかに記載の脆弱性判定装置。
【請求項7】
前記脆弱性判定装置は、前記判定処理部から出力された脆弱性の判定結果を取得し、当該判定結果を所定の出力先に出力する出力処理部をさらに備えた請求項1乃至6のいずれかに記載の脆弱性判定装置。
【請求項8】
前記脆弱性判定装置は、脆弱性に対する対策案を示す情報である対策案情報が格納された脆弱性対策情報記憶部と、
前記対策案情報を前記脆弱性対策情報記憶部から取得し、当該対策案情報を前記出力処理部に出力する脆弱性対策情報処理部をさらに備え、
前記出力処理部は、前記判定結果に当該対策案情報を付加して出力する請求項7に記載の脆弱性判定装置。
【請求項9】
前記脆弱性判定装置は、ネットワークを介して脆弱性に関する情報を取得し、当該情報から脆弱性情報を作成して、脆弱性情報記憶部に格納する脆弱性情報処理部をさらに有する請求項1乃至8のいずれかに記載の脆弱性判定装置。
【請求項10】
前記開発情報記憶部は、前記種類に応じて分類された開発情報がプロジェクトIDによって関連付けられて格納され、
前記入力制御処理部は、プロジェクトIDが入力された場合には、当該プロジェクトIDに関連する開発情報を判定対象として、プログラムの脆弱性を判定する請求項1乃至9のいずれかに記載の脆弱性判定装置。
【請求項11】
所定種類の開発情報について脆弱性を判定する場合に、当該判定対象となる開発情報の種類に関連付けられた種類の開発情報も判定対象に含めるステップと、
当該判定対象の開発情報及び脆弱性情報に基づいて、プログラムの脆弱性を判定するステップを備える脆弱性判定方法。
【請求項12】
前記開発情報の種類は、プログラムの開発段階に応じた種類である請求項11に記載の脆弱性判定方法。
【請求項13】
所定種類の開発情報について脆弱性を判定する場合に、当該判定対象となる開発情報の種類に関連付けられた種類の開発情報も判定対象に含めるステップと、
当該判定対象の開発情報及び脆弱性情報に基づいて、プログラムの脆弱性を判定するステップをコンピュータに実行させる脆弱性判定プログラム。
【請求項14】
前記開発情報の種類は、プログラムの開発段階に応じた種類である請求項13に記載の脆弱性判定プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2010−117887(P2010−117887A)
【公開日】平成22年5月27日(2010.5.27)
【国際特許分類】
【出願番号】特願2008−290689(P2008−290689)
【出願日】平成20年11月13日(2008.11.13)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】