使用 VEX 建立例外
弱點可利用性交換 (VEX) 是一種標準格式,用於記錄軟體套件或產品的弱點。Docker Scout 支援 VEX 文件,以便為映像檔中的弱點建立例外。
**注意**
您也可以使用 Docker Scout 儀表板或 Docker Desktop 建立例外。GUI 提供了使用者友善的介面來建立例外,而且可以輕鬆管理多個映像檔的例外。它還允許您一次為多個映像檔或整個組織建立例外。如需詳細資訊,請參閱使用 GUI 建立例外。
先決條件
要使用 OpenVEX 文件建立例外,您需要
- 最新版本的 Docker Desktop 或 Docker Scout CLI 外掛程式
vexctl
命令列工具。- 必須啟用 containerd 映像檔儲存區
- 儲存映像檔的登錄檔儲存庫的寫入權限
VEX 簡介
VEX 標準是由美國網路安全和基礎設施安全局 (CISA) 的一個工作小組定義的。VEX 的核心是可利用性評估。這些評估描述了產品的特定 CVE 狀態。VEX 中可能的弱點狀態為
- 未受影響:無需針對此弱點進行修復。
- 受影響:建議採取行動來修復或解決此弱點。
- 已修復:這些產品版本包含此弱點的修復程式。
- 調查中:尚不清楚這些產品版本是否受此弱點影響。將在以後的版本中提供更新。
VEX 有多種實作和格式。Docker Scout 支援 OpenVex 實作。不論具體實作為何,核心概念都是相同的:提供一個框架來描述弱點的影響。不論實作為何,VEX 的關鍵組成部分包括
- VEX 文件
- 一種用於儲存 VEX 陳述式的安全性諮詢。文件的格式取決於具體的實作。
- VEX 陳述式
- 描述產品中弱點的狀態,不論它是否可被利用,以及是否有方法來修復問題。
- 理由和影響
- 根據弱點狀態,陳述式包含理由或影響陳述式,說明產品為何受影響或未受影響。
- 行動陳述式
- 描述如何修復或減輕弱點。
vexctl
範例
以下範例命令建立了一個 VEX 文件,說明
- 此 VEX 文件描述的軟體產品是 Docker 映像檔
example/app:v1
- 映像檔包含 npm 套件
express@4.17.1
- npm 套件受已知弱點影響:
CVE-2022-24999
- 映像檔不受 CVE 影響,因為在執行此映像檔的容器中永遠不會執行弱點程式碼
$ vexctl create \
--author="author@example.com" \
--product="pkg:docker/example/app@v1" \
--subcomponents="pkg:npm/express@4.17.1" \
--vuln="CVE-2022-24999" \
--status="not_affected" \
--justification="vulnerable_code_not_in_execute_path" \
--file="CVE-2022-24999.vex.json"
以下說明本範例中的選項
--author
- VEX 文件作者的電子郵件地址。
--product
- Docker 鏡像的套件網址 (PURL)。PURL 是一種標準化格式的鏡像識別碼,定義於 PURL 規格中。
Docker 鏡像 PURL 字串以
pkg:docker
類型前綴開頭,後接鏡像儲存庫和版本(鏡像標籤或 SHA256 摘要)。與版本指定為example/app:v1
的鏡像標籤不同,在 PURL 中,鏡像儲存庫和版本以@
分隔。 --subcomponents
- 鏡像中存在漏洞的套件的 PURL。在本範例中,漏洞存在於 npm 套件中,因此
--subcomponents
PURL 是 npm 套件名稱和版本 (pkg:npm/express@4.17.1
) 的識別碼。如果同一個漏洞存在於多個套件中,
vexctl
允許您在單個create
命令中多次指定--subcomponents
旗標。您也可以省略
--subcomponents
,此時 VEX 陳述式將套用至整個鏡像。 --vuln
- VEX 陳述式所處理的 CVE 的 ID。
--status
- 這是漏洞的狀態標籤。它描述了軟體 (
--product
) 與 CVE (--vuln
) 之間的關係。OpenVEX 中狀態標籤的可能值為not_affected(未受影響)
affected(受影響)
fixed(已修復)
under_investigation(調查中)
在本範例中,VEX 陳述式斷言 Docker 鏡像
not_affected
(未受影響)於漏洞。not_affected
狀態是唯一導致 CVE 抑制的狀態,其中 CVE 會從分析結果中過濾掉。其他狀態可用於記錄目的,但它們不適用於建立例外。有關所有可能狀態標籤的更多資訊,請參閱 OpenVEX 規格中的 狀態標籤