CPE(Common Platform Enumeration)をFutureVulsに登録することでOSパッケージ以外の脆弱性も検知できます。
CPEについての説明はIPAによるCPE概説をご覧ください。
CPEには、以下の2種類が定義されています。
cpe:/a:microsoft:internet_explorer:8.0.6001:beta
)cpe:2.3:a:microsoft:internet_explorer:8.0.6001:beta:*:*:*:*:*:*
)URI形式はバージョン2.2、 FormattedString形式はバージョン2.3と呼ばれています。
表示できる情報量は変わらず、表示形式に差があるのみとなっています。
FutureVulsでは、URI形式、FormattedString形式どちらでも登録可能となっていますが、表示はURI形式に統一しています。
CPEを使用することでパッケージマネージャ以外のソフトウェアの脆弱性検知が可能です。例えば以下のような脆弱性を検知することが出来ます。
cpe:/h:cisco:12000_router
)以下も可能ですがCPEスキャン以外の方法をおすすめします。
NVDをメインの脆弱性DBとして利用します。
JVNにしか定義されていない和製ソフトウェアも検知可能ですが、誤検知の可能性があります。 詳細は和製ソフトウェアの脆弱性をJVNで検知するを参照してください。
パッケージマネージャ管理下のソフトウェアはCPEスキャンではなく、スキャナ経由のスキャンを推奨します。詳細はFAQ/CPEスキャンを参照してください。
CPEスキャンの検知処理の詳細を図示します。
CPEは サーバ
> ソフトウェア
> CPE追加
から登録できます。
CPEを登録しただけでは脆弱性検知されません。CPEを紐づけたサーバがスキャンされたタイミングで検知処理が実行されます。
現在、CPEの登録方法は5種類あります。
partやvendorなどをプルダウンで選択してCPEを登録します。
候補としてプルダウンに現れるCPEはNVDのデータベースから取得しています。
プルダウンから候補が見つからない場合、手入力での登録も可能です。
CPEの形式がわかっている場合は、CPE名称を貼り付けて登録できます。
OWASP Dependency Check を利用している場合、出力されたxmlを使用し、検知したライブラリを一括で登録できます。
信頼度が低いCPEはあらためて確認の上で登録してください。
登録したいCPEが複数ある場合、フリーテキストで貼り付けて登録できます。
REST APIで自作プログラムからCPEを登録可能です。詳細はドキュメントを参照してください。
たとえば、ネットワーク機器のファームウェアをCPEスキャンしたい場合、実体のない空のサーバとして 擬似サーバ
を追加し、CPEを登録できます。
擬似サーバはサーバ一覧の サーバ追加
から作成できます。作成後は通常のサーバ同様にソフトウェアからCPEを登録できます。
擬似サーバもスキャンサーバと同様に1つのサーバとして料金計算されますのでご了承ください。
CPE登録後画面上からスキャンを実行し脆弱性を確認できます。
擬似サーバは日次で自動スキャンされる他、手動でスキャンを行えます。
CPEスキャンのタイミングは擬似サーバとそれ以外で異なります。
通常サーバの場合は以下のタイミングで、通常サーバに紐付けたCPEの脆弱性が検知されます。
擬似サーバの場合は以下です。
スキャンした時刻は「グループ設定>スキャン履歴」に記載されています。
一度登録したCPEは画面から更新できます。
CPEを更新する事で、通常のパッケージ管理同様にタスクのステータスを管理できます。
CPE以外の更新は、プルダウンから選択またはCPENameで指定できます。
プルダウンは該当する値がなくても、手動で入力することにより登録できます。
cpe:/a:drupal:drupal:3.8
を登録する。あくまでCPEのバージョン以下をアップデートする作業であるため、Part・Vendor・Productは変更できません。
登録したCPEは詳細画面やソフトウェア一覧から削除できます。
CPEを削除すると、関連するタスクと脆弱性もすべて削除されます。
(削除したCPE以外にも紐付いているタスク、脆弱性は削除されません)
和製ソフトウェアはCPE登録・変更時に、「和製ソフトウェアの脆弱性をJVNで検知する」チェック(※以下、JVNチェックと記載) を選択してください。日本向けの製品のような、「NVDに含まれないがJVNには脆弱性情報が登録されている和製ソフトウェア」の脆弱性を検知できるようになります。
JVNの検知処理はバージョン情報のレンジ比較が出来ないため、定義されたCPEの Part
, Vendor
, Product
に該当する全件が検知されることに注意してください。 つまりJVNでの検知は、バージョン情報を考慮しないため誤検知する可能性があります。
JVNチェックの、ON/OFFのときのスキャンの流れについて、cpe:/a:apache:tomcat:9.0.8
を例に説明します
。「JVNチェックOFF」の場合はNVDのみを参照します。NVD: CVE-2021-1745をみるとtomcatは対象ではないので検知されません。 一方「JVNチェックON」の場合はNVDに加えてJVNの情報も参照します。JVNのページにはtomcatが影響すると記載されています。JVNでの検知はバージョン情報が記載されていないので cpe:/a:apache:tomcat
の部分のみで判断され CVE-2020-1745
を検知します。詳細はCPEスキャンのフローチャートも参照してください。
このように「JVNチェックをON」にすると誤検知する可能性が高くなります。よってCPE登録前にNVDとJVNを確認し、NVDに存在しない、かつJVNに存在する和製ソフトウェアの場合のみ「JVNチェックをON」にすることをおすすめします。
あるタスクの検知信頼度を確認するためには、「タスク>信頼度」列、または「タスク詳細>検出方法」を確認してください。
信頼度の低いタスクが誤検知かどうかを判断するためには、「タスク詳細 > 関連するソフトウェアのリンクより」JVNのサイトに掲載のバージョン情報や脆弱性詳細に記載の一次情報リンクなどで確認してください。
もし影響ないことが確認できた場合は、タスクを非表示にしてステータスを「NOT_AFFECTED」に変更するなどで対応してください。