type
status
date
slug
summary
tags
category
icon
password
什麼是 CVE 與發現的過程CVE被發現的過程CVE IDCVE Recode方便查目前 CVE 現況的網頁工具 cvedetailsProduct SearchCVE 評分 (待補)CVSSBase ScoreTemporal Score MetricsEnvironmental Score MetricsCVSS VectorCVSS 4.0CVE 資料庫GitHub - CVEProject/cvelistV5NVDNVD API 的使用CPE
什麼是 CVE 與發現的過程
CVE,全名是 Common Vulnerabilities and Exposures(常見漏洞與暴露),是一個公開的漏洞和資訊安全風險列表。它提供了一個唯一的識別器給每個已知的安全漏洞,以便於安全專家和系統管理員能準確、清晰地交流和分享資訊。CVE 列表由美國的 MITRE 公司維護,並得到美國國土安全局 (Department of Homeland Security) 的支持。
每個 CVE 條目包含一個唯一的識別號碼,通常被稱為 CVE ID,以及與該漏洞相關的基本資訊。每個 CVE ID 都會提供足夠的資訊,以便於識別相關的漏洞,並能在不同的資訊安全工具和服務中進行參考。
CVE被發現的過程

- Discover 如字面上,就有『人』漏洞
- Report 『人』把這個漏洞報告給『 CVE Program participant』
- Request 『 CVE Program participant』幫『CVE』請求一個 ID
- Reserve ID 被保存下來
- Submit 把這個CVE的細節描述上去
- Publish 公開給你所~有~想要知道 CVE 的朋友
CVE ID
基本上是隨機分配的,只是分成好幾個部分,並且是由 sub-CNA 去分發的,並且越新的後三位數字越大
原文
A CVE ID is a unique, alphanumeric identifier assigned by the CVE Program. Each identifier references a specific vulnerability.
CVE IDs have the following format:
CVE prefix + Year + Arbitrary Digits
The “Year” portion is the year that the CVE ID was reserved or the year the vulnerability was made public. The year portion is not used to indicate when the vulnerability was discovered.
The “Arbitrary Digits,” or sequence number portion, can include four or more digits in the sequence number portion of the ID. For example, CVE-YYYY-NNNN with four digits in the sequence number, CVE-YYYY-NNNNNNN with seven digits in the sequence number, etc. There is no limit on the number of arbitrary digits.
The CVE Program’s CNA Rules include additional helpful information about CVE IDs:
Assignment Rules - how CVE IDs are assigned.
CVE Recode
一個 CVE Record 指的是一個 CVE 紀錄裡面,具體上要包含什麼樣的資訊,通常就是一段描述(最精華的部分),並且要加上必要的 reference。
另外 CVE 還有一些狀態,以下的 toggle 有詳細的紀錄,有興趣可以查閱
原文
A CVE Record is the descriptive data about a vulnerability associated with a CVE ID, provided by a CVE Numbering Authority (CNA). This data is provided in multiple human and machine-readable formats.
Each CVE Record includes the following:
- CVE ID with four or more digits in the sequence number portion of the ID (i.e., “CVE-1999-0067”, “CVE-2019-12345”, “CVE-2021-7654321”).
- Brief description of the security vulnerability.
- Any pertinent references (i.e., vulnerability reports and advisories).
A CVE Record is associated with one of the following states:
- Reserved: The initial state for a CVE Record; when the associated CVE ID is Reserved by a CNA.
- Published: When a CNA populates the data associated with a CVE ID as a CVE Record, the state of the CVE Record is Published. The associated data must contain an identification number (CVE ID), a prose description, and at least one public reference.
- Rejected: If the CVE ID and associated CVE Record should no longer be used, the CVE Record is placed in the Rejected state. A Rejected CVE Record remains on the CVE List so that users can know when it is invalid.
The CVE Program’s CNA Rules include additional helpful information about CVE Records:
- CVE Record Information Requirements – the full requirements for a CVE Record.
- Assignment Rules – the data elements required within a CVE Record.
方便查目前 CVE 現況的網頁工具 cvedetails
Product Search

可以利用網站裡面的功能,去看每一個產品它違反了哪些 cve,感覺目前可以把這個當作一個簡單的目標去了解
推測應該是使用 cpe 作為查詢手段
CVE 評分 (待補)
CVSS
由美國國家基礎建設諮詢委員會(National Infrastructure Advisory Council, NIAC)所發起,事件回應與安全團隊論壇(FIRST) 這個團隊所維護
評估軟體安全漏洞嚴重性的標準化框架,根據可攻擊性、保密性、完整性、可用性和所需許可權的影響等因素進行評分,以「低(low)、中(medium)、高(high)和嚴重(Critical)」等級標示,最終分數越高則表示漏洞越嚴重。
另外,CVSS 就只是一個表格,因此對於不同 Source,有可能給出不一樣的分數,例如 CVE 官方跟 NIST 評出來的分數不一樣。(不過大部分都只有 nvd 給出評分)
我們可以從 Calculator去略知一二
Base Score
Base Score 是最主要判定 CVSS 危險性的地方,又可以拆成 Exploitability Score 和 Impact Score


Temporal Score Metrics
時間分數指標,可以去了解現在這個東西它時間上急不急

Environmental Score Metrics
就字面上的意思

CVSS Vector

可以發現以上兩則 CVSS 評估都來自於同一個組織,但是分數卻不一樣
CVSS(共同漏洞評分系統)的“向量”是一種編碼方式,用於描述並記錄在計算某個漏洞CVSS分數時所使用的各項指標及其值。這提供了一種簡潔的方式來表示所有對漏洞評分有影響的維度。您提供的兩個例子分別代表了CVSS版本2和版本3.1的評分向量。
- CVSS v2 向量範例:
AV:L/AC:L/Au:N/C:P/I:P/A:P
- AV:L - 攻擊向量(Attack Vector)是本地的(Local),意味著攻擊者需要本地訪問權限。
- AC:L - 攻擊複雜度(Attack Complexity)是低的(Low),表示攻擊相對容易執行。
- Au:N - 認證(Authentication)次數是無(None),攻擊者無需認證即可利用漏洞。
- C:P - 機密性(Confidentiality)影響是部分的(Partial)。
- I:P - 完整性(Integrity)影響是部分的(Partial)。
- A:P - 可用性(Availability)影響是部分的(Partial)。
- CVSS v3.1 向量範例:
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
- CVSS:3.1 - 指定了CVSS的版本。
- AV:L - 攻擊向量是本地的。
- AC:L - 攻擊複雜度是低的。
- PR:L - 所需權限(Privileges Required)是低的(Low),攻擊者需要基本的用戶權限。
- UI:N - 用戶互動(User Interaction)是無(None),攻擊者無需用戶參與即可利用漏洞。
- S:U - 範圍(Scope)是未變更的(Unchanged),意味著攻擊僅影響原始受損系統。
- C:H - 機密性影響是高的(High)。
- I:H - 完整性影響是高的(High)。
- A:H - 可用性影響是高的(High)。
透過這些向量,安全專家可以快速理解漏洞的特性及其對系統的影響。向量也便於在不同的安全系統和報告中共享和比較漏洞資訊。
CVSS 4.0
CVE 資料庫
CVE 有這麼多的條目,要具體的得到與使用這些條目勢必要有地方可以去抓取。前面提到維護 CVE 的主要是 MITRE 公司,並且由NIST 協助幫忙,因此很自然的,在資料方面有兩個 source 可以使用。
而總體來說, MITRE 所提供的資料相對精簡和陽春,而 NIST 提供的 NVD 豐富許多
GitHub - CVEProject/cvelistV5
使用這個資料源目前會有幾個問題
- 軟體硬體版本等等不方便查詢 有時候會遇到一個 bug 是很多產品都同時擁有的(例如瀏覽器),在這樣的前提之下,裡頭的 product 有可能會直接空著,寫 NULL (統計過後發現有非常多的 CVE 條目都是如此,不是少數)
- 多數條目沒有 CVE 的評分
詳細裡面的資料長什麼樣子
NVD
基本上就是一個由 NIST 維護與提供的 CVE 資料庫,官方推從直接從 API 去抓內容
這個資料庫解決了剛才 cvelistV5 的兩個痛點
- 有 cpe 來解決版本上的問題
- NIST 有另外對資料進行評分,而且假如 MITRE 有的分數,也會附上去
NVD API 的使用
以下可以申請 API Key, 比較沒有速率和頻率的限制
比較容易用到的 Parameter 們 (可以改成表格形式)
- cveId
- cvssV2Metrics 注意:當 2022/7 之後, cve 就沒有提供 v2 的紀錄了
- cvssV2Severity 有 LOW, MEDIEM, HIGH
- cvssV3Metrics
- cvssV3Severity LOW, MEDIUM, HIGH, CRITICAL
- KeywordExactMatch & keywordSearch
假如是一個片語,那要加上 KeywordExactMatch
假如像下面這樣,那就不用加
- lastModStartDate & lastModEndDate
- noRejected 就是不要顯示 reject 的
- pubStartDate & pubEndDate
- startIndex
- versionEnd & versionEndType 需要 virtualMatchString
- versionStart & versionStartType 需要 virtualMatchString
- virtualMatchString 用 cpe Name 去過濾 cpe 裡面的內容
使用 API 的範例 Python
Response
前 1000 行左右
CPE
Common Platform Enumeration(CPE)為美國國家標準技術研究所(NIST)所提出的將弱點標準化的方式,用於識別軟體應用程式、作業系統以及硬體設備上各種資訊資產,並且具有版本區別,目前最新版本為 (2020/11)。
CPE 分為三大類,分別為 作業系統(o)、應用程式(a)及硬體設備(h)。
主要資訊再分為主要廠商名稱(vendor)、產品名稱(product)、產品版本(version)、產品更新(update)、產品版次(edition)及語系(language)。
CPE 2.3的格式由NIST維護,格式如下所示:
其中
cpe_version
表示CPE定義的版本,當前最新版為2.33。
part
表示類型,可取值為**a
(應用程式)、h
(硬體)或o
*(作業系統)4。
vendor
表示製造或創建產品的個人或組織5。
product
表示系統/包/組件的名稱6。
version
表示系統/包/組件的版本7。
update
用於更新或服務包資訊8。
edition
描述系統/包/組件構建的進一步細節9。
language
表示有效的語言標籤10。
- 作者:Q蛇
- 链接:/article/7dd0bdcb-4577-4721-9962-7de3f8d8492b
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。