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:-:*:*:*:*:*:*:*
첫 번째는 사양에 나오는 예시입니다. 두 번째는 npm 라이브러리 lodash로, 대상 소프트웨어가 node.js입니다. 세 번째는 하드웨어 제품입니다. 세 가지 모두 NVD 사전에 등록되어 있습니다.
CPE 매칭의 작동 방식과 틀리는 지점
NVD 레코드는 CVE가 적용되는 CPE를, 대개 버전 범위와 함께 나열합니다. 스캐너는 SBOM의 각 구성 요소를 CPE 추정치로 바꿔 비교합니다. 여기서 세 가지가 잘못됩니다.
- 모호한 이름. 사전의 공급업체와 제품 이름이 생태계에서 쓰는 패키지 이름과 항상 일치하지는 않습니다. xz 라이브러리는
cpe:2.3:a:tukaani:xz이지만, Debian은 이를xz-utils패키지로 배포합니다. 패키지 이름으로 만든 추정치는 엉뚱한 제품에 맞거나 아무것도 맞지 않습니다. - 지나치게 넓은 범위. 적용 범위 기술이 영향을 받지 않는 버전이나 플랫폼까지 포함할 수 있습니다. 예를 들어 한 가지 빌드 구성만 영향을 받았는데도 제품의 모든 버전이 대상으로 표시되는 경우입니다. 일치하는 구성 요소는 모두 분류해야 할 탐지 결과가 됩니다.
- 데이터 누락. 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 사전 |
| 식별 대상 | 레지스트리나 배포판의 패키지 | 하드웨어와 운영체제를 포함한 제품 |
| 형식 | 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을 참고하세요.