(57)【要約】【課題】特定の開発情報のみによって、プログラムの脆弱性を判定してしまうという問題を解決することができる脆弱性判定装置、脆弱性判定方法及び脆弱性判定プログラムを提供すること【解決手段】本発明にかかる脆弱性判定装置１は、種類に応じて分類された開発情報２１ａ、２１ｂ、２１ｃを、それぞれ関連付けられて格納する開発情報記憶部２０と、脆弱性情報３１を格納する脆弱性情報記憶部３０を備える。また、所定種類の開発情報５０について脆弱性を判定する場合に、当該判定対象となる開発情報５０の種類に関連付けられた種類の開発情報２１ａ、２１ｂ、２１ｃも判定対象に含めて、当該判定対象の開発情報２１ａ、２１ｂ、２１ｃ、５０及び脆弱性情報記憶部３０に格納された脆弱性情報３１に基づいて、プログラムの脆弱性を判定する判定処理部１０を備える。【選択図】図１
2010117887.tif 000002
【特許請求の範囲】
【請求項１】
種類に応じて分類された開発情報を、それぞれ関連付けて格納する開発情報記憶部と、
脆弱性情報を格納する脆弱性情報記憶部と、
所定種類の開発情報について脆弱性を判定する場合に、当該判定対象となる開発情報の種類に関連付けられた種類の開発情報も判定対象に含めて、当該判定対象の開発情報及び前記脆弱性情報記憶部に格納された脆弱性情報に基づいて、プログラムの脆弱性を判定する判定処理部を備えた脆弱性判定装置。
【請求項２】
前記開発情報の種類は、プログラムの開発段階に応じた種類である請求項１に記載の脆弱性判定装置。
【請求項３】
前記判定処理部は、前記判定対象の開発情報について、種類に応じた判定方法によって、プログラムの脆弱性を判定する請求項１又は２に記載の脆弱性判定装置。
【請求項４】
前記脆弱性判定装置は、前記種類のそれぞれに応じた判定方法を決定するルール選択処理部をさらに備えた請求項３に記載の脆弱性判定装置。
【請求項５】
前記脆弱性情報記憶部では、前記脆弱性情報が種類のそれぞれに応じて分類され、
前記判定処理部は、前記判定対象の開発情報について、種類のそれぞれに応じた脆弱性情報に基づいて、プログラムの脆弱性を判定する請求項１乃至４のいずれかに記載の脆弱性判定装置。
【請求項６】
前記脆弱性判定装置は、所定種類の開発情報もしくは所定種類の開発情報を示す情報が入力されたことをトリガーとして、当該所定種類の開発情報に基づいて、判定対象の開発情報を決定する請求項１乃至５のいずれかに記載の脆弱性判定装置。
【請求項７】
前記脆弱性判定装置は、前記判定処理部から出力された脆弱性の判定結果を取得し、当該判定結果を所定の出力先に出力する出力処理部をさらに備えた請求項１乃至６のいずれかに記載の脆弱性判定装置。
【請求項８】
前記脆弱性判定装置は、脆弱性に対する対策案を示す情報である対策案情報が格納された脆弱性対策情報記憶部と、
前記対策案情報を前記脆弱性対策情報記憶部から取得し、当該対策案情報を前記出力処理部に出力する脆弱性対策情報処理部をさらに備え、
前記出力処理部は、前記判定結果に当該対策案情報を付加して出力する請求項７に記載の脆弱性判定装置。
【請求項９】
前記脆弱性判定装置は、ネットワークを介して脆弱性に関する情報を取得し、当該情報から脆弱性情報を作成して、脆弱性情報記憶部に格納する脆弱性情報処理部をさらに有する請求項１乃至８のいずれかに記載の脆弱性判定装置。
【請求項１０】
前記開発情報記憶部は、前記種類に応じて分類された開発情報がプロジェクトＩＤによって関連付けられて格納され、
前記入力制御処理部は、プロジェクトＩＤが入力された場合には、当該プロジェクトＩＤに関連する開発情報を判定対象として、プログラムの脆弱性を判定する請求項１乃至９のいずれかに記載の脆弱性判定装置。
【請求項１１】
所定種類の開発情報について脆弱性を判定する場合に、当該判定対象となる開発情報の種類に関連付けられた種類の開発情報も判定対象に含めるステップと、
当該判定対象の開発情報及び脆弱性情報に基づいて、プログラムの脆弱性を判定するステップを備える脆弱性判定方法。
【請求項１２】
前記開発情報の種類は、プログラムの開発段階に応じた種類である請求項１１に記載の脆弱性判定方法。
【請求項１３】
所定種類の開発情報について脆弱性を判定する場合に、当該判定対象となる開発情報の種類に関連付けられた種類の開発情報も判定対象に含めるステップと、
当該判定対象の開発情報及び脆弱性情報に基づいて、プログラムの脆弱性を判定するステップをコンピュータに実行させる脆弱性判定プログラム。
【請求項１４】
前記開発情報の種類は、プログラムの開発段階に応じた種類である請求項１３に記載の脆弱性判定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、脆弱性判定装置、脆弱性判定方法及び脆弱性判定プログラムに関するものであり、特にプログラムの脆弱性を判定する脆弱性判定装置、脆弱性判定方法及び脆弱性判定プログラムに関する。
【背景技術】
【０００２】
脆弱性を判定するシステムは、脆弱性を判定するプログラムに関連するキーワードを入力することによって、脆弱性の判定を実行する。例えば、ユーザが脆弱性の判定対象となるプログラムをＪＡＶＡ（登録商標）で開発している場合には、脆弱性判定システムは、このプログラムの実行時に使用されるＪＲＥ（Java Runtime Environment）（登録商標）をキーワードとして入力し、プログラムの脆弱性の有無を検索する。
非特許文献１に記載の脆弱性を検索するシステムは、ユーザがプログラムの脆弱性を判定する場合には、プログラムに関連する所望のキーワードを入力し、入力したキーワードに該当する脆弱性情報を、脆弱性情報が格納されているデータベースから検索して表示する。
【０００３】
また、特許文献１には、権限昇格、ＤｏＳ（Denial of Service attack）、ＸＳＳ（Cross Site Scripting）及びＨＴＴＰ（Hyper Text Transfer Protocol）等の脆弱性キーワードＤＢ（DataBase）に格納された脆弱性に関連するキーワード、並びにＯＳ（Operating System）名、ＨＷ（HardWare）名、使用ＳＷ（SoftWare）名及び使用ライブラリ名等の製品ＤＢに格納された製品に関連するキーワードを用いて、調査対象とすべき脆弱性情報を効果的に提示する技術が開示されている。特許文献１に記載の装置においても、ユーザがプログラムの脆弱性を判定する場合には、非特許文献１と同様に、プログラムに関連するキーワードを入力し、入力されたキーワードによって、提示された脆弱性情報を検索することによって行うことができる。
【０００４】
一方、ソフトウェア開発もしくはシステム開発において、プログラムを作成する場合には、開発段階のそれぞれにおいて、開発ドキュメント、ソースコード及びプログラム等の開発情報が作成される。
しかし、上述のような、キーワードを入力することによって脆弱性を判定する場合は、ユーザの検索のしかたによっては、特定の開発情報のみに基づいて、プログラムの脆弱性を判定してしまう場合がある。例えば、プログラムで使用しているライブラリ関数について脆弱性を判定するというように、ソースコードから確認できるキーワードのみを使用して脆弱性を判定してしまう場合である。
【０００５】
なお、特許文献２には、ソフトウェア開発において作成される生産物、生産物の変更要因、試験に関わる情報を連携して管理する技術が開示されている。
また、特許文献３には、ネットワークを介して、複数のデータファイルを取得し、取得したデータファイルに対して、所定の切り出しルールと用語の関係記述であるオントロジを利用して、必要な情報を抽出することで、Ｗｅｂ上に公開されている様々な領域のカタログを、自動的に切り出すことを可能とする技術が開示されている。
【０００６】
さらに、特許文献４には、データベースに記録されている脆弱性に関するデータに基づいて、支援ツールを利用して作成した製品のセキュリティ対策の脆弱性を判定することにより、顧客や製品開発関係者が有するセキュリティに関する知識や経験の水準によらずに、脆弱性を判定することができる技術が開示されている。
また、特許文献５には、入力されたＵＲＬ（Uniform Resource Locator）に応じたＷｅｂ（World Wide Web）ページを取得し、取得したＷｅｂページに含まれるリンクとなるＵＲＬに応じたＷｅｂページを取得する処理を繰り返すことにより、公開されている脆弱性情報を幅広く収集することができる技術が開示されている。
【特許文献１】特開２００７−０５８５１４号公報
【特許文献２】特開２００３−１２２５７０号公報
【特許文献３】特開２００４−０６２４４６号公報
【特許文献４】特開２００７−１２２３７２号公報
【特許文献５】特開２００８−１９７８７７号公報
【非特許文献１】独立行政法人情報処理推進機構（IPN）他、JVN iPedia 脆弱性対策情報データベース、[online]、[２００８年１０月２３日検索]、インターネット＜URL:http://jvnd.jvn.jp/＞
【発明の開示】
【発明が解決しようとする課題】
【０００７】
背景技術に記載した技術によって脆弱性を判定する場合には、特定の開発情報のみによって、プログラムの脆弱性を判定してしまうという問題がある。
【０００８】
本発明の目的は、上述したような課題である特定の開発情報のみによって、プログラムの脆弱性を判定してしまうという問題を解決することができる脆弱性判定装置、脆弱性判定方法及び脆弱性判定プログラムを提供することにある。
【課題を解決するための手段】
【０００９】
本発明にかかる脆弱性判定装置は、種類に応じて分類された開発情報を、それぞれ関連付けられて格納する開発情報記憶部と、脆弱性情報を格納する脆弱性情報記憶部と、  所定種類の開発情報について脆弱性を判定する場合に、当該判定対象となる開発情報の種類に関連付けられた種類の開発情報も判定対象に含めて、当該判定対象の開発情報及び前記脆弱性情報記憶部に格納された脆弱性情報に基づいて、プログラムの脆弱性を判定する判定処理部を備えたものである。
【発明の効果】
【００１０】
本発明により、特定の開発情報のみによって、プログラムの脆弱性を判定してしまうという問題を解決することができる脆弱性判定装置、脆弱性判定方法及び脆弱性判定プログラムを提供することができる。
【発明を実施するための最良の形態】
【００１１】
発明の実施の形態１．
図１は、本発明の実施の形態１にかかる脆弱性判定装置の概略を示すブロック図である。
ここで、本発明の実施の形態における脆弱性とは 、プログラムの適切な実行を阻害する要因をいう。例えば、プログラムが動作するハードウェア、プログラムが動作するＯＳ、プログラム自身が有している欠陥、バグ、誤設定及び仕様上の問題点等であり、プログラムの誤動作や不正アクセスによるシステムの乗っ取り、情報漏洩及びデータの改ざん等の要因となるものをいう。
【００１２】
脆弱性判定装置１は、判定処理部１０、開発情報記憶部２０及び脆弱性情報記憶部３０を備えている。
判定処理部１０は、脆弱性情報記憶部３０に格納されている脆弱性情報を用いて、開発情報について脆弱性を判定する。
【００１３】
開発情報記憶部２０は、開発情報レコード２１を含む、１つ又は複数の開発情報レコードが格納されている。開発情報レコード２１は、開発情報２１ａ、２１ｂ、２１ｃが含まれる。開発情報２１ａ、２１ｂ、２１ｃは、それぞれに１つ又は複数の開発情報を含む。開発情報２１ａ、２１ｂ、２１ｃに含まれる開発情報は、開発情報レコードの単位によって関連付けられている。
【００１４】
ここで、開発情報とは、プログラムの開発に関連する情報である。開発情報は、例えば、開発するプログラムの開発者に関する開発者情報、開発するプログラムの開発する環境及び稼働する環境を示す開発/導入環境情報、開発ドキュメント、ソースコード及び開発したプログラム等の種類に分けられる。
開発者情報２１ａ、２１ｂ、２１ｃは、それぞれに異なる種類の開発情報を含む。開発情報２１ｂは、異なる種類の開発情報２１ａに基づいて作成された開発情報であり、開発情報２１ｃは、異なる種類の開発情報２１ｂに基づいて作成された開発情報である。
脆弱性情報記憶部３０は、脆弱性に関する情報である脆弱性情報３１を含む、１つ又は複数の脆弱性情報が格納されている。
【００１５】
続いて、図１に示す脆弱性判定装置の処理について説明する。
まず、判定処理部１０は、脆弱性を判定する所定種類の開発情報５０の入力を受ける。ここで、開発情報５０は、プログラムの開発情報であり、開発情報レコード２１に関連付けられた開発情報である。また、開発情報５０は、開発情報２１ｃの種類における開発情報である。
次に、判定処理部１０は、開発情報５０の種類と関連する種類の開発情報２１ａ、２１ｂ、２１ｃの開発情報も脆弱性の判定対象に含める。
そして、判定処理部１０は、判定対象とした開発情報２１ａ、２１ｂ、２１ｃの開発情報及び開発情報５０について、脆弱性情報記憶部３０に格納された脆弱性情報に基づいて、脆弱性の判定を行うことにより、プログラムの脆弱性を判定する。
【００１６】
なお、脆弱性判定装置１に入力された開発情報を含めずに、予め開発情報記憶部２０に格納されている開発情報のみを判定対象として、判定処理を実行してもよい。例えば、開発情報５０ではなく、開発情報２１ｃの開発情報を示す情報を判定処理部１０に入力し、開発情報２１ｃに関連する種類の開発情報２１ａ、２１ｂの開発情報を脆弱性の判定対象に含め、開発情報２１ａ、２１ｂ、２１ｃの開発情報について、脆弱性を判定してもよい。
【００１７】
図２は、本発明の実施の形態１にかかる脆弱性判定装置の詳細を示すブロック図である。
脆弱性判定装置１００は、入力制御処理部１１０、ルール選択処理部１２０、判定処理部１３０、開発情報リポジトリ制御処理部１４０、開発情報リポジトリ１４１、脆弱性ＤＢ制御処理部１５０、脆弱性ＤＢ１５１、出力処理部１６０、公開脆弱性情報取得処理部１７０及び脆弱性ＤＢ処理部１８０を備える。
【００１８】
入力制御処理部１１０は、脆弱性の判定対象となる開発情報や脆弱性判定リクエストの入力を処理する。
ルール選択処理部１２０は、脆弱性の判定対象となる開発情報の開発段階のそれぞれに応じた脆弱性情報判定ルールを選択する処理を行う。
判定処理部１３０は、脆弱性情報記憶部１５１に格納されている脆弱性レコードを用いて、開発情報について脆弱性を判定する。
開発情報リポジトリ制御処理部１４０は、開発情報リポジトリ１４１に格納されている開発情報から所望の開発情報を検索して取得する処理、開発情報リポジトリ１４１に所望の開発情報を登録する処理を行う。
【００１９】
脆弱性ＤＢ制御処理部１５０は、脆弱性ＤＢ１５１に格納されている脆弱性レコードから所望の脆弱性レコードを検索して取得する処理、脆弱性ＤＢ１５１に所望の脆弱性レコードを登録する処理を行う。
出力処理部１６０は、脆弱性の判定結果を出力する処理を行う。
公開脆弱性情報取得処理部１７０は、インターネット（登録商標）、イントラネット、電話回線網等の任意のネットワーク２００を介して、公開されている脆弱性に関する情報を取得する処理を行う。
脆弱性ＤＢ処理部１８０は、公開脆弱性情報取得処理部１７０が取得した脆弱性に関する情報から脆弱性ＤＢ１５１に登録するための脆弱性レコード１５２を作成する処理を行う。公開脆弱性情報取得処理部及び脆弱性ＤＢ処理部は、脆弱性情報処理部として機能する。
【００２０】
開発情報リポジトリ１４１は、プロジェクトレコード１４２を含む１つ又は複数のプロジェクトレコードが格納される。プロジェクトレコード１４２は、プロジェクトＩＤ１４２ａ、開発者情報１４２ｂ、開発/導入環境情報１４２ｃ、ドキュメント１４２ｄ、ソースコード１４２ｅ、プログラム１４２ｆ及びキーワード１４２ｇが含まれる。
開発者情報１４２ｂ、開発/導入環境情報１４２ｃ、ドキュメント１４２ｄ、ソースコード１４２ｅ、プログラム１４２ｆ及びキーワード１４２ｇは、それぞれに異なる開発段階の１つ又は複数の開発情報を含む。
【００２１】
なお、開発者情報１４２ｂ、開発/導入環境情報１４２ｃやキーワード１４２ｇのように、プログラムの開発における一般的な生産物でないものは、任意の開発段階における開発情報としてもよい。本実施の形態では、開発者情報１４２ｂが最も上流工程の開発段階であり、開発/導入環境情報１４２ｃ、ドキュメント１４２ｄ、ソースコード１４２ｅ、プログラム１４２ｆ、キーワード１４２ｇと、順番に下流工程の開発段階となる。
開発情報リポジトリ１４１は、開発情報記憶部に相当し、プロジェクトレコード１４２は、開発情報レコードに相当する。
【００２２】
プロジェクトＩＤ１４２ａは、プロジェクトの識別子を示す情報である。プロジェクトＩＤは、ソフトウェアもしくはシステムを開発するプロジェクトの単位で付与されている。つまり、プロジェクトレコード１４２に含まれる開発情報は、プロジェクトＩＤ１４２ａによって関連付けられる。なお、プロジェクトＩＤは、本実施の形態とは異なる任意の単位で付与してもよい。
開発者情報１４２ｂは、開発者の氏名、開発担当内容、メールアドレスや電話番号等の連絡先等のプログラムの開発者に関する情報である。ここでは、開発担当内容とは、例えば、システム開発において、開発者がどの機能もしくはモジュールを担当しているかを示す情報である。なお、開発者情報１４２ｂの構成要素に、開発者のプロジェクトに関わった年数等のスキルや経験を示す情報を加えてもよく、開発者に関する情報であれば、本実施の形態に例示した内容に限られない。
【００２３】
開発/導入環境情報１４２ｃは、開発言語、使用ライブラリ、関連ソフトウェアや開発ツール等のプログラムを開発する環境や、ＯＳ、使用ライブラリや関連システム等の開発したプログラムが稼働する環境を示す情報である。
ドキュメント１４２ｄは、要求仕様書、基本設計書及び詳細設計書等の開発に関連するドキュメント情報である。
ソースコード１４２ｅは、プログラムのソースコードである。
プログラム１４２ｆは、プログラムである。
キーワード１４２ｇは、既に脆弱性の判定において使用された検索キーを示す情報である。キーワード１４２ｇ及び検索キーについては、後に詳述する。
【００２４】
なお、プロジェクトレコード１４２は、上述した開発情報以外の任意の開発情報が追加された構成としてもよく、上述した開発情報から任意の開発情報を除いた構成としてもよく、本実施の形態に例示した構成に限られない。
また、プロジェクトレコード１４２には、開発初期から上述した全ての開発段階の開発情報が格納されていなくてもよく、開発段階に従って逐次開発情報を追加してもよい。
さらに、開発情報リポジトリ１４１に格納されるプロジェクトレコード１４２及び開発情報は、全て同一ディスク上に格納してもよく、異なるディスク上や異なる装置上に分散して格納して、開発情報をリンクする形態としてもよい。例えば、異なるディスク上に開発情報を分散して格納して、プロジェクトＩＤ１４２ａにおいて関連付けて管理してもよく、シンボリックリンクを用いてリンクしてもよい。
【００２５】
脆弱性ＤＢ１５１は、脆弱性レコード１５２を含む１つ又は複数の脆弱性レコードが格納される。脆弱性ＤＢ１５１は、脆弱性情報記憶部に相当し、脆弱性レコード１５２は、脆弱性情報に相当する。
脆弱性レコード１５２には、脆弱性情報の識別子を示す情報である脆弱性情報ＩＤと、脆弱性を判定するときのキーワードとなる脆弱性の対象名や脆弱性の内容、開発するソフトウェアもしくはシステムへの影響度、関連ベンダ及び脆弱性判定の優先順位の情報が含まれる。
【００２６】
脆弱性情報ＩＤは、脆弱性情報を識別する情報である。ＩＤの範囲によってクラス分けを行い、それぞれのクラスを開発情報の開発段階と対応させる。
脆弱性の対象名は、開発情報からプログラムの脆弱性の有無を判定するためのキーワードとなる情報である。例えば、ＤｏＳ（攻撃手法）やＪＲＥ（ＳＷ名）等である。
脆弱性の内容は、対象名が示す脆弱性よりもさらに具体的な情報である。例えば、あるライブラリ関数に脆弱性がある場合には、その関数を用いたソースコードの記述例である。なお、脆弱性の内容から一部の記述を抜き出して、プログラムの脆弱性の有無を判定するためのキーワードとすることもできる。
影響度は、ソフトウェアもしくはシステムへの影響を示した情報であり、任意の段階を設定してもよい。
【００２７】
関連ベンダは、脆弱性が製品等に関するものである場合は、その製品等のベンダ名である。
脆弱性判定の優先順位は、脆弱性を判定する場合の優先順位を示す情報である。例えば、この優先順位は、優先順位の高い脆弱性レコードから脆弱性の判定を行う場合に参照される。また、優先順位は、特定の優先順位の脆弱性レコードまで脆弱性の判定を実行し、それよりも優先順位が低い脆弱性レコードは脆弱性の判定を実行しない場合にも参照される。さらに、この優先順位に基づいた順番によって、判定結果５００で出力される順序を決定してもよい。
なお、脆弱性レコード１５２は、上述した構成要素以外の任意の構成要素が追加された構成としてもよく、上述した構成要素から任意の構成要素を除いた構成としてもよく、本実施の形態に例示した構成に限られない。
【００２８】
続いて、図２に示す脆弱性判定装置の処理について説明する。
図３のフローチャートを用いて、図２に示す脆弱性判定装置における脆弱性に関する情報を取得する処理について説明する。
まず、公開脆弱性情報取得処理部１７０は、ネットワークを介して、公開されている脆弱性に関する情報を取得する（Ｓ７１０）。
【００２９】
ここで、公開されている脆弱性に関する情報の取得処理は、定期的もしくは自動的に実行してもよく、マニュアル操作により実行してもよい。
また、公開されている脆弱性に関する情報は、インターネット（登録商標）上のサイトから取得してもよく、社内に設置されたＰＣ（Personal Computer）、サーバ等の情報処理装置からネットワークを介して取得してもよい。さらに、脆弱性に関する情報は、脆弱性に関する情報が記述された電子メールを受信することにより取得してもよく、脆弱性に関する情報が記述された電子メールをＰＣ（Personal Computer）、メールサーバ等の情報処理装置から取得するようにしてもよい。その他に、公開脆弱性情報取得処理部１７０に出版物から情報を取り込む機能を設け、出版物から脆弱性に関する情報を取得してもよく、キーボードもしくはマウス等の入力装置から入力された脆弱性に関する情報を取得してもよい。
【００３０】
次に、脆弱性ＤＢ処理部１８０は、取得した脆弱性に関する情報から、脆弱性レコード１５２を作成し、脆弱性ＤＢ制御処理部１５０に出力する。脆弱性ＤＢ制御処理部１５０は、入力された脆弱性レコード１５２を脆弱性ＤＢ１５１に格納する（Ｓ７２０）。
【００３１】
続いて、図４のフローチャートを用いて、図２に示す脆弱性判定装置による脆弱性を判定する処理について説明する。
まず、開発情報リポジトリ１４１に所定の開発情報を登録する場合、入力制御処理部１１０は、登録する開発情報３００の入力を受ける。ここで、開発情報３００は、プロジェクトレコード１４２に登録する開発情報である。
一方、開発情報リポジトリ１４１に開発情報を登録せず脆弱性の判定を行う場合、入力制御処理部１１０は、脆弱性判定リクエスト４００の入力を受ける。脆弱性判定リクエスト４００には、脆弱性の判定を行おうとするプロジェクトのプロジェクトＩＤが含まれている。
【００３２】
入力制御処理部１１０は、入力された情報に基づいて脆弱性の判定対象を示す情報である判定対象リストを作成する（Ｓ８１０）。
ここで、ステップＳ８１０における処理の詳細な処理について、図５のフローチャートを用いて説明する。
まず、入力制御処理部１１０は、入力された開発情報３００、もしくは脆弱性判定リクエスト４００を取得する（Ｓ８２１）。
【００３３】
次に、開発情報リポジトリに登録する開発情報３００が入力された場合には、入力した開発情報の開発段階を含めた上流工程の開発段階の開発情報を判定対象として決定する（Ｓ８２２、Ｓ８２３）。例えば、開発情報３００として、ソースコードを登録する場合には、開発者情報１４２ｂ、開発/導入環境情報１４２ｃ、ドキュメント１４２ｄ及びソースコード１４２ｅの開発情報を判定対象とする。
なお、登録する開発情報の開発段階における開発情報のみを判定対象として決定してもよく、登録する開発情報より１つだけ上流工程の開発段階までの開発情報を判定対象とする形態としてもよく、判定対象を決定する処理は、本実施の形態に例示した処理に限られない。
【００３４】
一方、脆弱性判定リクエスト４００が入力された場合、入力制御処理部１１０は、脆弱性判定リクエスト４００に含まれるプロジェクトＩＤに関連付けられた全ての開発段階の開発情報を判定対象として決定する（Ｓ８２２、Ｓ８２４）。つまり、指定したプロジェクトＩＤ１４２ａが格納されたプロジェクトレコード１４２の全ての開発情報が判定対象となる。
なお、脆弱性判定リクエスト４００は、所定の開発情報を指定できるようにして、所定の開発情報の開発段階を含めた上流工程の開発段階の開発情報を判定対象として決定してもよく、所定の開発情報を指定できるようにし、所定の開発情報の開発段階における開発情報のみを判定対象としてもよく、判定対象の決定処理は、本実施の形態に例示した処理に限られない。
【００３５】
次に、入力制御処理部１１０は、判定対象を決定したら、その決定した判定対象に基づいて判定対象リストを作成する（Ｓ８２５）。
図６に判定対象リストの例を示す。図６は、開発情報３００として、ソースコード（function.c）が入力された場合に、作成される判定対象リストを例示している。
判定対象リストには、判定対象となるプロジェクトＩＤ、入力された開発情報の開発段階、それぞれの開発段階における開発情報を判定対象とするか否かの情報が含まれる。判定対象とする場合には「Ｙ」が、判定対象外とする場合には「Ｎ」で示されている。
図６に示すように、ソースコードを含めた上流工程の開発段階の開発情報が判定対象として決定される。
【００３６】
なお、プロジェクトＩＤ及び開発段階は、ソースコード（function.c）を入力制御処理部１１０に入力するときに、同時に入力するようにしてもよく、入力されたソースコード（function.c）に基づいて入力制御処理部１１０が導き出すようにしてもよい。例えば、プロジェクトＩＤ及び開発段階は、開発情報リポジトリ１４１を参照することによって、入力されたソースコードに基づいて導き出してもよく、開発情報のそれぞれに対応するプロジェクトＩＤ及び開発段階を示す情報を予め任意の記憶装置もしくは入力制御処理部１１０内に用意しておき、その情報に基づいて導き出してもよい。
【００３７】
次に、ルール選択処理部１２０は、入力制御処理部１１０において作成された判定対象リストと、開発段階のそれぞれにおける脆弱性の判定方法を定義した脆弱性情報判定ルールに基づいて、脆弱性情報判定ルールに示される情報を判定対象に限定した脆弱性情報判定ルールリストを作成する（Ｓ８２５）。
ここで、判定対象リストは、入力制御処理部１１０からルール選択処理部１２０に出力するようにしてもよく、脆弱性判定装置１００に設けられた任意の記憶装置に入力制御処理部１１０が格納し、ルール選択処理部１２０が参照するようにしてもよい。
また、脆弱性情報判定ルールは、ルール選択処理部１２０に格納してもよく、脆弱性判定装置１００に設けられた任意の記憶装置に格納し、ルール選択処理部１２０が参照してもよい。
【００３８】
ここで、図７に示す脆弱性情報判定ルールについて説明する。
脆弱性情報判定ルールは、判定対象、対応脆弱性情報、検索キー、検索方法によって特定される。
判定対象には、判定対象となりうる開発段階がそれぞれ示されている。
対応脆弱性情報には、脆弱性ＤＢ１５１に格納された脆弱性レコードのうちから脆弱性の判定に使用する脆弱性レコードが、開発段階のそれぞれに対応して関連付けられている。なお、図７におけるＩＤとは、脆弱性情報ＩＤを示す。
検索キーは、開発情報の脆弱性を判定するときに用いられるキーワードである。つまり、脆弱性の判定は、この検索キーで開発情報を検索することで行う。
検索方法は、検索キーに示されるキーワードによって、開発情報を検索するときの検索方法を示す。
【００３９】
脆弱性情報判定ルールの開発者情報に関する項目は、ＩＤ１００００からＩＤ１９９９９までの脆弱性レコードに含まれる対象名をキーワードとして、開発者情報を検索して脆弱性を判定することを示している。例えば、経験の浅い開発者が行ってしまいやすいコーディングミスに関する脆弱性レコードがあり、脆弱性の対象名が「１年」の経験年数である場合は、キーワード「１年」に一致する文字列を開発者情報１４２ａから検索する。
【００４０】
脆弱性情報判定ルールの開発/稼働環境情報に関する項目は、ＩＤ２００００からＩＤ２９９９９までの脆弱性レコードに含まれる対象名をキーワードとして、開発/稼働環境情報を検索すること示している。例えば、Ｌｉｎｕｘ（登録商標）に関する脆弱性レコードがあり、脆弱性の対象名が「Ｌｉｎｕｘ」（登録商標）である場合は、キーワード「Ｌｉｎｕｘ」（登録商標）に一致する文字列を開発/稼働環境情報１４２ｂから検索する。
ドキュメントについても、開発者情報、開発/稼働環境と同様に、対象名によってキーワード検索が行われる。
【００４１】
脆弱性情報判定ルールのソースコードに関する項目は、ＩＤ４００００からＩＤ４９９９９までの脆弱性レコードに含まれる内容から抜き出したパターンをキーワードとして、ソースコードから一致するパターンを検索することを示している。例えば、脆弱性の内容としてソースコードの記述例がある場合に、ソースコード１４２ｅから、ソースコードの記述例において変数等の一部の記述がどのようになっていてもよい場合に、前後の記述のパターンの一致によって検索することができる。
【００４２】
脆弱性情報判定ルールのプログラムに関する項目は、検索キーが示されていないが、これは既存のウィルス検索ソフトウェアによって検索されることを示している。この項目のＡＶ（Anti Virus）シグネチャとは、ウィルスシグネチャのことである。プログラム１４２ｅから、ウィルスシグネチャと一致するパターンのコードを含むプログラムを検索することを示している。
【００４３】
脆弱性情報判定ルールのキーワードに関する項目は、検索キーが対象名となっているが、ここでの対象名は、キーワード１４２ｇに含まれる既に検索を行った対象名のことである。ここで、キーワード１４２ｇには、脆弱性の判定において使用された検索キーが蓄積されている。
脆弱性判定リクエスト４００によって、キーワード１４２ｇが判定対象とされた場合は、他の開発段階とは異なる検索が行われる。具体的には、キーワード１４２ｇに含まれる既に検索を行った対象名をキーワードとして、全ての脆弱性ＤＢ１５１に格納された脆弱性レコードを検索する。
【００４４】
これにより、一度検索した対象名を含む脆弱性レコードが更新された場合であっても、最新の脆弱性レコードによる判定結果を得ることができる。また、キーワード１４２ｇに、既に検索を行った検索キーと、その検索キーを有する開発情報を示す情報を関連付けて含めておくことで、判定結果に対象となる開発情報を含めることができる。
なお、脆弱性情報判定ルールにおける、それぞれの判定対象物に対して示されている対応脆弱性情報、検索キー及び検索方法は、本実施の形態と異なるものを自由に指定することができ、図７において例示されたものに限られない。
【００４５】
図６に示す判定対象リストと、図７に示す脆弱性情報判定ルールに基づいて作成される脆弱性情報判定ルールリストを図８に示す。
図８に示す脆弱性情報判定ルールリストについては、図７に示す脆弱性情報判定ルールに示される情報を、図６に示す判定対象リストにおいて判定対象とされた判定対象に限定したものであり、格納されている情報は図７に示す脆弱性情報判定ルールと同様であるとため、説明を省略する。
【００４６】
次に、判定処理部１３０は、脆弱性情報判定ルールリストに基づいて、判定対象の開発情報について、脆弱性を判定する（Ｓ８３０）。
ここで、ステップＳ８３０における処理の詳細な動作について、図９のフローチャートを用いて説明する。ここでは、図８に示す脆弱性情報判定ルールリストに基づいて、ステップＳ８３０の処理を行う場合について例示する。
まず、判定処理部１３０は、作成された脆弱性情報判定ルールリストを取得する（Ｓ８３１）。ここで、脆弱性情報判定ルールリストは、ルール選択処理部１２０から判定処理部１３０に出力してもよく、脆弱性判定装置１００に設けられた任意の記憶装置にルール選択処理部１２０が格納し、判定処理部１３０が参照するようにしてもよい。
【００４７】
次に、判定処理部１３０は、脆弱性ＤＢ１５１から脆弱性ＤＢ制御処理部１５０を介して、脆弱性情報判定ルールリストが示す開発者情報１４２ｂに対応する脆弱性レコード（ＩＤ１００００〜ＩＤ１９９９９）を取得し、開発情報リポジトリ１４１から開発情報リポジトリ制御処理部１４０を介して、開発者情報１４２ｂの開発情報を取得する。そして、取得した脆弱性レコードの検索キーによって、開発者情報を検索する（Ｓ８３２）。
そして、ステップＳ８３２による検索結果を出力処理部１６０に出力する（Ｓ８３３）。
【００４８】
次に、開発情報リポジトリの判定対象の全ての検索が終了していない場合は、再び検索が行われる（Ｓ８３４）。
図８に示す脆弱性情報判定ルールリストは、ソースコードまでの開発段階の開発情報を判定対象としているため、再び開発/稼働環境情報１４２ｃについて、検索が行われ、検索結果が出力処理部１６０に出力される（Ｓ８３２、Ｓ８３３）。その後も、図８に示す脆弱性情報判定ルールリストが示す判定対象の開発段階の開発情報であるドキュメント１４２ｄ及びソースコード１４２ｅについて検索が行われる（Ｓ８３２、Ｓ８３３、Ｓ８３４）。
【００４９】
そして、ソースコード１４２ｅまで検索が終了すると、図８に示す脆弱性情報判定ルールリストに示す全ての判定対象の開発段階の開発情報についての検索が終了するため、脆弱性の判定を終了する（Ｓ８３４）。
ここで、本実施の形態では、上流工程の開発段階から順番に検索をしているが、検索の順序は本実施の形態に例示したものに限られない。例えば、下流工程の開発段階から検索してもよく、一度に判定対象の開発情報及び脆弱性レコードを全て取得して検索を行うようにしてもよい。
【００５０】
なお、開発情報３００は、入力制御処理部１１０から開発情報リポジトリ制御処理部１４０に出力し、開発情報リポジトリ制御処理部１４０によって開発情報リポジトリ１４１に登録した後に、ステップＳ８３０による脆弱性の判定を行うことで、判定対象に含めることができる。また、開発情報３００は、判定処理部１３０にて脆弱性の判定を行った後に、開発情報リポジトリ１４１に登録するようにしてもよい。
【００５１】
次に、出力処理部１６０は、判定処理部１３０から出力された判定結果を出力する（Ｓ８４０）。
判定結果の出力である判定結果５００の内容は、プロジェクトＩＤ、開発情報名、検索キーや脆弱性の内容等の開発情報名、開発情報や脆弱性レコードに含まれる情報等を自由に組み合わせた情報を出力することができる。
また、ここでの出力は、表示装置に表示してもよく、ファイルに出力してもよく、出力処理部１６０に、情報共有のためのＷｅｂコンテンツ作成用データを含めておき、Ｗｅｂコンテンツの形式で出力してもよい。さらに、出力処理部１６０に、関係者の連絡先を含めておき、メールを送信する形式で出力してもよい。
【００５２】
以上のように、本発明の実施の形態１にかかる脆弱性判定装置によれば、所定種類の開発情報について脆弱性を判定する場合に、この開発情報の種類に関連付けられた種類の開発情報も脆弱性の判定対象に含めることができるため、特定の開発情報のみによって、プログラムの脆弱性を判定してしまうという問題を解決することができる。
これによりプログラムに関係する開発情報について、効率的に脆弱性を判定することができ、脆弱性の判定を迅速に行うことができる。
また、プログラムの開発の初期段階においても、タイムリーに脆弱性を判定することができ、セキュアな開発をすることができる。
【００５３】
発明の実施の形態２．
図１０は、本発明の実施の形態２にかかる脆弱性判定装置の詳細を示すブロック図である。
なお、本発明の実施の形態２にかかる脆弱性判定装置１００の全体構成は、図１に示す実施の形態１にかかる脆弱性判定装置と比較して、脆弱性対策ＤＢ処理部１９０及び脆弱性対策ＤＢ１９１をさらに備える点が異なる。
脆弱性ＤＢ処理部１９０は、脆弱性対策ＤＢ１９１から、脆弱性に対する対策案を示す情報を取得する処理を行う。脆弱性ＤＢ処理部は、脆弱性対策情報処理部として機能する。
脆弱性対策ＤＢ１９１は、脆弱性に対する対策案を示す情報が格納されている。脆弱性対策ＤＢは、脆弱性対策情報記憶部に相当する。
脆弱性ＤＢ処理部１９０、脆弱性対策ＤＢ１９１以外の構成要素については、実施の形態１と同様であるため、説明を省略する。
【００５４】
図１１のフローチャートを用いて、本発明の実施の形態２にかかる脆弱性判定装置における脆弱性に関する情報を取得する処理について説明する。
ここで、図１１に示すステップＳ８１０、Ｓ８２０、Ｓ８３０における処理については、実施の形態１と同様であるため、説明を省略する。
【００５５】
本実施の形態では、判定処理部１３０が脆弱性の判定を行い、判定処理部１３０が出力した判定結果を出力処理部１６０が取得したときに、脆弱性対策ＤＢ処理部１９０は、判定結果において示された脆弱性に対する対策案を示す情報を、脆弱性ＤＢ１９１から検索して取得し、対策案を示す情報を出力処理部１６０に出力する。
そして、出力処理部１６０は、脆弱性対策ＤＢ処理部１９０が出力した対策案を示す情報を取得し、対策案を示す情報を付加して判定結果５００を出力する（Ｓ８５０）。
以上のように、本発明の実施の形態２にかかる脆弱性判定装置によれば、脆弱性の判定結果と併せて、脆弱性に対する対策案も提示することができる。
【００５６】
以上に説明した本発明にかかる脆弱性判定装置は、上述の実施の形態の機能を実現するプログラムを記憶した記憶媒体をシステムもしくは装置に供給し、システムあるいは装置の有するコンピュータ又はＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）がこのプログラムを実行することによって、構成することが可能である。
また、このプログラムは様々な種類の記憶媒体に格納することが可能であり、また、通信媒体を介して伝達されることが可能である。ここで、記憶媒体には、例えば、フレキシブルディスク、ハードディスク、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ（Compact Disk Read Only Memory）、ＤＶＤ（Digital Versatile Disk）、ＢＤ（Blu-ray Disc）、ＲＯＭ（Read Only Memory）カートリッジ、バッテリバックアップ付きＲＡＭ（Random Access Memory）メモリカートリッジ、フラッシュメモリカートリッジ、不揮発性ＲＡＭカートリッジを含む。また、通信媒体には、電話回線の有線通信媒体、マイクロ波回線の無線通信媒体を含み、インターネット（登録商標）も含まれる。
【００５７】
また、コンピュータが上述の実施の形態の機能を実現するプログラムを実行することにより、上述の実施の形態の機能が実現されるだけではなく、このプログラムの指示に基づき、コンピュータ上で稼動しているＯＳ（Operating System）もしくはアプリケーションソフトと共同して上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
さらに、このプログラムの処理の全てもしくは一部がコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットにより行われて上述の実施の形態の機能が実現される場合も、発明の実施の形態に含まれる。
【図面の簡単な説明】
【００５８】
【図１】本発明の実施の形態１にかかる脆弱性判定装置の概略を示すブロック図である。
【図２】本発明の実施の形態１にかかる脆弱性判定装置の詳細を示すブロック図である。
【図３】図２に示す脆弱性判定装置における脆弱性に関する情報を取得する処理を示すフローチャートである。
【図４】図２に示す脆弱性判定装置における脆弱性を判定する処理を示すフローチャートである。
【図５】図２に示す脆弱性判定装置における判定対象リストを作成する処理の詳細な動作を示すフローチャートである。
【図６】本発明の実施の形態１にかかる判定対象リストの例を示す図である。
【図７】本発明の実施の形態１にかかる脆弱性情報判定ルールを示す図である。
【図８】本発明の実施の形態１にかかる脆弱性情報判定ルールリストを示す図である。
【図９】図２に示す脆弱性判定装置における脆弱性を判定する処理の詳細な動作を示すフローチャートである。
【図１０】本発明の実施の形態２にかかる脆弱性判定装置の詳細を示すブロック図である。
【図１１】図１０に示す脆弱性判定装置における脆弱性を判定する処理を示すフローチャートである。
【符号の説明】
【００５９】
１、１００    脆弱性判定装置
１０    判定処理部
２０    開発情報記憶部
２１    開発情報レコード
３０    脆弱性情報記憶部
３１    脆弱性情報
５０    開発情報
１１０    入力制御処理部
１２０    ルール選択処理部
１３０    判定処理部
１４０    開発情報リポジトリ制御処理部
１４１    開発情報リポジトリ
１４２    プロジェクトレコード
１５０    脆弱性ＤＢ制御処理部
１５１    脆弱性ＤＢ
１５２    脆弱性レコード
１６０    出力処理部
１７０    公開脆弱性情報取得処理部
１８０    脆弱性ＤＢ処理部
１９０    脆弱性対策ＤＢ処理部
１９１    脆弱性対策ＤＢ
２００    ネットワーク
３００    開発情報
４００    脆弱性判定リクエスト
５００    判定結果
【図１】
2010117887.tif 000003
【図２】
2010117887.tif 000004
【図３】
2010117887.tif 000005
【図４】
2010117887.tif 000006
【図５】
2010117887.tif 000007
【図６】
2010117887.tif 000008
【図７】
2010117887.tif 000009
【図８】
2010117887.tif 000010
【図９】
2010117887.tif 000011
【図１０】
2010117887.tif 000012
【図１１】
2010117887.tif 000013