CPE
Common Platform Enumeration (CPE) é um esquema normalizado de nomes para produtos de TI, como cpe:2.3:a:tukaani:xz:5.6.0, que a NVD usa para indicar que produtos uma CVE afeta.
Última atualização: 11 de novembro de 2026
Common Platform Enumeration (CPE) é um esquema estruturado de nomes para produtos de TI em cibersegurança: aplicações, sistemas operativos e hardware. A versão 2.3 foi especificada pelo NIST em NISTIR 7695 (agosto de 2011). A National Vulnerability Database (NVD) usa nomes CPE para indicar que produtos uma CVE afeta, e mantém o dicionário CPE oficial.
O formato CPE 2.3
Um nome CPE 2.3 tem 11 atributos depois do prefixo cpe:2.3: part, vendor, product, version, update, edition, language, sw_edition, target_sw, target_hw e other. A parte (part) é a para uma aplicação, o para um sistema operativo e h para hardware. Um * significa qualquer valor e um - significa não aplicável.
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:-:*:*:*:*:*:*:*
O primeiro é o exemplo da especificação. O segundo é a biblioteca npm lodash, com node.js como software de destino. O terceiro é um equipamento de hardware. Os três estão no dicionário da NVD.
Como funciona a correspondência por CPE e onde falha
Um registo da NVD lista os CPE a que uma CVE se aplica, muitas vezes com intervalos de versões. Um scanner transforma cada componente de uma SBOM num palpite de CPE e compara. Há três coisas que correm mal:
- Nomes ambíguos. O fornecedor e o produto do dicionário nem sempre correspondem ao nome do pacote no seu ecossistema. A biblioteca xz é
cpe:2.3:a:tukaani:xz, enquanto a Debian a distribui como o pacotexz-utils. Um palpite construído a partir do nome do pacote acerta no produto errado ou em nenhum. - Intervalos demasiado amplos. Uma declaração de aplicabilidade pode abranger versões ou plataformas não afetadas, por exemplo todas as versões de um produto quando apenas uma configuração de build o estava. Cada componente que corresponde torna-se um resultado a triar.
- Dados em falta. O NIST afirma que, «a partir do início de 2024, a NVD acumulou um atraso significativo de CVE por enriquecer». Desde 15 de abril de 2026, enriquece as CVE por prioridade (primeiro as entradas do KEV da CISA, o software usado pelo governo federal e o software crítico segundo a EO 14028) e marca as restantes como «Lowest Priority - not scheduled for immediate enrichment» (NIST). As CVE Numbering Authorities podem fornecer os produtos afetados, incluindo CPE, no registo CVE, e a NVD incorpora esses dados fornecidos por CNA e ADP desde junho de 2026, mas a cobertura varia de CNA para CNA. As notas de lançamento da 5.2 do Yocto Project dizem-no sem rodeios: com verificações baseadas em CPE, «algumas vulnerabilidades simplesmente não são reportadas».
Associar o produto errado é uma fonte de falsos positivos; veja reduzir o ruído das vulnerabilidades.
CPE vs. Package URL
| Package URL | CPE | |
|---|---|---|
| Quem define o nome | O ecossistema do pacote | O dicionário CPE da NVD |
| Identifica | Um pacote num registo ou numa distribuição | Um produto, incluindo hardware e sistemas operativos |
| Formato | pkg:type/namespace/name@version | cpe:2.3:part:vendor:product:version:... |
| Norma | ECMA-427 | NISTIR 7695 (CPE 2.3) |
| Usado por | OSV, avisos do GitHub, ferramentas SBOM | NVD, muitos scanners |
| Falha típica | Falta em código incorporado ou listado à mão | Nomes de fornecedor e produto ambíguos; sem dados CPE para muitas CVE recentes |
Use um package URL sempre que exista um ecossistema de pacotes, um CPE para produtos comerciais, firmware e hardware, e ambos quando um requisito pedir ambos. Os 2026 Minimum Elements da CISA referem CPE e Package-URL como identificadores comuns, e a BSI TR-03183-2 exige esses identificadores para cada componente, quando existem.
CPE nas SBOM
O CycloneDX tem um campo cpe em cada componente, e o SPDX inclui os CPE como identificadores externos. Se for fornecedor, indique o CPE que a NVD usa realmente para o seu produto (procure-o no dicionário) em vez de inventar um: um CPE inventado não corresponde a nada. Os identificadores são uma parte da qualidade dos campos de uma SBOM; se falta algo na lista é outra questão, a completude da SBOM.
O CRACI identifica cada pacote que um build obtém pelo seu package URL. Veja SBOM do momento do build.