CPE
Common Platform Enumeration(CPE)は、cpe:2.3:a:tukaani:xz:5.6.0のようにIT製品を表す標準の命名体系で、NVDがCVEの影響を受ける製品を示すのに使います。
最終更新日:2026年11月11日
Common Platform Enumeration(CPE)は、サイバーセキュリティでIT製品(アプリケーション、オペレーティングシステム、ハードウェア)を表すための構造化された命名体系です。バージョン2.3はNISTがNISTIR 7695(2011年8月)で定めています。National Vulnerability Database(NVD)は、CVEがどの製品に影響するかをCPE名で示し、公式のCPE辞書を管理しています。
CPE 2.3の形式
CPE 2.3の名前は、接頭辞cpe:2.3の後に11の属性を持ちます:part、vendor、product、version、update、edition、language、sw_edition、target_sw、target_hw、other。partはアプリケーションならa、オペレーティングシステムならo、ハードウェアならhです。*は任意の値、-は該当なしを意味します。
cpe:2.3:a:microsoft:internet_explorer:8.0.6001:beta:*:*:*:*:*:*
cpe:2.3:a:lodash:lodash:4.17.20:*:*:*:*:node.js:*:*
cpe:2.3:h:raspberrypi:raspberry_pi_4_model_b:-:*:*:*:*:*:*:*
1つ目は仕様に載っている例です。2つ目はnpmライブラリのlodashで、対象ソフトウェアがnode.jsです。3つ目はハードウェア製品です。3つともNVDの辞書に登録されています。
CPE照合の仕組みと、うまくいかない点
NVDのレコードは、CVEが該当するCPEを、多くの場合バージョン範囲とともに列挙します。スキャナーはSBOMの各コンポーネントをCPEの推測に変換して比較します。うまくいかない点は3つあります。
- あいまいな名前。 辞書のベンダー名や製品名は、エコシステムでのパッケージ名と一致するとは限りません。xzライブラリは
cpe:2.3:a:tukaani:xzですが、Debianではxz-utilsというパッケージとして配布されています。パッケージ名から作った推測は、別の製品に一致するか、何にも一致しません。 - 広すぎる範囲。 適用範囲の記述が、影響を受けないバージョンやプラットフォームまで含むことがあります。たとえば、影響を受けたのが1つのビルド構成だけなのに、製品の全バージョンが対象とされる場合です。一致したコンポーネントはすべて、トリアージが必要な検出結果になります。
- データの欠落。 NISTは「2024年初めから、NVDでは未エンリッチのCVEが大幅に滞留した」と述べています。2026年4月15日以降、NVDは優先度に基づいてCVEをエンリッチし(CISA KEVの項目、米連邦政府が使うソフトウェア、EO 14028の重要ソフトウェアが優先)、それ以外を「Lowest Priority - not scheduled for immediate enrichment」としています(NIST)。CVE Numbering AuthoritiesはCVEレコードの中で、CPEを含む影響製品を提供でき、NVDは2026年6月からCNAやADPが提供したこうしたデータを自身のレコードに取り込んでいますが、網羅性はCNAによってまちまちです。Yocto Projectの5.2リリースノートは、その影響をはっきり述べています。CPEに基づくチェックでは「一部の脆弱性はまったく報告されない」のです。
誤った製品との照合は、誤検知の原因のひとつです。脆弱性ノイズの削減を参照してください。
CPEとPackage URLの比較
| Package URL | CPE | |
|---|---|---|
| 名前を決めるのは | パッケージのエコシステム | NVDのCPE辞書 |
| 識別する対象 | レジストリやディストリビューション内のパッケージ | ハードウェアやOSを含む製品 |
| 形式 | pkg:type/namespace/name@version | cpe:2.3:part:vendor:product:version:... |
| 規格 | ECMA-427 | NISTIR 7695(CPE 2.3) |
| 利用先 | OSV、GitHubアドバイザリ、SBOMツール | NVD、多くのスキャナー |
| よくある失敗 | ベンダリングや手動記載のコードで欠落 | ベンダー名・製品名があいまい、新しいCVEの多くにCPEデータがない |
パッケージのエコシステムがあるものにはPackage URLを、商用製品、ファームウェア、ハードウェアにはCPEを使い、要件で両方が求められる場合は両方を使います。CISAの2026 Minimum ElementsはCPEとPackage-URLを一般的な識別子として挙げており、BSI TR-03183-2は、存在する場合には各コンポーネントにこうした識別子を求めています。
SBOMにおけるCPE
CycloneDXには各コンポーネントにcpeフィールドがあり、SPDXはCPEを外部識別子として記載します。サプライヤーであれば、CPEを自作せず、NVDが自社製品に実際に使っているCPE(辞書で確認できます)を記載してください。自作したCPEは何にも一致しません。識別子はSBOMのフィールド品質の一部であり、リストに何かが欠けているかどうかは別の問題、すなわちSBOMの完全性の問題です。
CRACIは、ビルドが取り込むすべてのパッケージをPackage URLで識別します。ビルド時SBOMを参照してください。