それにしても、日々発せられる脆弱性情報の量は多いものだ。前回、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
}
}
これを実行すると、
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
}
さらに、APIと同様にjvnrssを利用してパラメータを引数をダブル型で指定する仕組みを供給すると
function jvnrssscore
function jvnrssscore {
param([double]$Score = 8.0)
jvnrss | Where-Object {
($_.cvss.score | % { [double]$_ }) -ge $Score
}
}
既報の通り、不正アクセスが急増している。AIを使って具体的な情報入手がたやすくなったということは、悪意のあるものが、AIを使ってセキュリティホールを探すことも容易になる。使っているシステムのバージョンに大きな脆弱性がないか?特権IDなど究極的な権限を持つID/Passの管理体制は万全なのか?防衛は攻撃よりも難しいという一般論があるが、守るべきものが重要であれば、より多くのチェックを備えることが求められるのではないか。そう思った。


