1. 概览
软件物料清单(Software Bill of Materials,SBOM)是软件成分信息的集合,SBOM文件中记录了软件产品或服务所使用组件、库、框架的清单,用于描述软件构建过程中使用的所有组件及其关系,以实现软件供应链的自动化识别与管理的需求。SBOM 属性主要包括基线属性集、未确定的属性值、映射到现有的格式、组件关系以及附加元素,如下图所示:
SBOM已经广泛应用,可以看作软件成分清单的一种实现标准,根据美国国家电信和信息管理局(National Telecommunications and Information Administration,NTIA)要求软件企业提供的 SBOM 是一个正式的、机器可读的列表。
2. 主流 SBOM 格式
当前 SBOM 有三种最为主流的格式,分别为:SPDX、SWID 以及 CycloneDX。具体明细对比如下:
比较项 | SPDX | CycloneDX | SWID |
---|---|---|---|
定义 | 一种标准语言,用于以多种文件格式传达与软件组件相关的组件、许可证、版权和安全信息。 | 一种轻量级SBOM标准,设计用于应用程序安全上下文和供应链组件分析。 | SWID 标准定义了一个生命周期,其中SWID 标签作为软件产品安装过程的一部分添加到端点,并在产品卸载过程中删除。 |
维护主体 | Linux基金会 | OWASP、Sonatype、ServiceNow | NIST |
支持格式 | RDFa、xlsx、spdx、xml、json、yam | XML、JSON | XML |
元数据 | 文档创建信息,组件信息,文件信息,文件片段信息,证书信息,SPDX元素之间的关系,注释信息 | 供应商,制作商,组件信息,证书信息,创建BOM的工具信息,外部API信息,依赖关系信息 | 语料库标签:描述预安装阶段的软件(TAR、ZIP 文件、可执行文件); 主要标签:提供产品名称、标签的全球唯一标识符以及标识标签创建者的基本信息; 补丁标签:标识并描述应用于产品的补丁; 补充标签:增加主要或补丁标签的附加细节。 |
漏洞利用交换(Vulnerability Exploitability Exchange,VEX)和 SaaSBOM 是软件成分清单的两个辅助套件,是对传统SBOM 的延伸与扩展,可以视情况选择独立或者与 SBOM 整合。若要了解更多关于VEX的细节,可以参阅博主文章《「 网络安全常用术语解读 」漏洞利用交换VEX详解》。
SaaSBOM 通过提供系统的逻辑表示形式来补充 IaC(基础设施即代码),包括所有服务的清单、它们对其他服务的依赖、端点 URL、数据分类以及服务之间的数据定向流。
3. SBOM的获取方式
SBOM 可以通过两种方式获取:一是供应商主动提供软件成分清单;另一种是利用软件成分分析SCA工具来自动生成SBOM:
-
软件供应商提供:一些软件供应商会主动提供其产品的SBOM,以增加透明度并帮助客户评估软件的安全性。
-
自动生成工具:有一些自动生成SBOM的工具可用,这些工具通常被称为SCA工具(比如Black Duck、七彩棱镜、OpenSCA),它可以扫描软件源代码或二进制文件,识别其中使用的组件和库,并生成相应的SBOM。
若想了解更多关于 SCA 的细节,可以参阅博主文章《「 网络安全常用术语解读 」软件成分分析SCA详解:从发展背景到技术原理再到业界常用检测工具推荐》。
4. 总结
使用 SBOM,可以更好地跟踪和管理软件的变更,有助于减少错误,提高软件开发的效率。然而,由于软件的生命周期通常比硬件产品更长,且变更更频繁,维护 SBOM 存在一定的挑战。
5. 参考文档
- OWASP 软件物料清单实践指南(2023).pdf(访问密码:6277)
- 软件供应链安全治理实践指南白皮书(2023).pdf (访问密码:6277)
推荐阅读:
- 【解读】保障软件供应链安全:SBOM推荐实践指南(含指南获取链接)
- 【解读】Synopsys发布2024年开源安全和风险分析报告OSSRA