ITが浸透するにつれ、毎日のようにセキュリティに関する情報が飛び交うが、多くがソフトウェアの脆弱性に起因する。OSですら毎月のように懸念される脆弱性を防ぐための更新プログラムなどのパッチを提供しているが、新しく発見される脆弱性とそれを防ぐ世界各地の研究者との攻防は毎日のように繰り広げられている。

1980年代に米国カーネギーメロン大学に設立されたCERT/CCがその源流となり、現在では多くの組織が活動を広げ、日本でもJPCERT/CCが情報提供を行っている。脆弱性情報にはCVEなど一意の番号が振られており、これをもとに注意喚起や更新情報などがやりとりされ、脆弱性のあるソフトウェアのバージョンや攻撃の有無、更新用パッチなど有用な情報がまとまった形で伝えられる。

MyJVN APIをPowerShellで取得する

脆弱性関連の情報の多くもAPIを通じて取得できるが、JPCERTコーディネーションセンターとIPA(独立行政法人情報処理推進機構)が共同で運営するJVN(Japan Vulnerability Notes)もそのひとつだ。MyJVN APIにはサンプルも掲載されているのでPowerShellで取得してみよう。 脆弱性対策の概要情報リストgetVulnOverviewList (ver. HND)にある

https://jvndb.jvn.jp/myjvn?method=getVulnOverviewList&feed=hnd&パラメタ名=パラメタ値&...

をもとにしてPowerShellで、notepad $PROFILEとして表示されるプロファイルに以下のjvnコマンドを追加。前回と同じように、Get-Memberでメンバを見てみる。

function jvn {
    $r = Invoke-RestMethod "https://jvndb.jvn.jp/myjvn?method=getVulnOverviewList&feed=hnd"
    $r | Get-Member
}

すると、オブジェクトのメンバが一覧できる。

  • Get-Memberでオブジェクトのメンバを確認。プロパティにRDFがある

    Get-Memberでオブジェクトのメンバを確認。プロパティにRDFがある

さらにRDFプロパティのメンバ表示させる。

function jvn {
    $r = Invoke-RestMethod "https://jvndb.jvn.jp/myjvn?method=getVulnOverviewList&feed=hnd"
    $r.RDF | Get-Member
}
  • RDFプロパティのメンバのなかのItemプロパティがある

    RDFプロパティのメンバのなかのItemプロパティがある

ここにItemがあるので、これをそのまま表示させてみよう。

function jvn {
    $r = Invoke-RestMethod "https://jvndb.jvn.jp/myjvn?method=getVulnOverviewList&feed=hnd"
    $r.RDF.Item
}

するとまとまった形で直近の脆弱性情報が大量に表示される。

  • 大量に表示される直近の脆弱性情報

    大量に表示される直近の脆弱性情報

Ctrl+クリックでリンクを押すと、国内外問わず日々公開される脆弱性対策情報のデータベースJVN iPediaの各項目へとブラウザで飛べるので脆弱性情報の詳細をジックリと確認することができる。

  • PowerShellで表示されるリンクはCtrl+クリックでしっかり飛べる。気になる項目はブラウザで把握しよう

    PowerShellで表示されるリンクはCtrl+クリックでしっかり飛べる。気になる項目はブラウザで把握しよう

今回のコマンドでは、概要把握は可能だが緊急度のスコアは取得できない。JVN iPediaのトップページではスコアに応じた色分けで緊急度も把握しやすいのでしっかりと確認するにはこちらを見ることを習慣付けるようにしよう。

  • 緊急度の高いものは赤でアラートされている

    緊急度の高いものは赤でアラートされている

脆弱性情報には、組織システムに関わるものやWebサイト運営に関わるものから、ブラウザやアプリなどコンシューマー、プライベートエリアで対応しなければならない情報まで広範に掲載される。

緊急度の高いものは、個人でもアップデートを確認しなければならない。ササっとコマンドで確認するという目的ではこのコマンドも使えそうなので、常時コマンドjvnとして残しておこう。そう思った。