それにしても、日々発せられる脆弱性情報の量は多いものだ。前回、MyJVN APIが発信する脆弱性情報をPowerShellで取得するコマンドに取り組んだ筆者であったが、脆弱性情報データベースJVN iPediaでスコアに関わらず検索すると10月に公表されている脆弱性件数はすでに500件近くに上る。

前回作成したAPIから取得するコマンドは、スコアに関わらず公表日ベースの最新50件が上限となるものだ。

function jvn

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

脆弱性スコアでフィルタリング

これをスコアでフィルタリングしたいと考えた。脆弱性のスコアCVSS(Common Vulnerability Scoring)は、緊急が9.0~10.0、重要が7.0~8.9、警告4.0~6.9、注意0.1~3.9と脆弱性の固有の深刻度を評価する値で現在ではCVSS v3とv2があるが、現在ではv3が主流となっている。cvss.scoreでダブル型のスコアを得られるので、既存のjvnコマンドを利用した引数&パラメーター方式をjvnscoreコマンドとしてPowerShellのプロファイルに追加する。

function jvnscore

function jvnscore {
    param(
        [double]$Score = 9.0
    )

    jvn | Where-Object {
        [double]$_.cvss.score -ge $Score
    }
}

これを実行すると、

  •  jvnscore 9.0のようにスコアを浮動小数点で入力

    jvnscore 9.0のようにスコアを浮動小数点で入力

9.0以上のスコアの脆弱性に絞られて表示される。最新情報ではほとんどCVSS v3なのでこの方法でもサクッと確認することは可能だが、厳密な情報を得るにはCVSSスコアのバージョン分けなどAPIの深堀りが必要になる。

RSS情報から脆弱性情報を入手する

APIは詳細なデータ分析を行うためのエンドポイントやパラメータが充実しているが、最新50件の上限値がデフォルトとなっている。JVNではRSS(https://jvndb.jvn.jp/ja/feed/)も配信しているが、こちらはより多くのエントリー情報を取得できる。注意喚起のために一般ユーザーとして、PowerShellで取得するには、こちらのほうが効果的である。rssの取得もAPIと同様に以下のように取得できる。

function jvnrss

function jvnrss {
    $r = Invoke-RestMethod "https://jvndb.jvn.jp/ja/rss/jvndb_new.rdf"
    $r.RDF.Item
}
  • rssの取得では50の上限がなくなり、最新情報数百件が取得できる

    rssの取得では50の上限がなくなり、最新情報数百件が取得できる

さらに、APIと同様にjvnrssを利用してパラメータを引数をダブル型で指定する仕組みを供給すると

function jvnrssscore

function jvnrssscore {
    param([double]$Score = 8.0)

    jvnrss | Where-Object {
            ($_.cvss.score | % { [double]$_ }) -ge $Score

}
}
  • 緊急性の高い最新情報(RSS)を大量に取得できる

    緊急性の高い最新情報(RSS)を大量に取得できる

既報の通り、不正アクセスが急増している。AIを使って具体的な情報入手がたやすくなったということは、悪意のあるものが、AIを使ってセキュリティホールを探すことも容易になる。使っているシステムのバージョンに大きな脆弱性がないか?特権IDなど究極的な権限を持つID/Passの管理体制は万全なのか?防衛は攻撃よりも難しいという一般論があるが、守るべきものが重要であれば、より多くのチェックを備えることが求められるのではないか。そう思った。