SPDX 与 CycloneDX:SBOM 格式比较

所有文章

尽管越来越多地采用软件物料清单 (SBOM) 作为漏洞管理和网络安全工具,但许多组织仍然难以理解当今使用的两种最流行的 SBOM 格式:SPDX 和 CycloneDX。在本文中,我们将比较这两种格式,以帮助您选择适合您需求的一种。

什么是 SBOM 格式

在开发用于软件开发和漏洞管理的软件物料清单时,需要遵守特定的格式或标准。标准 SBOM 格式定义了 SBOM 生成的特定且统一的结构,并确定了如何与软件供应链上的客户和用户共享它。 SBOM 格式还以其他网络安全工具易于理解的格式定义软件的组成。一般来说,SBOM 格式有三种。他们包括:

软件包数据交换(SPDX):这是 Linux 基金会的一个开源、机器可读的 SBOM 项目。它的主要目的是确保开发团队和公司管理开源和专有代码的合规性和透明度。

旋风DX(CDX): 这也是由开放 Web 应用程序安全项目 (OWASP) 社区开发的开源且机器可读的 SBOM 格式。它是一种轻量级 SBOM 格式,专注于在整个软件开发流程中轻松采用和自动化 SBOM 生成。 

软件识别标签(SWID):  SWID 标签更多地被视为软件标识符,而不是 SBOM 格式。它确实提供了一种简单而透明的方法来通过存储有关软件版本的特定信息来跟踪软件库存。

一般来说,官方仅认可 SPDX 和 CycloneDX SBOM 格式。 SWID 格式的主要用途是软件识别,因为它提供的信息不如其他两种格式那么多。

SPDX 和 CycloneDX 包含重叠信息,许多人认为它们可以互换使用,因为没有单一的“标准”SBOM 格式。然而,这两种格式在软件开发生命周期中传统上具有不同的用例。因此,不同的组织必须根据其独特的网络安全和合规性需求来确定哪一种最适合他们。

点击这里 了解有关 SBOM 标准格式的更多信息.

SPDX 与 CycloneDx 比较

SPDX 和 CyclonDX 是 SBOM 生成的两种标准格式,并且很可能在未来很长一段时间内保持这种格式。大多数 SBOM 生成平台都支持这两种格式。然而,它们是具有不同用例的不同工具。下面重点介绍了它们的一些核心差异:

CycloneDX 概述

CycloneDX 是由领先的软件安全组织之一开放 Web 应用程序安全项目 (OWASP) 发起的开源 SBOM 项目。该项目于2017年启动,作为组件分析平台,帮助用户识别软件供应链中的风险。漏洞识别仍然是 CycloneDX 的主要用例。此 SBOM 格式还有助于许可证合规性和识别过时的软件组件。

CycloneDX 专注于自动化并简化整个软件构建周期中 SBOM 要求的采用。该格式被开源和专有软件组织用于安全用例。

作为一种 BOM 格式,CycloneDX 除了准备软件物料清单之外还有其他应用。它还可以用于编译硬件和云系统的组件、漏洞和服务。以 Cyclone DX 格式准备的 SBOM 列出了三个主要领域的漏洞。这些都是:

  • 通用平台枚举 (CPE):应用程序、硬件设备或操作系统中的漏洞。
  • SWID:软件识别标签,用于分析已安装软件的组件
  • 包 URL (PURL)。 CycloneDX 还列出了软件包元数据。

除此之外,CycloneDX 格式还支持软件产品及其组件的来源跟踪。这使得识别软件及其所有组件的作者和供应商变得更加容易。

SPDX概述

SPDX 代表软件包数据交换。它是 Linux 基金会创建的一个开源项目,旨在作为收集和共享软件数据(尤其是许可信息)的通用格式。

SPDX 标准最初于 2011 年作为开源许可证管理工具开发。多年来,该格式经过不断完善,包含了新字段,这些新字段提高了该格式捕获重要安全相关信息的能力,并使其与其他标准 SBOM 格式的互操作性更强。

2021 年 XNUMX 月,国际标准组织承认 SPDX 格式为国际公认的 SBOM 发布标准。 SPDX 是唯一实现这一壮举的 SBOM 格式。

现在版本 2.2.2 开发了 SPDX 规范的原始版本,以方便遵守软件许可策略。后续版本添加了一些功能,使其可用于广泛的用例,包括识别软件漏洞。

最新版本的 SPDX 的设计符合 NTIA 的“软件物料清单的最小元素”标准。它列出了软件的组件、版权、许可证和安全参考。

SPDX 格式的 SBOM 文档应具有如下突出显示的特定字段和部分:

  • 文档创建信息:此信息用于确定与标准处理工具的兼容性
  • 包信息:包信息定义了软件包内共享相同上下文的重要实体,例如容器、组件和产品。
  • 文件信息:软件文件的标识信息,例如每个文件的名称、许可证和版权信息。
  • 片段信息:这并不总是适用。仅当软件数据来自不同来源时,片段信息才是必需的。

●  关系和注释:SPDX 格式的 SBOM 还通过清晰的注释指示软件中使用的不同文档、文件和包之间的关系,使任何人都可以更轻松地查看软件组件关系。

SPDX旋风DX
信息:SPDX SBOM 格式捕获有关软件 BOM 的作者、其创建方式以及每个版本的 SPDX 文件的创建时间的信息。BOM 元数据:CycloneDX 格式捕获有关软件制造商/供应商和目标组件的重要信息。它还包括许可信息以及用于创建物料清单的工具的元数据。
软件包信息:包括整个软件包的公共属性相关的数据。组件:概述整个供应链中软件的所有组件。
文件信息:与软件包中包含的所有文件相关的数据。服务:概述外部 API、端点 URL 和身份验证要求。信任边界遍历和软件的其他外部要求。
片段信息:与文件特定部分相关的数据。依赖关系:该字段概述了软件不同组件之间的直接和传递关系
许可信息:用于捕获有关未在 SPDX 许可证列表中捕获的许可证的数据的字段。扩展:提供有关扩展点的数据,这对未来的用例和功能很有用。
SPDX 元素之间的关联:该字段显示 SPDX 文档中详细介绍的不同文件、文档和包如何相互链接。
注释:解释 SPDX 文档如何审核、审核人员以及审核时间的附加信息。

SPDX 和 CycloneDX 有什么区别?

上面突出显示的两种标准 SBOM 格式可用于生成、共享和管理 SBOM 数据。它们允许用户生成有关软件产品组件的准确信息。 SPDX(软件包数据交换)格式主要设计为一种管理开源软件许可证和共享软件包信息的方式。另一方面,CycloneDX 允许用户创建 SBOM(软件物料清单),以提供有关软件组件的详细信息。

使用哪个标准更好?

由于您选择的格式决定了 SBOM 文档的结构、其组成部分、生成方式以及与用户共享的方式,因此选择正确的 SBOM 格式非常重要 生成SBOM 基于您组织的独特需求。

尽管 SPDX 和 CycloneDX 具有非常相似的应用程序,但它们在最初的用例方面有所不同。 SPDX 格式于 2011 年作为许可证管理工具创建。如今,它对于与供应链上的人员共享有关软件系统组件的详细信息仍然很有用。这使得这种格式对于软件开发目的更加有用。

另一方面,CycloneDX (CDX) 是最近开发的,主要目的是生成 SBOM 文档,这使其成为更有效的漏洞管理工具,因为它详细介绍了软件产品的所有标准组件。 CycloneDX 的轻量级特性还使其成为生成机器可读软件物料清单的有效工具,您可以快速共享和处理

归根结底,这两者之间没有“更好”的格式。选择哪一种很大程度上取决于您组织的具体需求以及您想要生成的 SBOM 文档的预期用例。 

此内容由领先的端到端软件供应链安全解决方案提供商 Scribe Security 为您提供 - 为整个软件供应链中的代码工件以及代码开发和交付流程提供最先进的安全性。 了解更多