CPEスキャンのFAQ

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

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

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

参考: JDKのNVDサーチ結果

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点の理由により誤検知が発生し使い物になりません。

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

詳細を解説します。

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スキャンは実質使い物になりません。

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スキャンで正確な検知が可能です。