SBOM格式:SPDX 和CycloneDX的区别

admin 2022年10月30日02:08:06评论553 views字数 2779阅读9分15秒阅读模式

SBOM格式:SPDX 和CycloneDX的区别

什么是SBOM格式?

SBOM格式是指用来定义一种统一结构的标准,旨在帮助生成可共享给最终用户的SBOM。这些SBOM以一种其他工具可以理解的通用格式来描述软件的组成。

目前,占据领先地位的SBOM格式是软件包数据交换(SPDX)、软件识别标记(SWID)和CycloneDX。其中只有SPDX和CycloneDX被用于安全用例,而SWID主要关注的是许可证方面。因此SWID不在本次讨论的范围。正如美国网络安全和基础设施安全局(CISA)与其他机构所描述的那样:在一段时间内,我们仍会继续同时使用多种SBOM格式。

SPDX

SPDX是Linux基金会发起的一个项目,其目的是为共享和收集的软件包相关信息创建一种通用的数据交换格式。在占据领先地位的SBOM格式中,SPDX可以支持最大程度的文件格式的集合,包括RDFa、.xlsx、.spdx、.xml、.json和.yaml。SPDX通过描述一组软件包、文件或代码片段,而成为一种动态规范。

SPDX是唯一一种已经达到国际标准化组织(ISO)认证状态的SBOM格式,这意味着它已经满足了ISO所定义的所有标准化的要求和质量保证。而这项于2021年9月宣布的成就,也着重强调了英特尔、微软、西门子和索尼等大公司对SPDX格式的应用与支持。

截至到本文的撰写日期,SPDX规范已更新至2.2.2版本。并且,只有那些具备了SPDX规范中所规定的特定字段以及section的SPDX文档才会被视为有效的文档。SPDX文档由字段和数据组成,包括文档创建信息、程序包信息、文件信息、代码片段信息、许可证信息、关系以及注释。

文档创建信息通常在使用处理工具时,被用于向前和向后的兼容。而程序包信息则用于描述不同的实体,如产品、容器和组件。同时,程序包信息也可用于对共享上下文的相关项进行分组。文件信息包括文件元数据,例如名称和校验、许可证以及版权信息。代码片段信息是可选的,主要在数据的来源不同或数据被绑定到另一个许可证的情况下使用。另外,SPDX还支持对文档、软件包以及文件之间关系的描述。注释则提供了审阅者在SPDX文档中添加其审阅活动相关信息的支持。

SPDX还提供了一种SPDX Lite配置文件,即SPDX规范的一个子集,用来调整特定行业的工作流,并平衡对首要的SPDX标准以及规范的遵守。Lite配置文件主要致力于处理文档创建和程序包信息中的字段,以及附带的基本信息。

CycloneDX

CycloneDX是由长久以来的安全社区领导者,OWASP(Open Web Application Security Project)所发起的。CycloneDX是一种自定义的“轻量级“SBOM标准,主要用于对应用程序安全上下文以及供应链组件的分析。它的核心团队包括Patrick Dwyer,、Jeffry Hesse 以及Dependency Track 的创始人 Steve Springett。其中,Steve Springett是该团队的领导者。除了OWASP,CycloneDX格式的支持者还包括Lockheed Martin、Contrast Security 以及Sonatype。

CycloneDX的独特之处在于,它从一开始就被设计为一种BOM格式,并且适用于包括软件即服务BOM(SaaSBOM)在内的多种用例。它支持除软件之外的无数用例。

CycloneDX还支持通过一个嵌套和分层的方法,来引用其他系统和 BOM 中的组件、服务和漏洞。在涉及到硬件、云和SaaS时,该方法与现代软件生态系统的复杂性相一致。CycloneDX将这种能力称为“BOM-Link”。同时,它还支持此功能在JSON和XML格式中的应用。用户可以引用外部BOM的URL,甚至是使用了外部BOM序列号与版本的BOM-Link URI。

除此之外,CycloneDX还支持对所有原创和第三方组件进行风险识别的详尽库存。这是通过一个组件的类型及类别的列表来实现的。该列表跨越软件和应用程序,进入了设备甚至服务领域。CycloneDX允许通过三个字段来识别漏洞,分别是公共平台枚举(CPE)、SWID和软件包URL(PURL)。CPE规范用于处理操作系统、应用程序和硬件设备中的漏洞。SWID用于已安装的软件,而PURL则用于软件包元数据。

CycloneDX通过哈希值和加密技术,来支持所用BOM相关联组件的完整性验证。通过Sigstore及其附带的Cosign等项目,软件签名正日益成为推动软件供应链安全走向成熟的最佳实践。并且,CycloneDX还支持用来描述组件作者以及供应商能力的“起源”信息,。

基于“起源”的概念,CycloneDX可以通过通信组件的前身、演化以及变体来描述组件的谱系,从而实现对组件谱系的支持。根据高保证的软件供应链要求,来源、谱系以及数字签名的实现,也意味着强大的供应链能力,这也正是NIST的网络安全供应链风险管理(C-SCRM)等指导方针所倡导的。

CycloneDX还提供了对漏洞可利用性交换(VEX)的支持,支持对软件产品和组件中已知漏洞的可利用性进行审查,并且审查及结果可以由软件供应商来进行传达。

多种SBOM格式标准将持续共存

从行业的采用和使用状况中,我们可以明显看出,上述两种处于领先地位的SBOM格式大概率会持续共存一段时间。并且如果能够得到软件供应商以及消费者的支持,它们仍可以继续保持领先位置。典型的SBOM生成工具通常会同时支持这两种格式标准,例如Anchore的 Syft。

随着SBOM的采用和成熟度的持续增长,SBOM格式的生态系统也会持续发展。我们将不断见证现存项目的创新以及新SBOM格式的出现。虽然对于“哪种格式更好”这个问题,仍存在一定争论的空间,但随着恶意分子对此类攻击向量的使用迅速增加,软件供应链透明度和安全性的提升也逐渐成为了一项亟待解决的问题。

数世点评

SBOM旨在提高软件供应链的透明度,其内容信息较大程度上是与外部信息相关联的。为了最大程度地发挥其功能价值,优秀的SBOM产品往往需要具有良好的兼容性。另一方面,作为SBOM的最小要素之一,“自动化支持”包括自动生成和机器可读性两个方面的内容,这些都要求SBOM产品的数据符合特定的统一的标准。当前共存的不同SBOM格式之间都各自具有其独特的关注面,并且在短时间内也很难出现一种可以将多种格式统一起来的标准格式。然而,把握不同格式之间的互通点,掌握将其相互转化的能力,或许对于如今的我们来说是一个不错的选择。



参考阅读
什么是 SBOM(软件物料清单)
软件供应链安全研讨会全纪实
软件供应链安全治理与运营
[调研]软件供应链安全问题触及高管层
[调研]2021年五分之三的公司遭遇软件供应链攻击

原文始发于微信公众号(数世咨询):SBOM格式:SPDX 和CycloneDX的区别

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月30日02:08:06
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   SBOM格式:SPDX 和CycloneDX的区别https://cn-sec.com/archives/1362652.html

发表评论

匿名网友 填写信息