SCA面面观 | 如何生成一份软件物料清单SBOM?

2024-01-12 14:09


由于网络安全挑战和不断变化的威胁环境,使得软件供应链安全成为了一个重要议题。特别是近年来,软件供应链的复杂性和全球化程度的提升,第三方软件的安全性和可追溯性变得越来越重要。


为了应对这一挑战,从美国政府开始,各个国家开始积极推动软件供应链安全的相关政策和措施。美国陆续发布的了《保障软件供应链安全:SBOM实践应用相关指南》、拜登14028号行政令(EO14028)成为了其他国家进行软件供应链安全保护的指导性文件。

近年来,我国先后发布了《网络安全审查办法》《关键信息基础设施安全保护条例》等政策法规强调加强软件供应链的安全保障。《GB/T 36637-2018 信息安全技术 ICT 供应链安全风险管理指南》标准要求,从产品全生命周期的角度开展风险分析及管理,以实现供应链的完整性、保密性、可用性和可控性安全目标。

软件物料清单(SBOM)作为一种有效的基础性工具,被广泛应用于软件供应链的安全管理中。简单来说,SBOM是详细记录软件组件的来源、版本和依赖关系等信息,有助于提高软件的透明度和可追溯性,便于发现和修复其中的安全漏洞。本文我们就来详细讲解 SBOM的具体是什么样子?以及它是如何生成的?



SBOM是个什么样子?


根据美国国家电信和信息化管理局(NTIA)的定义:SBOM是一份信息详尽、机器可读的形式化清单,其中囊括了软件所有组件的详尽信息及它们之间的层级关系。


SBOM是一个结构化列表,其中包含了软件基本信息、软件间的关系和软件其他信息这三类成分。



而SBOM的生成和交付,需要符合相应标准的数据结构。目前,业界公认的三种主流SBOM格式标准分别是SPDX、CycloneDXSWID。这些标准通常采用XML或JSON等机器可读的格式,以便在不同的系统和工具之间进行交换和处理。

1. SPDX格式:是由Linux基金会赞助的SPDX项目编写的开放标准,用于识别和编目与软件相关的组件、许可证、版权、安全参考和其他元数据。SPDX使用一种标准化的、机器可读的格式,使其在不同的公司和行业之间保持一致,适合提供软件供应链、组件和依赖关系的大图。支持包括YAML、JSON、RDF/XML、tag:value等多种文件类型。

2. CycloneDX格式:是一种轻量级的标准,专为应用安全和供应链组件分析而设计,专注于提供快速、可靠的软件组件信息,而不是提供信息详尽的元数据。这使得CycloneDX在处理大型、复杂的软件项目时具有较高的性能。

3. SWID格式:是一种用于标识和描述软件实体的XML标准格式。它是为了提供对软件产品的准确和一致的信息而设计的。SWID支持四种类型的标签,分别是corpus、primary、patch和supplemental,用于在软件开发生命周期中表示不同的软件状态和信息,可以用于软件部署、配置管理、软件资产管理、安全漏洞评估等场景。

美国国家电信和信息化管理局(NTIA)认证了这三种格式,并要求向美联邦政府销售软件的组织必须以这三种格式之一提供SBOM。其中,SPDX作为唯一被写入ISO国际标准的格式,被各个国家广泛使用。

如何生成一份SBOM?


SCA工具作为当下开源软件治理和软件供应链安全管理的重要工具之一,生成SBOM是其重要核心功能之一,为后续各阶段的安全工作提供必备的基础信息,SCA工具生产SBOM可分为6个步骤:

1. 扫描软件:SCA工具会对目标软件进行扫描,扫描过程会涉及软件的源代码、二进制文件、容器镜像等不同层面。SCA工具会分析这些文件,以识别和提取其中的组件信息。

2. 识别组件:在扫描完成后,SCA工具会识别出软件中包含的所有组件。这些组件可能包括开源库、框架、插件等。SCA工具会使用不同的技术和算法,如文件哈希、模式匹配等,来准确识别这些组件。

3. 收集组件信息:一旦组件被识别出来,SCA工具会开始收集这些组件的相关信息。这包括组件的名称、版本号、供应商、许可证类型等。这些信息对于生成完整和准确的SBOM至关重要。

4.生成 SBOM数据:SCA工具会将生成的数据与知识库进行匹配对比,与此同时,根据用户所选的SBOM格式标准(如SPDX、CycloneDX、SWID等)生成相应的SBOM结构,将比对后的数据填入到相应字段。


5. 验证和优化SBOM:在生成SBOM后,SCA工具可能会进行一些验证和优化操作。验证可以包括检查SBOM的格式是否正确、组件信息是否完整、依赖关系是否准确等。优化则是对SBOM进行进一步的调整和改进,以提高其质量和可用性

6. 输出和交付SBOM:SCA工具会将生成的SBOM输出为机器可读的格式(如XML、JSON等),并交付给需要的相关方(软件开发团队、安全团队、合规性检查团队等),可以使用SBOM进行供应链安全管理、软件资产管理、风险评估、漏洞修复、安全事件响应等工作。



充分利用SBOM,确保软件供应链安全


生成SBOM之后,如何充分利用这份清单是保障软件供应链安全的关键所在。首先,通过SBOM可以精确掌握软件中每个组件的来源、版本和依赖关系,这有助于及时发现和修复已知的漏洞,避免安全风险,并且利用SBOM进行许可证合规性检查,确保软件使用合法,避免因违规而引发的法律纠纷。


此外,将SBOM与自动化工具相结合,在软件供应链的引入、生成、应用阶段的风险评估中,帮助识别关键供应商和组件,确保供应链的可靠性。因此,充分利用SBOM,不仅大幅度提升软件的安全性,而且进一步提高软件开发效率,降低合规风险,为整个软件供应链带来更加稳固可靠的安全基础。