使用 ESP-IDF-SBOM 生成軟件物料清單
概述
“軟件物料清單” (SBOM) 已經(jīng)成為軟件安全和軟件供應(yīng)鏈風(fēng)險(xiǎn)管理的關(guān)鍵組成部分。SBOM 是與應(yīng)用程序相關(guān)的所有軟件組件、依賴項(xiàng)和元數(shù)據(jù)的詳盡清單。
樂鑫認(rèn)為,SBOM 信息是確保聯(lián)網(wǎng)設(shè)備安全性的關(guān)鍵。因此,我們現(xiàn)在提供了相關(guān)工具和解決方案,便于跟蹤和分析這些信息。
在這篇博文中,我們將介紹樂鑫的 SBOM 生成和分析工具——ESP-IDF-SBOM。
SBOM
美國國家電信和信息管理局 (NTIA) 的 SBOM FAQ 對(duì) SBOM 的官方定義如下:
軟件物料清單 (SBOM) 是一個(gè)完整的、正式結(jié)構(gòu)化的組件、庫和模塊列表,這些組件、庫和模塊是構(gòu)建(即編譯和鏈接)給定軟件以及它們之間的供應(yīng)鏈關(guān)系所需的。這些組件可以是開源的或?qū)S械模赓M(fèi)的或付費(fèi)的,可以廣泛使用或限制訪問。
每個(gè)組件的關(guān)鍵數(shù)據(jù)字段包括:
供應(yīng)商名稱
組件名稱
組件版本
其他唯一標(biāo)識(shí)符
依賴關(guān)系
SBOM 數(shù)據(jù)作者
時(shí)間戳
SBOM 數(shù)據(jù)需要通過一致易懂的格式呈現(xiàn),SPDX、CycloneDX 等都是數(shù)據(jù)表示的格式。
ESP-IDF wifi_provisioning 組件的簡(jiǎn)單概念化 SBOM 樹如下:

SPDX
軟件包數(shù)據(jù)交換 (SPDX) 是用于傳遞 SBOM 信息的開放標(biāo)準(zhǔn),支持準(zhǔn)確識(shí)別軟件組件、明確映射組件關(guān)系,以及將安全和許可信息與每個(gè)組件關(guān)聯(lián)起來。
下圖概述了可在 SPDX 文檔中找到的數(shù)據(jù)。

ESP-IDF-SBOM
ESP-IDF-SBOM 是一個(gè) SBOM 生成工具,為基于 ESP-IDF 的應(yīng)用程序生成 SPDX 格式的 SBOM。該工具還可以對(duì)比美國國家漏洞數(shù)據(jù)庫 (NVD),檢查生成的 SBOM 中是否存在已知安全漏洞。
SBOM 生成器工作流程

工具工作流程大致如下:
從依賴組件中收集 sbom.yml 文件(manifest 文件)
解析 ESP-IDF 構(gòu)建系統(tǒng)生成的項(xiàng)目描述文件
生成 SPDX 報(bào)告
掃描生成的 SPDX 報(bào)告,檢查是否存在已知安全漏洞,之后生成最終報(bào)告
入門指南
安裝工具并查看幫助文檔:
生成 SBOM 文件:
<project description file> 指位于項(xiàng)目 build 目錄中由 ESP-IDF 構(gòu)建系統(tǒng)默認(rèn)創(chuàng)建的 project_description.json 文件路徑。
檢查 SBOM,排查安全漏洞:
SBOM 漏洞檢查的相關(guān)說明如下:
以上示例使用的是 ESP-IDF v5.2-dev 的 wifi_prov_mgr 應(yīng)用程序
在 check 命令中添加 --check-all-packages 選項(xiàng),可以掃描未鏈接到最終可執(zhí)行文件中的組件
也可以為 ESP-IDF 引導(dǎo)加載程序生成 SBOM 報(bào)告,在項(xiàng)目的 build/bootloader 目錄中能夠找到引導(dǎo)加載程序的構(gòu)建描述文件
上述輸出結(jié)果中標(biāo)記了 RTOS、網(wǎng)絡(luò)棧、TLS 棧等具有通用平臺(tái)枚舉項(xiàng)的關(guān)鍵組件
該工具還提供了構(gòu)建過程中其他組件和庫的信息(上述輸出結(jié)果中未顯示)
報(bào)告格式
該工具支持生成 JSON、CSV 等多種格式的輸出報(bào)告。獲取更多信息,請(qǐng)查閱工具的幫助文檔。
兼容性
SPDX 是 SBOM 的標(biāo)準(zhǔn)格式,并且兼容外部工具。esp-idf-sbom 生成的 SBOM 文件可以使用 cve-bin-tool 等工具掃描。如您已在系統(tǒng)中集成了外部工具并希望使用某些特定功能(例如,對(duì)比不同 CVE 數(shù)據(jù)庫進(jìn)行更全面的掃描),同樣可以使用 esp-idf-sbom 生成的 SBOM 文件。
總結(jié)
SBOM 的主要優(yōu)勢(shì)總結(jié)如下:
生成構(gòu)建軟件構(gòu)件的組件清單
列出軟件許可、組件版本信息,協(xié)助進(jìn)行版本更新
協(xié)助執(zhí)行安全漏洞分析
成為許多安全相關(guān)認(rèn)證的必要條件
ESP-IDF-SBOM 工具有助于為基于 ESP-IDF 的項(xiàng)目生成 SBOM,還可以進(jìn)一步幫助建立項(xiàng)目的安全漏洞持續(xù)掃描流程。
樂鑫正在努力使 SBOM 覆蓋更多的軟件解決方案,我們期待收到 ESP-IDF-SBOM 工具的反饋。
歡迎嘗試使用并分享您的體驗(yàn)!

相關(guān)資源
軟件供應(yīng)鏈
https://zh.wikipedia.org/zh-cn/%E8%BB%9F%E9%AB%94%E4%BE%9B%E6%87%89%E9%8F%88
ESP-IDF-SBOM
https://github.com/espressif/esp-idf-sbom
軟件包數(shù)據(jù)交換
https://spdx.github.io/spdx-spec/v2.3/
美國國家漏洞數(shù)據(jù)庫
https://nvd.nist.gov/
manifest 文件
https://github.com/espressif/esp-idf-sbom#manifest-file
通用平臺(tái)枚舉項(xiàng)
https://nvd.nist.gov/products/cpe/search
cve-bin-tool
https://github.com/intel/cve-bin-tool