赞
踩
“软件物料清单” (SBOM) 已经成为软件安全和软件供应链风险管理的关键组成部分。SBOM 是与应用程序相关的所有软件组件、依赖项和元数据的详尽清单。
乐鑫认为,SBOM 信息是确保联网设备安全性的关键。因此,我们现在提供了相关工具和解决方案,便于跟踪和分析这些信息。
在这篇博文中,我们将介绍乐鑫的 SBOM 生成和分析工具——ESP-IDF-SBOM。
美国国家电信和信息管理局 (NTIA) 的 SBOM FAQ 对 SBOM 的官方定义如下:
软件物料清单 (SBOM) 是一个完整的、正式结构化的组件、库和模块列表,这些组件、库和模块是构建(即编译和链接)给定软件以及它们之间的供应链关系所需的。这些组件可以是开源的或专有的,免费的或付费的,可以广泛使用或限制访问。
每个组件的关键数据字段包括:
SBOM 数据需要通过一致易懂的格式呈现,SPDX、CycloneDX 等都是数据表示的格式。
ESP-IDF wifi_provisioning
组件的简单概念化 SBOM 树如下:
软件包数据交换 (SPDX) 是用于传递 SBOM 信息的开放标准,支持准确识别软件组件、明确映射组件关系,以及将安全和许可信息与每个组件关联起来。
下图概述了可在 SPDX 文档中找到的数据。
ESP-IDF-SBOM 是一个 SBOM 生成工具,为基于 ESP-IDF 的应用程序生成 SPDX 格式的 SBOM。该工具还可以对比美国国家漏洞数据库 (NVD),检查生成的 SBOM 中是否存在已知安全漏洞。
工具工作流程大致如下:
sbom.yml
文件(manifest 文件)安装工具并查看帮助文档:
- $ pip install esp-idf-sbom
- $ esp-idf-sbom --help
-
- usage: esp-idf-sbom [-h] [-q] [-n] [-f] [-v] [-d] [--no-progress] {create,check,manifest} ...
-
- ESP-IDF SBOM tool
-
- positional arguments:
- {create,check,manifest}
- sub-command help
- create Create SBOM file based on the ESP-IDF project_description.json file.
- check Check components/submodules in the ESP-IDF SBOM file for possible
- vulnerabilities reported in the National Vulnerability Database.
- manifest Commands operating atop of manifest files.
-
- options:
- -h, --help show this help message and exit
- -q, --quiet By default auxiliary messages like errors, warnings, debug messages
- or progress are reported to the standard error stream. With this
- option set, all such messages are suppressed.
- -n, --no-colors Do not emit color codes. By default color codes are used when stdout
- or stderr is connected to a terminal.
- -f, --force-colors Emit color codes even when stdout or stderr is not connected to a
- terminal.
- -v, --verbose Be verbose. Messages are printed to standard error output.
- -d, --debug Print debug information. Messages are printed to standard error
- output.
- --no-progress Disable progress bar.
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
生成 SBOM 文件:
- $ cd esp-idf/examples/provisioning/wifi_prov_mgr
- $ idf.py build
- $ esp-idf-sbom create <project description file> --output-file prj.spdx
<project description file>
指位于项目 build
目录中由 ESP-IDF 构建系统默认创建的 project_description.json
文件路径。
检查 SBOM,排查安全漏洞:
- $ esp-idf-sbom check prj.spdx
-
- Report summary
- ┌───────────────────────────────────┬─────────────────────────────────────────────────────────┐
- │ Date: │ 2023-10-10T08:21:39Z │
- │ Project name: │ project-wifi_prov_mgr │
- │ Project version: │ v5.2-dev-3250-g7d8f015a4c │
- │ Vulnerability database: │ NATIONAL VULNERABILITY DATABASE (https://nvd.nist.gov) │
- │ Generated by tool: │ esp-idf-sbom (0.8.0) │
- │ Generated with command: │ esp-idf-sbom check prj.spdx │
- │ Number of scanned packages: │ 57 │
- ├───────────────────────────────────┼─────────────────────────────────────────────────────────┤
- │ CRITICAL CVEs found: │ │
- │ Packages affect by CRITICAL CVEs: │ │
- │ Number of CRITICAL CVEs: │ 0 │
- ├───────────────────────────────────┼─────────────────────────────────────────────────────────┤
- │ HIGH CVEs found: │ │
- │ Packages affect by HIGH CVEs: │ │
- │ Number of HIGH CVEs: │ 0 │
- ├───────────────────────────────────┼─────────────────────────────────────────────────────────┤
- │ MEDIUM CVEs found: │ │
- │ Packages affect by MEDIUM CVEs: │ │
- │ Number of MEDIUM CVEs: │ 0 │
- ├───────────────────────────────────┼─────────────────────────────────────────────────────────┤
- │ LOW CVEs found: │ │
- │ Packages affect by LOW CVEs: │ │
- │ Number of LOW CVEs: │ 0 │
- ├───────────────────────────────────┼─────────────────────────────────────────────────────────┤
- │ UNKNOWN CVEs found: │ │
- │ Packages affect by UNKNOWN CVEs: │ │
- │ Number of UNKNOWN CVEs: │ 0 │
- ├───────────────────────────────────┼─────────────────────────────────────────────────────────┤
- │ All CVEs found: │ │
- │ All packages affect by CVEs: │ │
- │ Total number of CVEs: │ 0 │
- └───────────────────────────────────┴─────────────────────────────────────────────────────────┘
-
-
- Packages with No Identified Vulnerabilities
-
- ┏━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
- ┃ Package ┃ Version ┃ CPE ┃
- ┡━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
- │ project-wifi_prov_mgr │ v5.2-dev-3250-g7d8f015a4c │ cpe:2.3:a:espressif:esp-idf:5.2-dev-325 │
- │ │ │ 0-g7d8f015a4c:*:*:*:*:*:*:* │
- ├───────────────────────┼───────────────────────────┼─────────────────────────────────────────┤
- │ lwip │ 2.1.3 │ cpe:2.3:a:lwip_project:lwip:2.1.3:*:*:* │
- │ │ │ :*:*:*:* │
- ├───────────────────────┼───────────────────────────┼─────────────────────────────────────────┤
- │ cjson │ 1.7.16 │ cpe:2.3:a:cjson_project:cjson:1.7.16:*: │
- │ │ │ *:*:*:*:*:* │
- ├───────────────────────┼───────────────────────────┼─────────────────────────────────────────┤
- │ protobuf-c │ 1.4.1 │ cpe:2.3:a:protobuf-c_project:protobuf-c │
- │ │ │ :1.4.1:*:*:*:*:*:*:* │
- ├───────────────────────┼───────────────────────────┼─────────────────────────────────────────┤
- │ mbed_tls │ 3.4.1 │ cpe:2.3:a:arm:mbed_tls:3.4.1:*:*:*:*:*: │
- │ │ │ *:* │
- ├───────────────────────┼───────────────────────────┼─────────────────────────────────────────┤
- │ freertos │ 10.4.3 │ cpe:2.3:o:amazon:freertos:10.4.3:*:*:*: │
- │ │ │ *:*:*:* │
- └───────────────────────┴───────────────────────────┴─────────────────────────────────────────┘
-
- ...snip
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
SBOM 漏洞检查的相关说明如下:
wifi_prov_mgr
应用程序--check-all-packages
选项,可以扫描未链接到最终可执行文件中的组件build/bootloader
目录中能够找到引导加载程序的构建描述文件该工具支持生成 JSON、CSV 等多种格式的输出报告。获取更多信息,请查阅工具的帮助文档。
SPDX 是 SBOM 的标准格式,并且兼容外部工具。esp-idf-sbom
生成的 SBOM 文件可以使用 cve-bin-tool 等工具扫描。如您已在系统中集成了外部工具并希望使用某些特定功能(例如,对比不同 CVE 数据库进行更全面的扫描),同样可以使用 esp-idf-sbom
生成的 SBOM 文件。
SBOM 的主要优势总结如下:
ESP-IDF-SBOM 工具有助于为基于 ESP-IDF 的项目生成 SBOM,还可以进一步帮助建立项目的安全漏洞持续扫描流程。
乐鑫正在努力使 SBOM 覆盖更多的软件解决方案,我们期待收到 ESP-IDF-SBOM 工具的反馈。
欢迎尝试使用并分享您的体验!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。