# 【名詞解釋】CPE - 軟體/硬體/作業系統的標準化身分證

CPE 可以把它想成\*\*「軟體/硬體/作業系統的標準化身分證」\*\*，用來讓不同的弱掃、資產盤點、漏洞資料庫能用同一種語言描述「到底是哪個產品、哪個版本」。

---

## CPE 是什麼

**CPE（Common Platform Enumeration）** 是 NIST 定義的一套命名標準。  
它用**統一格式**描述：

- 產品類型（應用程式 / 作業系統 / 硬體）
- 廠商
- 產品名稱
- 版本
- 其他屬性（語言、更新版、版次…）

**目的：**  
讓「漏洞（CVE）」可以清楚綁到「受影響產品/版本」。

---

## 你會在哪裡看到 CPE

最常見的地方：

- **NVD 的 CVE 詳細頁**  
    下面會有 **Known Affected Software Configurations**  
    就是用 CPE 寫出「哪些產品版本受影響」。
- **弱點掃描/資產管理工具**  
    用 CPE 來做自動比對與風險盤點。

---

## CPE 2.3 長什麼樣（看得懂就好）

你常見的是 **CPE 2.3** 格式：

`cpe:2.3:<part>:<vendor>:<product>:<version>:...`

其中 `<part>` 通常是：

- `a` = application（應用）
- `o` = operating system（作業系統）
- `h` = hardware（硬體）

（後面還有很多欄位，但實務上你最常看前 4-5 個就夠了。）

---

## 為什麼 CPE 很重要（實務角度）

有 CPE，你就能做到：

1. **自動化對帳**
    
    
    - 你的資產清冊 / SBOM / 掃描結果
    - 跟 NVD 的受影響清單做比對  
        → 快速找出「我是不是中招」。
2. **跨工具一致性**
    
    
    - 不同廠牌的掃描器
    - 不同資料來源  
        都能用同一套識別方式對齊。

---

## 但 CPE 也有現實限制

這點很關鍵，避免誤判：

- **更新可能慢半拍或不精準**  
    新框架、新套件或複雜相依  
    CPE 可能不完整或延後補齊。
- **對前端/開源生態有時不夠細**  
    特別是
    
    
    - 子套件
    - monorepo
    - canary/nightly
    - 特殊建置版本

所以最佳做法是：

> **CPE 用來快速盤點**  
> **最終以原廠公告 + 你的 lockfile/SBOM 驗證**

---

## 一句超白話總結

**CPE = 讓漏洞資料庫能精準說「哪個產品/哪個版本」的標準名稱。**  
它是 CVE 與你的資產之間的**重要橋樑**。