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の登録方法は5種類あります。

image.png

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を登録します。

image.png

擬似サーバはスキャンサーバと違い、手動でのスキャンが可能です。
CPE登録後画面上からスキャンを実行し脆弱性を確認できます。

image.png

なお、疑似サーバは日次で自動スキャンされます。

CPEスキャンのタイミング

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

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

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

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

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

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

CPEを更新する

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

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

image.png

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

image.png

運用例
  • 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を誤って登録してしまった場合は、CPEを削除できます。

image.png

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を参照してください