CPE検索を用いてソフトウェアを登録する際、対象の製品やバージョンが候補に表れない場合があります。これはFutureVulsのCPE検索のデータソースであるNVD, JVNに対象の製品やバージョンが登録されていないためです。
CPEを更新するを参照し、該当のCPEのバージョンを更新してください。 次回のスキャンのタイミングで更新したCPEのタスクステータスが変更されます。
NVDのCPE検索ページより検索してください。
たとえば、OracleのJDKは1.6.0とそれ以外でEditionに「_」(アンダースコア)がある場合とない場合があります。CPE登録には注意してください。もし間違えて登録すると未検知や誤検知します。
参考: JDKのNVDサーチ結果
はい、できます。 バージョン欄に直接入力か、 CPEの直接入力で登録してください。
はい、できます。詳細は和製ソフトウェアの脆弱性をjvnで検知するを参照ください。
タスク>信頼度が低いタスクは誤検知の可能性があります。
2021年8月時点では、JVNを用いたスキャンは誤検知の可能性があります。
FutureVulsでは、CPEを画面上から登録することにより、以下に挙げたようなOSパッケージ管理以外のソフトウェア脆弱性も検知できます。
FutureVulsのCPEスキャンの情報ソースはNVDのJSON Feedです。 具体的にはNVDのJSON FeedのCPE Configurationの欄を用いて検知します。 NVDにConfigurationsの情報が登録されていれば検知可能ですが、未登録の状態では検知できません。
参考: CVE-2020-17530
いいえ、「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検知処理をリリース予定です。
いいえ、CPE登録自体は可能ですが以下2点の理由により誤検知が発生し使い物になりません。
詳細を解説します。
OSのCPEを登録すると、NVDに登録済みのそのOSとバージョンに紐付けられたすべての脆弱性が検知されます。OSのパッケージは日々の運用で継続的にアップデートされますが、CPEスキャンは実機にはアクセスしないので、あるソフトウェアがアップデートされたことを知りません。 このため、ソフトウェアアップデートにより解消済みの脆弱性はFvuls上で検知され続けます。
具体的に説明します(バージョンは適当です)
2.0.0-a
が同梱された2.0.0-a
にCVE-2021-0001が公開され、NVDに登録された2.0.0-b
にアップデートする2.0.0-b
へのアップデートに気づかないのでCVE-2021-0001が検知され続ける上記のような過検知が発生するためOSのCPEスキャンは実質使い物になりません。
また「パッケージマネージャ管理のソフトウェア」のCPEスキャンは誤検知が発生します。 RHEL, Ubuntu, Debianなど主要なLinuxディストリビューションはバックポートの仕組みでアップデートが提供されます。(参考:RHELのバックポーティング)。パッケージマネージャ管理化のソフトウェアの脆弱性検知には、バックポートに対応した脆弱性DBを使用しなければなりません。
CPEスキャンで利用する脆弱性DBはNVDです。 NVDには、あるCVEに影響するソフトウェアのバージョンとしてアップストリームのバージョンが記載されています。 (NVDはバックポートのバージョンが書かれていない点に注意)
このため rpm -qa
などで取得した全パッケージのバージョンをCPEに変換してCPEスキャンしても誤検知が発生します。
RHELでのCVE-2021-3450の例で具体的に解説します。
上記のページには以下のように書かれています。
1.1.1h - 1.1.1k
が影響を受けると書かれており、openssl-1.1.1g-15
で修正されたつまり、同じCVE-IDでも情報ソースごとに異なる修正バージョンとして登録されています。 RHELのパッケージマネージャ配下の場合はRHELのバージョン情報が正しいです。NVDのバージョンを用いて判定すると誤検知します。
このように、すべてのパッケージを個別でCPE登録、CPEスキャンしても技術的に誤検知が発生してしまいます。 OSとパッケージマネージャ管理下のソフトウェアはCPEスキャンではなく、スキャナ経由(OVALを用いたスキャン)での検知が正確です。
なお「自分でtar.gzをダウンロードしビルドしたソフトウェア」の場合は、アップストリームから取得したソースコードですのでCPEスキャンで正確な検知が可能です。
お使いのネットワーク機器のCPEを管理する際にfuture-vuls discover
,future-vuls add-cpe
コマンドを使用します。
前者を実行する際に、ネットワーク機器からCPE情報を取得するsnmp2cpeがエラーを起こして処理が失敗する際の理由と対策について説明します。
コマンド実行対象のホストのsnmpのポートが空いていない可能性があります。 snmpのポートを開放する方法に関してはこちらの記事が参考になります。