AVIP
[脆弱性影響度]で述べているように、NVDの脆弱性情報は人による利用が主立ったものとなっています。検索/取得することが可能な脆弱性情報はHTMLで記述されたもののみであり、またXMLファイルで提供される情報は年別にまとめられた非常にサイズの大きなものとなっているため、日々の脆弱性影響判断への利用が困難となっています。そうした問題を解決するため、NVDが提供している脆弱性情報をXMLファイルで検索/取得するWeb API“AVIP(Automatic Vulnerability Information Provider)”を開発しました。AVIPへは[http://avip.cipher.risk.tsukuba.ac.jp/]でアクセス可能です。
動作概要
AVIPの動作概要は、右図のようになっています。まずあらかじめ、管理者側ではNVDのXMLファイルをダウンロードし、そこに含まれる脆弱性情報をデータベースに格納しておきます。このデータベースの更新は毎日自動で行われています。ユーザがAVIPを利用する際には、リクエストを送信します。AVIPは送られてきたリクエストから、それに適合する脆弱性情報をデータベースから取り出し、1つのXMLファイルにしてユーザに返します。
レスポンスXML
AVIPはNVDのXMLファイルを情報源としているため、AVIPによって提供される脆弱性情報の内容はNVDに準拠しています。ただし、脆弱性に関する説明や対策方法などのテキストやリファレンスなど、脆弱性影響判断の自動化に不要な情報は省略されています。レスポンスとなるXMLの内容は以下の通りです。なお、各要素の詳細については[NVD XML Feed Documentation]を参照して下さい。
要素名 | 直下子要素 | 概説 |
vuln_list | entry | ルート要素 |
entry | name, published, modified,severity, cvss, loss_types,
vuln_types, range, vuln_softs |
脆弱性情報エントリ(複数) |
name | - | CVE番号 |
published | - | 公開年月日 |
modified | - | 更新年月日 |
severity | - | 深刻度 |
cvss | cvss_version, cvss_vector,cvss_base_score, cvss_impact_subscore,
cvss_exploit_subscore |
CVSSに関する情報 |
loss_types | avail, conf, int, sec_prot | 脆弱性による損失の種類 |
vuln_types | access, input, design, exception,env, config, race, other | 脆弱性の種類 |
range | local, local_network, network, usr_init | 攻撃元となりうる範囲 |
vuln_softs | vuln_soft | 該当ソフトウェア情報群 |
vuln_soft | vendor, product, version | 該当ソフトウェア情報(複数) |
リクエスト
AVIPはRESTインタフェースであり、URLにてリクエストのパラメタを指定します。基本となるURL”http://avip.cipher.risk.tsukuba.ac.jp/vulns?” に続けてリクエストパラメタを指定することでリクエストが完成し、検索のキーは「CVE番号」「公開/更新年月日」「ベンダ名」「プロダクト名(バージョン)」の4つに大別されます。リクエストパラメタの詳細を以下の表に示します。
検索キー | リクエストパラメタ | 説明 |
CVE番号 | cve={CVE番号} | CVE番号の一致する脆弱性情報を返す。 |
公開/更新年月日 | p_or_m={p|m}&date={yyyy-mm-dd}&
b_or_a={b|a} |
pはpublished、mはmodifiedに対して検索を行う。bはdate以前、aはdate以降に情報を絞り込む。 |
ベンダ名 | match={full|part|front|rear}&vendor={ベンダ名} | matchで一致パターンの指定を行う(fullで完全一致、partで部分一致、
frontで前方一致、rearで後方一致)。 |
プロダクト名(+バージョン) | match={full|part|front|rear}&product={プロダクト名}&
{&version={バージョン}}? |
ベンダ名を用いた検索と同様。バージョンの指定は任意で、未指定の場合は
全てのバージョンを対象として脆弱性情報を返す。 |
AVIPの応用例
AVIPで取得した脆弱性情報のXMLファイルを利用してネットワークシステムの脆弱性影響度を自動的に評価するツール(Vulnerability-effect Assessment ツール、以降VAツール)を試作しました。
VAツールの動作概要は右図のようになります。ユーザはまず、モデルで表現されたネットワークシステムのデータ(XMLファイル)をVAツールに入力します。VAツールはそのXMLに含まれているプロダクト名ごとにAVIPへのリクエストを送信します。そうして取得した脆弱性情報のXMLファイル全てに対し、各エントリ毎の<cvss_vector>(基本評価基準)を参照し、[脆弱性影響度]で提案した評価手法を用いてCVSS環境値を算出します。最終的に、算出した環境値の中の最大値を「そのネットワークシステムにおける脆弱性影響度」として出力します。
なお、CVSSでは脆弱性単体がシステムに与える影響度の算出が可能となっていますが、管理者の観点では、システムが複数の脆弱性を抱える場合における全体の影響を知ることが必要であり、これはCVSSでは提供され得ません。したがって、このVAツールでは算出したCVSS環境値の中の最大値をシステム全体の影響度としましたが、これに関してはさらに検討する余地を残しています。
現在の脆弱性検査は、ネットワークシステムの外部から行う場合と内部から行う場合が考えられますが、それぞれ問題を抱えています。まず外部から行う場合、アクセス制御により、外部からアクセスが可能な一部の機器のみを対象とした検査になってしまい、ネットワークシステム全体を検査することが不可能となっています。また内部から行う場合においても、ネットワークのセグメント毎に検査機器を接続しなおす必要があり、非常に労力のかかるものとなっています。以上の事を踏まえ、このVAツールには、大きく3つのメリットがあります。
- 実機への接続が不要
- 設計時に検査可能
- ネットワークシステム全体を検査可能
まず、ネットワークシステムの構成情報が記述されたXMLファイルを入力として用いるため、実機への接続が不要です。すなわち、実機で構成されたネットワークシステムへの接続を行わないので、モデルを用いてネットワークシステムの設計を行う際に、設計段階において、そのネットワークシステムの脆弱性検査が可能となります。さらに、アクセス制御の影響を受けること無くネットワークシステム全体の検査が可能です。