CPEスキャンのFAQ

登録したいCPEが検索しても出てこないのはなぜですか

CPE検索を用いてソフトウェアを登録する際、対象の製品やバージョンが候補に表れない場合があります。これはFutureVulsのCPE検索のデータソースであるNVD, JVNに対象の製品やバージョンが登録されていないためです。

  • 対象の製品が出てこない場合
    • データソースに登録されていないため自動での脆弱性検知はできません。
    • 各ベンダに脆弱性を公開している場所とチェック方法を確認して手動で脆弱性を管理する必要があります。
    • 資産管理を目的として、独自に命名したCPEを入力可能です。
      • 脆弱性検知の対象外となることにご注意ください。
  • 対象のバージョンが出てこない場合

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

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

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

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

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

参考: JDKのNVDサーチ結果

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

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

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

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

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

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

2021年8月時点では、JVNを用いたスキャンは誤検知の可能性があります。

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

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

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

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

参考: CVE-2020-17530

image

NVDの「Running on/with」に記載のCPEを指定して脆弱性検知できますか

いいえ、「Running on/with」に記載されているCPEを指定しても脆弱性は検知できません。 Configuratoinsに記載のCPEを指定してください。

NVDのCVEページに記載されている、「Known Affected Software Configurations」は、その脆弱性が該当するソフトウェアのバージョンについて示すセクションです。ここにリストされているバージョンは、脆弱性が存在すると確認されたもので、ユーザやシステム管理者はこの情報を使って自分のシステムが影響を受けるかどうかを判断できます。

「Running on/with」は、その脆弱性が存在するソフトウェアが特定のオペレーティングシステムや他のソフトウェア、ハードウェアなどと共に動作しているときに影響を受けるかどうかを示します。

例えば「Running on/with」に「cpe:2.3:h:cisco:catalyst_ie9300:-:::::::*」が記載されている場合、その脆弱性は「Cisco Catalyst IE9300」上で動作するソフトウェアに影響を及ぼす可能性があることを示します。

なお、2023年6月時点では、FutureVulsでは「Running on/with」を考慮せずに「configurations」に記載されたCPEのみでマッチ処理を行っていますが、近い将来、「Running on/with」を考慮したより高度なCPE検知処理をリリース予定です。

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

ネットワーク機器のCPEをFvulsに登録する際にsnmp2cpeのエラーが出ます

お使いのネットワーク機器のCPEを管理する際にfuture-vuls discover,future-vuls add-cpeコマンドを使用します。 前者を実行する際に、ネットワーク機器からCPE情報を取得するsnmp2cpeがエラーを起こして処理が失敗する際の理由と対策について説明します。

a. failed to execute snmp2cpe と表示される

コマンド実行対象のホストのsnmpのポートが空いていない可能性があります。 snmpのポートを開放する方法に関してはこちらの記事が参考になります。