CPEスキャンのFAQ

登録済みCPEのソフトウェアアップデートを実施した後のFutureVuls上での操作を知りたい

CPEを更新するを参照し、該当のCPEのバージョンを更新してください。 次回のスキャンのタイミングで更新したCPEのタスクステータスが変更されます。

登録したCPEが正しいか確認する方法はありますか

NVDのCPE検索ページより検索してください。

たとえば、OracleのJDKは1.6.0とそれ以外でEditionに「_」(アンダースコア)がある場合とない場合があります。CPE登録には注意してください。もし間違えて登録すると未検知や誤検知します。

参考: JDKのNVDサーチ結果

CPE選択ポップアップに表示されないバージョンを登録できますか

はい、できます。 バージョン欄に直接入力か、 CPEの直接入力で登録してください。

和製ソフトウェアを検知できますか

はい、できます。詳細は和製ソフトウェアの脆弱性をjvnで検知するを参照ください。

CPEスキャンが誤検知しますがなぜですか

タスク>信頼度が低いタスクは誤検知の可能性があります。

2021年8月時点では、JVNを用いたスキャンは誤検知の可能性があります。 2021年9月リリースにて、JVNを脆弱性DBとして利用するかを選択可能な機能をリリース予定です。

NVDにページが存在するが検知されないCVEがあるのは何故でしょうか

FutureVulsでは、CPEを画面上から登録することにより、以下に挙げたようなOSパッケージ管理以外のソフトウェア脆弱性も検知できます。

  • ネットワーク機器のOSやファームウェア
  • Oracle WebLogicなど商用のミドルウェア
  • 自分でコンパイルしたもの

FutureVulsのCPEスキャンの情報ソースはNVDのJSON Feedです。 具体的にはNVDのJSON FeedのCPE Configurationの欄を用いて検知します。 NVDにConfigurationsの情報が登録されていれば検知可能ですが、未登録の状態では検知できません。

参考: CVE-2020-17530

image

OSのCPEを登録して脆弱性管理出来ますか

いいえ、CPE登録自体は可能ですが以下2点の理由により誤検知が発生し使い物になりません。

  • a. CPEスキャンは実機にアクセスしないのでバージョンアップに気づかず誤検知が発生する
  • b. CPEスキャンで利用するNVDはバックポートに対応していないので誤検知が発生する

詳細を解説します。

a. CPEスキャンは実機にアクセスしないのでバージョンアップに気づかず誤検知が発生する

OSのCPEを登録すると、NVDに登録済みのそのOSとバージョンに紐付けられたすべての脆弱性が検知されます。OSのパッケージは日々の運用で継続的にアップデートされますが、CPEスキャンは実機にはアクセスしないので、あるソフトウェアがアップデートされたことを知りません。 このため、ソフトウェアアップデートにより解消済みの脆弱性はFvuls上で検知され続けます。

具体的に説明します(バージョンは適当です)

  • RHEL7リリース時にApache 2.0.0-aが同梱された
  • その後、Apache 2.0.0-aにCVE-2021-0001が公開され、NVDに登録された
  • この時点でRHEL7をCPEスキャンするとCVE-2021-0001が検知された
  • Apacheを2.0.0-bにアップデートする
  • 実機アクセスしないCPEスキャンは2.0.0-bへのアップデートに気づかないのでCVE-2021-0001が検知され続ける

上記のような過検知が発生するためOSのCPEスキャンは実質使い物になりません。

b. CPEスキャンで利用するNVDはバックポートに対応していないので誤検知が発生する

また「パッケージマネージャ管理のソフトウェア」のCPEスキャンは誤検知が発生します。 RHEL, Ubuntu, Debianなど主要なLinuxディストリビューションはバックポートの仕組みでアップデートが提供されます。(参考:RHELのバックポーティング)。パッケージマネージャ管理化のソフトウェアの脆弱性検知には、バックポートに対応した脆弱性DBを使用しなければなりません。

CPEスキャンで利用する脆弱性DBはNVDです。 NVDには、あるCVEに影響するソフトウェアのバージョンとしてアップストリームのバージョンが記載されています。 (NVDはバックポートのバージョンが書かれていない点に注意)

このためrpm -qaなどで取得した全パッケージのバージョンをCPEに変換してCPEスキャンしても誤検知が発生します。

RHELでのCVE-2021-3450の例で具体的に解説します。

上記のページには以下のように書かれています。

  • NVDではCVE-2021-3450はアップストリームのバージョンである1.1.1h - 1.1.1kが影響を受けると書かれており、
  • RHELではCVE-2021-3450はRHELのバックポートにてopenssl-1.1.1g-15で修正された

つまり、同じCVE-IDでも情報ソースごとに異なる修正バージョンとして登録されています。 RHELのパッケージマネージャ配下の場合はRHELのバージョン情報が正しいです。NVDのバージョンを用いて判定すると誤検知します。

このように、すべてのパッケージを個別でCPE登録、CPEスキャンしても技術的に誤検知が発生してしまいます。 OSとパッケージマネージャ管理下のソフトウェアはCPEスキャンではなく、スキャナ経由(OVALを用いたスキャン)での検知が正確です。

なお「自分でtar.gzをダウンロードしビルドしたソフトウェア」の場合は、アップストリームから取得したソースコードですのでCPEスキャンで正確な検知が可能です。