OS自体や、OSからインストールしたPkgのCPE登録は可能です。
ただし、以下の理由による誤検知が想定されるため、利用は推奨しておりません。
- 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スキャンで正確な検知が可能です。
コメント
0件のコメント
サインインしてコメントを残してください。