Software Bill of Materials(SBOM)提供類似製造業的 BOM(物料清單),在這個清單中會列出軟體中所有的元件、依賴項目和版本,目的是提供軟體組成的透明度,透過名單的提供可以快速識別受影響的元件以及滿足法規要求(如美國 EO 14028)。
典型的 SBOM 包含:
{
"name": "my-application",
"version": "1.0.0",
"components": [
{
"name": "nginx",
"version": "1.21.0",
"type": "library"
},
{
"name": "openssl",
"version": "1.1.1k",
"type": "library"
}
]
}
SBOM 主要分成兩種格式 SPDX 以及 CycloneDX
SPDX 是由 Linux Foundation 主導,主要是符合 ISO/IEC 5962:2021 國際標準,提供詳細的授權資訊追蹤。
起源於 OWASP 專案,專門為應用程式安全設計,該準則以安全為中心的設計,並專注於漏洞管理和風險評估。
SPDX | CycloneDX | |
---|---|---|
用途導向 | 合規性和授權管理為主 | 安全性和漏洞管理為主 |
複雜度 | 更複雜但更全面 | 相對簡化但專注 |
生態系 | 更廣泛的產業接受度 | 在安全工具中更常見 |
標準化程度 | 國際標準 (ISO) | OWASP 專案標準 |
掃描時可以有多種搭配:
兩個不同的掃描所能達成的結果是相同的,考試提供的模擬題主要是考 bom + trivy 的用法,因此這邊會介紹該用法。
在考試時主要透過 bom --help
,以及 trivy --help
查看指令,下面範例是透過 bom 產生 SBOM 還有透過 trivy 產生 cycloneDX。另外是透過 trivy 掃描 sbom 的結果已提供弱點掃描結果,其實也是可以透過 trivy 直接掃描 image ,但是 sbom 的檔案比較小掃描起來比較有效率。
# 使用 bom 產生 SBOM
bom generate --image <image> --format json --output output.json
# 使用 trivy 產生 cycloneDX
trivy image --format cyclonedx --output output.json <image>
# 使用 trivy 檢查 sbom 的漏洞
trivy sbom sbom_check.json