由于最近针对软件供应链的攻击增多,软件物料清单 (SBOM) 生成已成为开发的核心步骤,团队必须完成该步骤才能安全地构建和交付软件。 一个SBOM 是详细列出软件产品中使用的所有软件组件的综合列表。 SBOM 安全的目的是确保软件供应链内的透明度和可追溯性,使组织能够识别和纠正潜在的安全漏洞和合规风险。
但创建和管理 SBOM 是一项复杂的工作,尤其是对于拥有大量软件组合的组织而言。识别产品中使用的所有软件组件并跟踪所有更新和补丁,同时确保其准确性,需要采用系统方法。
在本文中,我们将讨论有效管理 SBOM 的最佳实践和策略、与 SBOM 管理相关的挑战,以及如何简化此流程以确保软件供应链的安全。
什么是SBOM管理?
创建软件物料清单只是维护软件安全过程的第一步。但仅创建软件组件列表还不够;还需要创建软件组件列表。您需要跟踪、验证、编辑和管理您的 SBOM。这样做可以确保您不仅了解软件的组件,而且实际上了解各个组件的所有风险及其对软件的影响。
SBOM 管理是跟踪在 DevOps 管道中生成的软件物料清单的过程。管理 SBOM 涉及生成、存储、分析和监控 SBOM 文档。在整个应用程序生命周期中完成这些 SBOM 管理任务可以帮助您识别软件依赖性并提高供应链的安全性。
当您的 SBOM 在生成它的构建目录中处于休眠状态时,它就没有用处。 SBOM 管理可帮助您利用这些数据,以便您能够生成可行的见解并更好地了解软件包的开源组件及其对软件供应链的影响。漏洞扫描和报告也是 SBOM 管理的一部分。
因此,虽然生成软件物料清单是 DevOps 流程的重要组成部分,但 SBOM 管理的持续流程更为重要。它允许您充分利用和实施漏洞预警系统、零信任策略和长期软件供应链情报。
SBOM 管理见解
为了应对整个供应链中不同软件面临的越来越多的威胁,Gartner 预测,多达 60% 依赖软件作为关键基础设施的组织将在未来几年开始强制使用 SBOM。这是根据 Gartner 2022 年 SBOM 创新洞察报告 它提供了有关实施 SBOM 管理计划重要性的重要信息。
该报告认识到 SBOM 网络安全对于提高软件供应链中使用的代码的可见性、完整性、透明度和安全性的重要性。如果不了解软件的组件,就很难了解该软件的风险和漏洞的程度。最好的解决方案是简单地跟踪应用程序中的每个软件,并根据已知漏洞的数据库对其进行检查,以确保它们的安全。
根据 Gartner 报告,每个组织都应该投资为他们构建的每个软件包生成 SBOM。接下来,他们应该验证他们使用的所有软件的 SBOM。还需要持续的 SBOM 管理,以便即使在部署应用程序之后,他们也可以重新评估数据以了解新的安全风险。
有效的软件物料清单管理策略
组织可以通过优先考虑 SBOM 管理来确保其构建或使用的软件的安全性和合规性。以下是有效管理组织的软件物料清单的一些策略。
自动生成 SBOM
应为软件的每次迭代创建软件物料清单。但如果开发人员需要为每个构建手动生成 SBOM,那么他们将很难实现这一点。这就是为什么 SBOM生成 应该内置到您的软件交付管道中。自动化使得实现 SBOM 生成的“机器速度”成为可能,正如国家电信和信息管理局 (NTIA) 所建议的那样。
SBOM自动化 还可以提高 SBOM 文档的完整性和可信度。开发流程中生成的自动 SBOM 可以进行加密签名,向用户证明 SBOM 中的软件组件列表是真实的。
结构化格式
软件物料清单管理中提供的所有数据都应基于标准格式构建。虽然还有其他几种格式,但 SPDX、SWID 和 CycloneDX 是三种最流行的格式。由于没有官方的 SBOM 建议或通用的行业标准,因此每个组织都可以选择最适合自己的格式。这里最重要的因素是一致性,无论您选择哪种 SBOM 格式。
为 SaaS 提供 SBOM
在实施软件网络安全措施时,组织通常关注他们自己部署在云或本地的应用程序或软件,而忽略他们使用的 SaaS 应用程序。
但是,也建议为这些软件即服务应用程序提供 SBOM。 SaaS 模型中的客户无需自行管理软件更新或新版本。然而,如果客户的 SaaS 应用程序因漏洞而受到损害,为应用程序提供 SBOM 可以作为早期预警,这也可能有助于他们自己的网络安全措施。
每个版本的定期更新
为了最有效,SBOM 应该是特定于版本的;开发人员每次推出应用程序更新时都应修改 SBOM。由于在版本之间手动更新它很困难,开发人员很容易陷入制作一次 SBOM 并经常升级它的陷阱。公司应确保其软件物料清单管理在新版本软件可用时及时更新。这是自动生成 SBOM 很重要的另一个原因,因为它可以让您在每次发布更新时更轻松地生成 SBOM 的更新版本。
建立清晰的沟通渠道
SBOM 管理涉及以某种方式连接到软件产品的多个利益相关者。这包括软件供应商、开发团队、客户和其他人。确保有效 SBOM 管理的方法之一是在这些利益相关者之间建立清晰的沟通渠道。这确保每个人都可以访问有关产品中软件组件的任何新信息,并可以根据需要实施任何更新
包括元数据
SBOM 文档中包含的元数据(附加信息,例如许可数据和修补状态)的数量取决于您使用的格式。虽然某些格式默认情况下可能比其他格式支持更多的元数据,但开发人员应优先考虑向 SBOM 添加尽可能多的元数据。这些附加信息使用户可以更轻松地进行 SBOM 管理,因为他们不必在每次需要时手动查找这些信息。每当发现安全缺陷时,元数据还可以让您更轻松地识别和更新产品中易受攻击的组件。
SBOM 管理挑战
尽管 SBOM 得到了广泛采用,但 SBOM 管理的许多方面对用户来说仍然具有挑战性。也许最大的挑战是整个行业的 SBOM 格式缺乏标准化。虽然坚持相同的 SBOM 创建和共享标准可以保证每个人都能获得最佳价值,但达成共识还需要一段时间。
另一个挑战是需要保持 SBOM 的最新性和相关性。大多数组织创建的软件都是动态的。这意味着定期发布更新并添加新组件。为了保持相关性和安全使用,软件物料清单必须随着软件的每个新版本进行更新。每个组织都必须为 SBOM 生成和管理工具制定计划,以便他们可以“随着软件的每个新版本更加无缝地发布新的 SBOM”。
此外,SBOM 中还存在不准确或遗漏的风险,这可能会导致暴露漏洞和合规性问题。一些 SBOM 生成工具无法记录开发人员在其源代码中包含的原始代码或二进制文件。以这种方式生成的 SBOM 会产生一种错误的完整性感,这使得它们不安全。为了安全性和透明度,您的 SBOM 应该非常详细,列出尽可能多的组件,并以最佳方式提供分层信息以显示这些组件之间的关系。
最后,存在管理 SBOM 本身安全性的风险,因为它包含有关开发过程中使用的软件组件的敏感信息,包括潜在的安全漏洞。因此,组织必须采取措施保护 SBOM 免遭未经授权的访问或披露。
总结
总而言之,对于任何创建或使用软件产品的组织来说,强调正确管理软件物料清单的重要性至关重要。除了创建 SBOM 之外,实施有效的 SBOM 管理实践还可以帮助公司确保其软件产品的安全并符合相关法规。
有效的 SBOM 管理框架的一些关键组件包括保留软件组件的全面清单、安排定期更新、根据需要进行风险评估以及自动化 SBOM 生成和管理。
通过遵循这些最佳实践,组织可以更深入地了解其软件供应链,从而最大限度地降低安全漏洞的风险并避免其他潜在问题。最终,有效的 SBOM 管理将帮助您构建安全且更可靠的软件产品,以满足客户和所有利益相关者的需求。