软件包含大量且范围广泛的组件、部分和相互依赖关系。需要有效缓解与使用软件相关的安全风险;需要遵守与组件相关的许可证。通过第三方代码(包括开源软件 (OSS))了解产品中所有项目的出处至关重要,无论这些元素源自企业的团队还是团队之外。确保安全的最佳方法是维护软件中所有组件的当前“成分列表”列表——软件材料清单 (SBOM)。
什么是 SBOM?
就像食品的成分列表一样,SBOM 就是软件中组件和服务的列表。SBOM 类似于制造和产品开发中的供应链文档。在产品开发供应链中,制造商使用特定供应商的零件,安装组件来构建产品,然后跟踪产品从制造商到购买它的零售店的旅行历史。与此类似,网络环境中的服务器机器是使用交付给制造厂的供应商部件构建的。服务器构建完成,然后从一个位置移动到另一个位置,直到它到达安装它的数据中心。这个过程中的每一步都是供应链的一部分。
SBOM 是提高整个软件安全供应链透明度和问责制的重要一步,但这只是在软件市场实现有意义的安全透明度的第一步。除了成分之外,软件消费者还应该清楚地了解为软件设想的威胁模型、现有的安全机制、执行的安全测试以及开发人员是否接受过培训。
在之前的文章 OpenSSF安全计划:SBOM 将驱动软件供应链安全 有提到,目前美国联邦政府采取了积极主动的措施,要求政府机构消费和生产的所有软件都使用 SBOM。《关于改善国家网络安全的行政命令》指出,网络攻击的频率和复杂性的增加催化了公共和私有部门联手保护软件供应链的局面。这也标志着 SBOM 驱动的未来已经到来。
SBOM 的优势
SBOM 是安全团队的理想工具,他们需要深入了解第三方软件风险以了解他们所使用的版本、任何许可影响以及可能增加安全债务的其他依赖项。最后,SBOM 帮助事件响应团队识别漏洞的来源以及是否被利用,以便快速通知客户。随着开源库的激增和 log4j 等广泛使用的库的大规模开发,SBOM 可以帮助组织在其应用程序组合中控制开源。以下是 SBOM 的优势:
- SBOM 可以帮助组织优先考虑风险最高的开源使用。第一个目标是杜绝使用具有已知漏洞的库,并随时关注每个开源库的最新版本。
- SBOM 在危机情况下也非常有用。当库中的新漏洞被披露时,组织必须能够快速准确地追踪该版本在其企业中的使用位置,这一点至关重要。使用来自企业各团队的 SBOM 数据并持续更新是快速响应的关键。
最后,通过将 SBOM 信息提供给软件消费者,这样有效解决了软件市场中的信息不对称问题。可以访问有关应用程序安全性的完整信息(包括 SBOM 中的库信息)的消费者可以做出明智的决定,同时也鼓励开发者创建安全可信任的出色软件。
SBOM 的作用
SBOM 是一种正式且可查询的记录,其中包含用于构建软件的各种组件的详细信息和关系,包括开源软件和所有引入的第三方软件。SBOM 提供的清单是安全软件开发框架(secure software development framework)的关键要素,有助于在软件开发过程中检测漏洞,然后在软件生命周期中发挥持续作用。
软件部件从各种不受监管的来源引入应用程序:供应商代码、合作伙伴代码、开源项目和内部开发。开发人员经常使用来自各种地方的代码(开源和第三方代码),这些代码不像商业软件那样具有相同的入站控制和审查。开源和第三方代码来自知名生态系统(如 Apache Software Foundation 和 Eclipse Foundation)和权威工件存储库,包括 Maven Central (Java)、NuGet (.NET)、npm (JS)、PyPI (Python) 、RubyGems (Ruby) 等等。有时,代码还可以通过全球各地的个人开发人员进入企业,这些开发人员将他们的代码托管在源代码存储库上,例如 GitHub 或 GitLab。
能够访问此代码中反映的创新和知识通常对用户有益,但也提出了一个需要解决的重要问题:代码中包含什么?这就是 SBOM 的亮点,借助 SBOM,软件公司可以识别:
- 软件中的组件/成分
- 这些组件来自哪里
- 每个组件的许可证信息
- 软件(及其运行的设备)的安全漏洞状态
- 哪些部分需要评估和补救(以及您在此过程中的位置)
- 向客户和合作伙伴交付的合规性工件
美国国家电信和信息管理局 (NTIA) 概述了 SBOM 的最低要素,例如数据字段(名称、许可证和版本)。目前已存在多种 SBOM 的格式,例如 CycloneDX、OpenChain 和 SPDX,行业也正在努力标准化 SBOM 的格式。SBOM 以多种格式创建和维护,有时在比较或编译 SBOM 时会遇到挑战。
优化 SBOM
随着 SBOM 成为主流,有效使用 SBOM 的关键之一是全面了解多个信息源。基于 SaaS 的 SBOM 提供了一种统一的库存管理方法,从不同来源获取和聚合数据,能够清楚地了解安全问题以及与许可证和不合规部件相关的法律风险。
具有基于云的库存管理的优化 SBOM 将成为商业智能的持续来源,提供可操作的视图,支持针对特定关注领域的监控和警报。通过从广泛的来源(内部和/或合作伙伴、供应商和供应商)获取数据以识别和记录所有第三方知识产权 (IP),统一和协调来自多个来源和各种格式的内部和外部 SBOM从整个组织到一个单一的、规范化的视图。由此产生的关于组件或许可证使用以及安全和漏洞暴露的见解意味着,如果许可证在不合规或发现漏洞时存在问题,企业可以采取相应措施来解决问题。
这种 SBOM 方法还提供了强大的合规性工件,企业可以将这些工件提供给其客户和下游供应链合作伙伴。这不仅能够强调企业软件的安全性,而且这种对产品的透明度也有助于加强业务关系。
作为软件成分分析 (SCA) 程序的一部分,基于云的集中式 SBOM 管理使企业能够做的不仅仅是识别软件中使用的成分,还能促进持续的策略管理、风险管理计划和许可证合规计划。有了这些信息,企业就可以更好地进行资源管理,了解在哪里以及如何将员工资源用于开发和/或当新报告的安全漏洞被识别为应用程序的一个组成部分时所需的补救措施。
总结
通过 SBOM,无论是企业自主开发的代码还是组织外部引入的软件组件,企业将拥有统一的数据来识别风险。同时企业将获得必要的信息来帮助及时解决问题,而主动识别软件许可证和安全风险有助于确保一种受损成分不会破坏企业软件,或危及企业在软件供应链中的角色。