软件一直缺失的“营养成分表”

2021年12月9日,一名安全研究人员在名为 Log4j 的 Java 库中发现了一个漏洞。在 72 小时内,数以亿计的系统面临风险。

问题不仅仅在于漏洞本身,更在于可见性。大多数公司并不知道自己的软件中是否包含 Log4j。

这一时刻使软件物料清单 (SBOM) 成为了公司董事会的优先事项。

SBOM 是你软件中每个组件的清单。它就像是代码的“营养成分表”。它列出了开源库、第三方包和内部组件,并包含了版本和许可证信息。

现代软件非常复杂。一个应用程序通常使用 500 到 1,500 个第三方组件。你无法通过人工方式进行追踪。

目前存在两种主要标准:

• SPDX:侧重于许可证合规性。适用于法律团队。 • CycloneDX:侧重于安全性。适用于 DevSecOps 团队。

你的响应速度取决于你的 SBOM。在 Log4j 危机期间,拥有 SBOM 的公司在几小时内就发现了风险,而没有 SBOM 的公司则花费了数周时间进行人工审计。

最近发生的 XZ Utils 等攻击证明了这一差距依然存在。攻击者在常用库中隐藏后门。如果没有自动化手段,你将无法发现它们。

相关法规也在发生变化:

• 美国第 14028 号行政命令:联邦供应商必须提供 SBOM。 • FDA 指南:医疗设备需要 SBOM。 • 欧盟《网络韧性法案》:要求到 2027 年在欧盟销售的软件必须提供 SBOM。

如何开始:

  1. 选择一个标准。出于安全性考虑使用 CycloneDX,出于许可证考虑使用 SPDX。
  2. 实现自动化生成。使用 Syft 处理镜像,或使用 Snyk 处理流水线。
  3. 关联数据库。将你的清单连接到 NIST NVD 或 OSV。
  4. 设定计划。在每次构建时生成 SBOM。

不要试图一次性修复整个产品组合。从一个应用程序开始。

请记住,SBOM 是一种诊断工具。它告诉你拥有什么,但它不会为你解决问题。如果 SBOM 显示有 23 个漏洞,你仍然需要一个修复计划。

最优秀的公司不仅拥有工具,还拥有一套流程。在危机发生之前,他们就已经知道谁负责管理某个依赖项。

来源:https://dev.to/spicykim/the-nutrition-label-that-software-always-lacked-213 详情:lucas8.com/what-is-sbom-software-bill-of-materials