当前位置:   article > 正文

使用 ESP-IDF-SBOM 生成软件物料清单_软件物料清单示例

软件物料清单示例

概述

“软件物料清单” (SBOM) 已经成为软件安全和软件供应链风险管理的关键组成部分。SBOM 是与应用程序相关的所有软件组件、依赖项和元数据的详尽清单。

乐鑫认为,SBOM 信息是确保联网设备安全性的关键。因此,我们现在提供了相关工具和解决方案,便于跟踪和分析这些信息。

在这篇博文中,我们将介绍乐鑫的 SBOM 生成和分析工具——ESP-IDF-SBOM

SBOM

美国国家电信和信息管理局 (NTIA) 的 SBOM FAQ 对 SBOM 的官方定义如下:

软件物料清单 (SBOM) 是一个完整的、正式结构化的组件、库和模块列表,这些组件、库和模块是构建(即编译和链接)给定软件以及它们之间的供应链关系所需的。这些组件可以是开源的或专有的,免费的或付费的,可以广泛使用或限制访问。

每个组件的关键数据字段包括:

  • 供应商名称
  • 组件名称
  • 组件版本
  • 其他唯一标识符
  • 依赖关系
  • SBOM 数据作者
  • 时间戳

SBOM 数据需要通过一致易懂的格式呈现,SPDX、CycloneDX 等都是数据表示的格式。

ESP-IDF wifi_provisioning 组件的简单概念化 SBOM 树如下:

SPDX

软件包数据交换 (SPDX) 是用于传递 SBOM 信息的开放标准,支持准确识别软件组件、明确映射组件关系,以及将安全和许可信息与每个组件关联起来。

下图概述了可在 SPDX 文档中找到的数据。

(图片来源 SPDX website

ESP-IDF-SBOM

ESP-IDF-SBOM 是一个 SBOM 生成工具,为基于 ESP-IDF 的应用程序生成 SPDX 格式的 SBOM。该工具还可以对比美国国家漏洞数据库 (NVD),检查生成的 SBOM 中是否存在已知安全漏洞。

SBOM 生成器工作流程

工具工作流程大致如下:

  • 从依赖组件中收集 sbom.yml 文件(manifest 文件
  • 解析 ESP-IDF 构建系统生成的项目描述文件
  • 生成 SPDX 报告
  • 扫描生成的 SPDX 报告,检查是否存在已知安全漏洞,之后生成最终报告

入门指南

安装工具并查看帮助文档:

  1. $ pip install esp-idf-sbom
  2. $ esp-idf-sbom --help
  3. usage: esp-idf-sbom [-h] [-q] [-n] [-f] [-v] [-d] [--no-progress] {create,check,manifest} ...
  4. ESP-IDF SBOM tool
  5. positional arguments:
  6. {create,check,manifest}
  7. sub-command help
  8. create Create SBOM file based on the ESP-IDF project_description.json file.
  9. check Check components/submodules in the ESP-IDF SBOM file for possible
  10. vulnerabilities reported in the National Vulnerability Database.
  11. manifest Commands operating atop of manifest files.
  12. options:
  13. -h, --help show this help message and exit
  14. -q, --quiet By default auxiliary messages like errors, warnings, debug messages
  15. or progress are reported to the standard error stream. With this
  16. option set, all such messages are suppressed.
  17. -n, --no-colors Do not emit color codes. By default color codes are used when stdout
  18. or stderr is connected to a terminal.
  19. -f, --force-colors Emit color codes even when stdout or stderr is not connected to a
  20. terminal.
  21. -v, --verbose Be verbose. Messages are printed to standard error output.
  22. -d, --debug Print debug information. Messages are printed to standard error
  23. output.
  24. --no-progress Disable progress bar.

生成 SBOM 文件:

  1. $ cd esp-idf/examples/provisioning/wifi_prov_mgr
  2. $ idf.py build
  3. $ esp-idf-sbom create <project description file> --output-file prj.spdx

<project description file> 指位于项目 build 目录中由 ESP-IDF 构建系统默认创建的  project_description.json 文件路径。

检查 SBOM,排查安全漏洞:

  1. $ esp-idf-sbom check prj.spdx
  2. Report summary
  3. ┌───────────────────────────────────┬─────────────────────────────────────────────────────────┐
  4. Date: │ 2023-10-10T08:21:39Z │
  5. │ Project name: │ project-wifi_prov_mgr │
  6. │ Project version: │ v5.2-dev-3250-g7d8f015a4c │
  7. │ Vulnerability database: │ NATIONAL VULNERABILITY DATABASE (https://nvd.nist.gov) │
  8. │ Generated by tool: │ esp-idf-sbom (0.8.0) │
  9. │ Generated with command: │ esp-idf-sbom check prj.spdx │
  10. Number of scanned packages: │ 57
  11. ├───────────────────────────────────┼─────────────────────────────────────────────────────────┤
  12. │ CRITICAL CVEs found: │ │
  13. │ Packages affect by CRITICAL CVEs: │ │
  14. Number of CRITICAL CVEs: │ 0
  15. ├───────────────────────────────────┼─────────────────────────────────────────────────────────┤
  16. │ HIGH CVEs found: │ │
  17. │ Packages affect by HIGH CVEs: │ │
  18. Number of HIGH CVEs: │ 0
  19. ├───────────────────────────────────┼─────────────────────────────────────────────────────────┤
  20. │ MEDIUM CVEs found: │ │
  21. │ Packages affect by MEDIUM CVEs: │ │
  22. Number of MEDIUM CVEs: │ 0
  23. ├───────────────────────────────────┼─────────────────────────────────────────────────────────┤
  24. │ LOW CVEs found: │ │
  25. │ Packages affect by LOW CVEs: │ │
  26. Number of LOW CVEs: │ 0
  27. ├───────────────────────────────────┼─────────────────────────────────────────────────────────┤
  28. │ UNKNOWN CVEs found: │ │
  29. │ Packages affect by UNKNOWN CVEs: │ │
  30. Number of UNKNOWN CVEs: │ 0
  31. ├───────────────────────────────────┼─────────────────────────────────────────────────────────┤
  32. All CVEs found: │ │
  33. All packages affect by CVEs: │ │
  34. │ Total number of CVEs: │ 0
  35. └───────────────────────────────────┴─────────────────────────────────────────────────────────┘
  36. Packages with No Identified Vulnerabilities
  37. ┏━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
  38. ┃ Package ┃ Version ┃ CPE ┃
  39. ┡━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
  40. │ project-wifi_prov_mgr │ v5.2-dev-3250-g7d8f015a4c │ cpe:2.3:a:espressif:esp-idf:5.2-dev-325
  41. │ │ │ 0-g7d8f015a4c:*:*:*:*:*:*:*
  42. ├───────────────────────┼───────────────────────────┼─────────────────────────────────────────┤
  43. │ lwip │ 2.1.3 │ cpe:2.3:a:lwip_project:lwip:2.1.3:*:*:*
  44. │ │ │ :*:*:*:*
  45. ├───────────────────────┼───────────────────────────┼─────────────────────────────────────────┤
  46. │ cjson │ 1.7.16 │ cpe:2.3:a:cjson_project:cjson:1.7.16:*: │
  47. │ │ │ *:*:*:*:*:*
  48. ├───────────────────────┼───────────────────────────┼─────────────────────────────────────────┤
  49. │ protobuf-c │ 1.4.1 │ cpe:2.3:a:protobuf-c_project:protobuf-c │
  50. │ │ │ :1.4.1:*:*:*:*:*:*:*
  51. ├───────────────────────┼───────────────────────────┼─────────────────────────────────────────┤
  52. │ mbed_tls │ 3.4.1 │ cpe:2.3:a:arm:mbed_tls:3.4.1:*:*:*:*:*: │
  53. │ │ │ *:*
  54. ├───────────────────────┼───────────────────────────┼─────────────────────────────────────────┤
  55. │ freertos │ 10.4.3 │ cpe:2.3:o:amazon:freertos:10.4.3:*:*:*: │
  56. │ │ │ *:*:*:*
  57. └───────────────────────┴───────────────────────────┴─────────────────────────────────────────┘
  58. ...snip

SBOM 漏洞检查的相关说明如下:

  • 以上示例使用的是 ESP-IDF v5.2-dev 的 wifi_prov_mgr 应用程序
  • 在 check 命令中添加 --check-all-packages 选项,可以扫描未链接到最终可执行文件中的组件
  • 也可以为 ESP-IDF 引导加载程序生成 SBOM 报告,在项目的 build/bootloader 目录中能够找到引导加载程序的构建描述文件
  • 上述输出结果中标记了 RTOS、网络栈、TLS 栈等具有通用平台枚举项的关键组件
  • 该工具还提供了构建过程中其他组件和库的信息(上述输出结果中未显示)

报告格式

该工具支持生成 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 工具的反馈。

欢迎尝试使用并分享您的体验!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/183895
推荐阅读
相关标签
  

闽ICP备14008679号