はじめに
2024年1月にリリースされたオープンソースツールであるCVEMapを触ってみた。
自分自身のためのメモとして、分かったことをまとめてみる。
CVEMapとは
ProjectDiscovery( https://projectdiscovery.io/ )が無償で提供する、CVE(共通脆弱性識別子)を簡単に検索可能にするツール。
主な特徴
- Go言語で書かれている。
- データ処理はクラウド上で行われている模様。
- 無償(ProjectDiscovery Cloud Platformのサインアップが必要)
- CVEの検索(文字列、ベンダー名、製品名など)
- CVEをEPSS,KEVなどのデータと連結
- CSVやJSONでの出力に対応
- CVEデータの更新は6時間ごと
インストール
Goのインストールから始める場合は、環境変数の設定が必要となる
参考(macOSの場合):
インストールに必要なコマンド
$ go install github.com/projectdiscovery/cvemap/cmd/cvemap@latest
ProjectDiscovery Cloud Platformのサインアップをして、API Keyを取得する必要があるが、Googleアカウントなどがあれば簡単にできる。
API Keyのインポートに必要なコマンド
$ cvemap -auth
使い方
こちらにまとめられている。
CVSSやEPSSなどの数値データは、数値でフィルタリングできる。記述方法の例は以下の通り。
$ cvemap -cs '> 7' -es '> 0.3' -f poc,kev,vendor
公開されてからの日数(AGE)でフィルタリングした例
$ cvemap -age '< 10'
使えそうなケース、使えなさそうなケース
特定のベンダーのソフトウェアや特定の製品に注目した脆弱性管理を始める際には、ちょうど良い気がする。
CVE,EPSS,KEVをそれぞれバラバラに参照している場合には、メリットを感じるだろう。
一方で、脆弱性管理のサービスを利用していたり、既にCVEやEPSS、その他の関連情報の生データを定期的に収集して、データをマージするようなシステムを独自に構築している場合は、そちらで十分だと思う。既存の処理の一部をCVEMapに置き換えることで簡素化できるかもしれない。
最近公開された脆弱性を用いたケーススタディ
2024年2月1日に報じられたESET製品の脆弱性、"CVE-2023-7043"について、ベンダー名、製品名を使った検索で正しくキャッチできるか試してみる。(2024年2月2日に実施)
ベンダー名で検索してみたが、該当するCVEはヒットしない。
ベンダー名、製品名の検索は、全て小文字で!!
$ cvemap -vendor eset -f kev,poc,vendor
"-q"オプションを使って、ベンダー名を文字列検索する。
$ cvemap -q '"ESET"' -f kev,poc,vendor
ヒットしたが、製品名、ベンダー名が空欄だった・・・。公開された直後のCVEを製品名、ベンダー名で検索するとヒットしないケースがある模様。見落としを防ぐには、"-q"オプションを使った文字列検索と併用した方が良さそう。
ProjectDiscovery Cloud Platformでできること
"テンプレート"と呼ばれる特定の脆弱性などを定義したルールを用いたスキャン。
公開されているテンプレート、自分で作ったテンプレートが使える。
まだ十分なレビューができていないので、詳細は不明。
関連情報
CVE(Common Vulnerabilities and Exposures)
生データ:
EPSS(Exploit Prediction Scoring System)
生データ:
KEV(Known Exploited Vulnerabilities)
生データ: