コンテンツにスキップ

CPEスキャン#

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

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

NVD で参照している情報

FutureVuls の CPE スキャンでは、NVD の JSON Feed をソースとして利用しています。 特に、JSON Feed 内の「CPE Configuration」の欄を用いて検知しています。 つまり、NVD に Configurations の情報が登録されていれば検知可能ですが、未登録の場合には検知できません。

CPE スキャン機能は、OS やプログラミング言語依存のライブラリ「以外」のソフトウェアの脆弱性をスキャンできます。 具体的なスキャン対象例としては以下のようなものがあります。

  • Cisco、Fortinet などのネットワーク機器のファームウェア (ex. cpe:/o:cisco:ios:- )
  • Oracle や JP1などの商用データベースおよびその他の商用製品ミドルウェア
  • ダウンロードしてセットアップしたもの(Tomcat など)
  • 自分でソースからコンパイルしてインストールしたもの(Apache など)

ネットワーク機器のスキャンについては「こちら」で詳細を確認してください。

CPE スキャンの利用が非推奨な場合

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

  • プログラミング言語ライブラリは「アプリケーションスキャン」の利用が楽です
  • OSの脆弱性のCPEスキャンは誤検知が発生するため、スキャナ経由によるスキャンを推奨します。詳細は「OSパッケージのCPE登録」のマニュアルを参照してください。

CPE の概要#

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 形式どちらでも登録可能となっていますが、表示は FormattedString 形式に統一しています。

Deprecated な CPE

CPEには、非推奨とされた(Deprecated)バージョンが存在します。 DeprecatedなCPEの詳細は「Understanding Vulnerability Detail Pages」をご覧ください。 登録されているCPEがNVD上で非推奨とされた場合、ソフトウェア詳細画面で注意喚起されます。

deprecated_cpe

DeprecatedなCPEの脆弱性は今後検知されません。 Deprecatedと判定される前に検知された脆弱性は、引き続き保持されますが、新たな検知は行いません。 正しいCPEをNVDで確認し、「CPEを更新する」より更新してください。

CPEスキャンの処理詳細#

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

image

CPEを登録する#

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

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

image

CPE を登録しただけでは脆弱性検知されません。CPE を紐づけたサーバがスキャンされたタイミングで検知処理が実行されます。

ネットワーク機器を CPE 登録する場合には、種別 {h=ハードウェア} ではなく {o=OS} に該当する情報を登録してください。

CPE登録したネットワーク機器の脆弱性が検知されない

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

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

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

cpe_version

登録したい CPE が検索結果に出てこない場合

deprecated な CPE は CPE 検索では取得されません。

登録したいCPEやバージョン情報が検索しても出てこない場合は、次のFAQも参考にしてください。 登録したいCPEが検索しても出てこないのはなぜですか

なお、「脆弱性を JVN で検知する」のチェックボックスを押下すると、NVD の CPE 検索ページへのリンクが表示されます。

CPE追加ダイアログ

リンクを押下することで、NVD に該当の CPE が存在するかを、バージョン情報込みで確認することが出来ます。

NVDのCPE検索ページ

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

擬似サーバもスキャンサーバと同様に1つのサーバとして料金計算されますのでご了承ください。

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 以外にも紐付いているタスク、脆弱性は削除されません)

CPEを割り当てる#

image

「Windows」かつ「実スキャナで登録されたサーバ」でのみ、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」にすることをおすすめします(参考)。

なお、信頼度の詳細な説明や、信頼度の低い脆弱性への対応方法については、「信頼度」を参照してください。