CPE
Common Platform Enumeration (CPE) est un schéma de nommage standard des produits informatiques, comme cpe:2.3:a:tukaani:xz:5.6.0, que la NVD utilise pour indiquer les produits touchés par une CVE.
Dernière mise à jour : 11 novembre 2026
Common Platform Enumeration (CPE) est un schéma de nommage structuré des produits informatiques en cybersécurité : applications, systèmes d'exploitation et matériel. La version 2.3 est spécifiée par le NIST dans NISTIR 7695 (août 2011). La National Vulnerability Database (NVD) utilise les noms CPE pour indiquer quels produits une CVE touche, et tient le dictionnaire CPE officiel.
Le format CPE 2.3
Un nom CPE 2.3 compte 11 attributs après le préfixe cpe:2.3 : part, vendor, product, version, update, edition, language, sw_edition, target_sw, target_hw et other. La partie (part) vaut a pour une application, o pour un système d'exploitation et h pour du matériel. Un * signifie n'importe quelle valeur et un - signifie sans objet.
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:-:*:*:*:*:*:*:*
Le premier est l'exemple de la spécification. Le deuxième est la bibliothèque npm lodash, avec node.js comme logiciel cible. Le troisième est un matériel. Les trois figurent dans le dictionnaire de la NVD.
Comment fonctionne la correspondance CPE, et où elle échoue
Une fiche de la NVD liste les CPE auxquels une CVE s'applique, souvent avec des plages de versions. Un scanner transforme chaque composant d'une SBOM en hypothèse de CPE et compare. Trois choses tournent mal :
- Noms ambigus. Le fournisseur et le produit du dictionnaire ne correspondent pas toujours au nom du paquet dans son écosystème. La bibliothèque xz est
cpe:2.3:a:tukaani:xz, alors que Debian la livre sous le nom de paquetxz-utils. Une hypothèse construite à partir du nom du paquet tombe sur le mauvais produit ou sur aucun. - Plages trop larges. Une déclaration d'applicabilité peut couvrir des versions ou des plateformes non concernées, par exemple toutes les versions d'un produit alors qu'une seule configuration de build l'était. Chaque composant correspondant devient un résultat à trier.
- Données manquantes. Le NIST écrit qu'« à partir du début de 2024, la NVD a accumulé un important retard de CVE non enrichies ». Depuis le 15 avril 2026, elle enrichit les CVE par priorité (d'abord les entrées du KEV de la CISA, les logiciels utilisés par l'administration fédérale et les logiciels critiques au sens de l'EO 14028) et marque les autres « Lowest Priority - not scheduled for immediate enrichment » (NIST). Les CVE Numbering Authorities peuvent fournir les produits concernés, CPE compris, dans la fiche CVE, et la NVD intègre ces données fournies par les CNA et les ADP depuis juin 2026, mais la couverture varie selon la CNA. Les notes de version 5.2 du Yocto Project résument l'effet sans détour : avec des vérifications fondées sur les CPE, « certaines vulnérabilités ne sont tout simplement pas signalées ».
Apparier le mauvais produit est une source de faux positifs ; voir réduire le bruit des vulnérabilités.
CPE et Package URL
| Package URL | CPE | |
|---|---|---|
| Qui définit le nom | L'écosystème du paquet | Le dictionnaire CPE de la NVD |
| Identifie | Un paquet dans un registre ou une distribution | Un produit, y compris le matériel et les systèmes d'exploitation |
| Format | pkg:type/namespace/name@version | cpe:2.3:part:vendor:product:version:... |
| Norme | ECMA-427 | NISTIR 7695 (CPE 2.3) |
| Utilisé par | OSV, avis GitHub, outils SBOM | NVD, de nombreux scanners |
| Échec typique | Absente pour le code vendorisé ou listé à la main | Noms de fournisseur et de produit ambigus ; pas de données CPE pour beaucoup de CVE récentes |
Utilisez une package URL partout où un écosystème de paquets existe, un CPE pour les produits commerciaux, les firmwares et le matériel, et les deux lorsqu'une exigence demande les deux. Les 2026 Minimum Elements de la CISA citent CPE et Package-URL comme identifiants courants, et la BSI TR-03183-2 exige de tels identifiants pour chaque composant lorsqu'ils existent.
Les CPE dans les SBOM
CycloneDX a un champ cpe sur chaque composant, et SPDX porte les CPE comme identifiants externes. Si vous êtes fournisseur, indiquez le CPE que la NVD utilise réellement pour votre produit (cherchez-le dans le dictionnaire) plutôt que d'en inventer un : un CPE inventé ne correspond à rien. Les identifiants sont une partie de la qualité des champs d'une SBOM ; savoir si quelque chose manque à la liste est une autre question, la complétude de la SBOM.
CRACI identifie chaque paquet qu'un build récupère par sa package URL. Voir SBOM au moment du build.