CPEスキャン

CPEについて

CPE(Common Platform Enumeration)をFutureVulsに登録することでOSパッケージ以外の脆弱性も検知できます。

CPEについての説明はIPAによるCPE概説をご覧ください。

CPEには、以下の2種類が定義されています。

  • URI形式 (例: cpe:/a:microsoft:internet_explorer:8.0.6001:beta )
  • Formatted String形式 (例: cpe:2.3:a:microsoft:internet_explorer:8.0.6001:beta:*:*:*:*:*:* )

URI形式はバージョン2.2、 FormattedString形式はバージョン2.3と呼ばれています。
表示できる情報量は変わらず、表示形式に差があるのみとなっています。
FutureVulsでは、URI形式、FormattedString形式どちらでも登録可能となっていますが、表示はURI形式に統一しています。

CPEの利用用途

CPEを使用することでパッケージマネージャ以外のソフトウェアの脆弱性検知が可能です。例えば以下のような脆弱性を検知することが出来ます。

  • ネットワーク機器のファームウェア (ex. cpe:/h:cisco:12000_router )
  • Oracle Database, Oracle WebLogicなどの商用ミドルウェア
  • 自分でソースからコンパイルしてインストールしたもの

以下も可能ですがCPEスキャン以外の方法をおすすめします。

CPEスキャンの脆弱性DB

NVDをメインの脆弱性DBとして利用します。

JVNにしか定義されていない和製ソフトウェアも検知可能ですが、誤検知の可能性があります。 詳細は和製ソフトウェアの脆弱性をJVNで検知するを参照してください。

パッケージマネージャ管理下のソフトウェアはCPEスキャンではなく、スキャナ経由のスキャンを推奨します。詳細はFAQ/CPEスキャンを参照してください。

CPEスキャンの処理詳細

CPEスキャンの検知処理の詳細を図示します。

image

CPEを登録する

CPEは サーバ > ソフトウェア > CPE追加 から登録できます。

image

現在、CPEの登録方法は5種類あります。

1. プルダウンで選択して登録する

partやvendorなどをプルダウンで選択してCPEを登録します。

候補としてプルダウンに現れるCPEはNVDのデータベースから取得しています。
プルダウンから候補が見つからない場合、手入力での登録も可能です。

image.png

2. URI形式、またはFormattedString形式で登録する

CPEの形式がわかっている場合は、CPE名称を貼り付けて登録できます。

image.png

3. OWASP Dependency Checkのxmlから複数登録する

OWASP Dependency Check を利用している場合、出力されたxmlを使用し、検知したライブラリを一括で登録できます。

信頼度が低いCPEはあらためて確認の上で登録してください。

image.png

4. フリーテキストで複数登録する

登録したいCPEが複数ある場合、フリーテキストで貼り付けて登録できます。 image.png

5. REST APIで登録する

REST APIで自作プログラムからCPEを登録可能です。詳細はドキュメントを参照してください。

擬似サーバ

たとえば、ネットワーク機器のファームウェアをCPEスキャンしたい場合、実体のない空のサーバとして 擬似サーバ を追加し、CPEを登録できます。

擬似サーバはサーバ一覧の サーバ追加 から作成できます。作成後は通常のサーバ同様にソフトウェアからCPEを登録できます。

CPE登録後画面上からスキャンを実行し脆弱性を確認できます。
擬似サーバは日次で自動スキャンされる他、手動でスキャンを行えます。

image

CPEスキャンのタイミング

CPEスキャンのタイミングは擬似サーバとそれ以外で異なります。

通常サーバの場合は以下のタイミングで、通常サーバに紐付けたCPEの脆弱性が検知されます。

  • 画面上で手動スキャンを実行する
  • スキャナからのアップロードのタイミング

擬似サーバの場合は以下です。

  • 画面上で手動スキャンを実行する
  • 日次の自動スキャンのタイミング

スキャンした時刻は「グループ設定>スキャン履歴」に記載されています。

CPEを更新する

一度登録したCPEは画面から更新できます。

CPEを更新する事で、通常のパッケージ管理同様にタスクのステータスを管理できます。

image

CPE以外の更新は、プルダウンから選択またはCPENameで指定できます。
プルダウンは該当する値がなくても、手動で入力することにより登録できます。

image

運用例
  • Drupal 3.8をFutureVulsで管理するために、 cpe:/a:drupal:drupal:3.8 を登録する。
  • 手動スキャンを実行し脆弱性を確認する。
  • 対応が必要な脆弱性に対して、タスクの担当者、対応予定、優先度等を設定する。
  • 実機のdrupalのバージョンを4.0にアップデートする。
  • FutureVulsのCPE (cpe:/a:drupal:drupal:3.8) を選択し、アップデートボタンをクリックし、バージョンを4.0に変更する。
  • 再度手動スキャンを実行し、脆弱性が解消されているかを確認する。

あくまでCPEのバージョン以下をアップデートする作業であるため、Part・Vendor・Productは変更できません。

CPEを削除する

登録したCPEは詳細画面やソフトウェア一覧から削除できます。

image

CPEを削除すると、関連するタスクと脆弱性もすべて削除されます。
(削除したCPE以外にも紐付いているタスク、脆弱性は削除されません)

和製ソフトウェアの脆弱性をJVNで検知する

和製ソフトウェアはCPE登録・変更時に、「和製ソフトウェアの脆弱性をJVNで検知する」チェック(※以下、JVNチェックと記載) を選択してください。日本向けの製品のような、「NVDに含まれないがJVNには脆弱性情報が登録されている和製ソフトウェア」の脆弱性を検知できるようになります。

image

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のサイトに掲載のバージョン情報や脆弱性詳細に記載の一次情報リンクなどで確認してください。

image

もし影響ないことが確認できた場合は、タスクを非表示にしてステータスを「NOT_AFFECTED」に変更するなどで対応してください。

不明点はFAQを参照してください