IPA提供のツールを活用して企業が留意すべきセキュリティについて学ぶ連載の8回目。JVN iPediaが公開する脆弱性対策情報を取得できるWeb APIの「MyJVN API」の使い方と活用のヒントを紹介します。
前回、国内で利用されているソフトウェアやOSを中心とした脆弱性対策情報を収集し、公開しているJVN iPediaについて説明しました。このJVN iPediaの情報は「MyJVN脆弱性対策情報収集ツール」で確認することができます。
「MyJVN脆弱性対策情報収集ツール」ではフィルタリング設定によって、情報を表示するベンダーやソフトウェアを限定することができるので、自社にとって必要な情報だけを確認するといったことができます。ただし、MyJVN脆弱性対策情報収集ツールはFlashベースのアプリケーションであり、Webサイトの1ページであるため、ブックマークやハイパーリンクを貼っておくという手段で情報の確認はできても社内ネットワークなどの自社内コンテンツの一部として情報を取り込むことができません。またフィルタリングはアクセスした個々のPC端末に記録されるため、複数名が脆弱性対策情報を共有しようという用途では、それぞれが全く同一のフィルタリングを設定しなくてはならないなどの手間が発生します。
こうした問題に対して、必要な脆弱性対策情報を抽出し、データとして取得する有効な手段として、今回ご紹介する「MyJVN API」があります。
MyJVN APIは、Web APIと呼ばれる仕組みを使って脆弱性対策情報をデータの形で提供します。Web APIというのは、あるURLに対してGET形式の引数(URL末尾に?以降の引数を付けて呼び出すデータ送信方法)を指定し、サーバ側のプログラムが処理した結果のデータをXMLなどのデータ形式で取得する仕組みです。GoogleやAmazonなど多くの企業や団体がWeb APIを公開しています。身近な例ではPCやスマートフォンからTwitterでのツイートを取得したり発言したりできるツール類にもTwitterが公開するWeb APIが使用されています。
Web APIから受信する結果は、XMLやJSONといったプログラムから利用できるデータ形式になります。Web APIというのは、URLを使ったデータベースへのクエリであり、その結果のデータは自由に加工して利用できるものだと考えればいいでしょう。
したがってMyJVN脆弱性対策情報収集ツールのように、そのまま情報を目に見える一覧形式では確認できませんが、独自のプログラムを作成することによって、受信したデータを整形して自社サイト内などに掲載することができます。社内でシステム管理者専用のポータルサイトなどを作成し、そこに自由な形で脆弱性対策情報を掲載するという事もできますし、その項目を担当者がチェックしたかの確認ツールなども制作できます。また取得したデータによって対象を振り分け、関係者にメールで通知するシステムといったものが作れるようになります
このようにMyJVN APIを利用することで、JVN iPediaが保持している脆弱性対策情報を自分たちが必要とする形に加工して、アプリケーションを自由に作成できるようになります。MyJVN APIはデータ形式にXMLを採用していますから、JavaScriptあるいはPHP、Perl、Ruby、JavaといったWeb開発系言語でプログラムを作成することができます。十分なプログラミングスキルがあれば、Microsoft C#やVisual Basicなどの言語を使ってWindowsネイティブ、Windows Phoneに対応したアプリケーションを作ることもできます。
MyJVN APIへのリクエストはGET形式だけでなくPOST形式も利用できます。特にPOST形式にしてデータリクエストをURLと分離しなくてはならないというセキュリティ上の秘匿性はありませんので、トラフィックを抑えることも視野に入れ、GET形式でリクエストして問題ないでしょう。レスポンスは文字コードUTF-8のXMLで返ってきます。
MyJVN APIはデータのフィルタリング種別によって5種類のAPIが用意されています(表)。
メソッド名 | 概要 |
---|---|
getVendorList | フィルタリング条件に当てはまるベンダー名(製品開発者)リストを取得します。 |
getProductList | フィルタリング条件に当てはまる製品名リストを取得します。 |
getVulnOverviewList | フィルタリング条件に当てはまる脆弱性対策の概要情報リストを取得します。 |
getVulnDetailInfo | フィルタリング条件に当てはまる脆弱性対策の詳細情報を取得します。 |
getStatistics | 脆弱性対策情報を、登録件数(脆弱性統計情報)、深刻度(CVSS統計情報)、脆弱性種別(CWE統計情報)で集計したデータを取得します。 |
各APIにはリクエスト書式のドキュメントが用意されています。例えば、フィルタリング条件に当てはまるベンダー名をフィルタリング条件とする「getVendorList(http://jvndb.jvn.jp/apis/getVendorList_api.html)」では「http://jvndb.jvn.jp/myjvn?method=getVendorList&パラメータ名=パラメータ値&...」といった形でリクエストを送信します。リクエスト中のベンダー名などはURLエンコードする必要があります。またベンダー名などにワイルドカードも使用できます。
レスポンスは次のような形式のXMLになります。
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://jvndb.jvn.jp/myjvn/Results" xmlns:mjres="http://jvndb.jvn.jp/myjvn/Results" xmlns:status="http://jvndb.jvn.jp/myjvn/Status" xsi:schemaLocation="http://jvndb.jvn.jp/myjvn/Results http://jvndb.jvn.jp/schema/results_3.1.xsd "> version="3.1" method="getVendorList" lang="表示言語" retCd="リターンコード (0:成功時、1:エラー時) " retMax="取得件数" errCd="エラーコード (処理成功時は空文字列) " errMsg="エラーメッセージ (処理成功時は空文字列) " totalRes="応答エントリ総数" totalResRet="応答エントリ数" firstRes="応答エントリ開始位置" 各リクエストパラメータ>
Web API系の開発ではリクエストの生成と実際のレスポンス内容を確認してプログラムを調整(デバッグ)したいケースが出てきます。MyJVN APIでは5種類のAPIに対して、それぞれ動作確認支援ツールを用意しています。動作確認支援ツールは入力フォームになっていて、各パラメータに値を入れ、実際にAPIを呼び出して結果を見ることができます(図1および図2)。
MyJVN APIを有効活用するには、ある程度のプログラミングスキルが必要です。しかしPHPやJavaScriptなどのWeb開発系言語は比較的習得が簡単なプログラミング言語ですし、インターネット上には他社のWeb APIを利用する作例記事がたくさんありますので、参考になると思います。
Copyright © ITmedia, Inc. All Rights Reserved.