软件一直缺失的“营养成分表”
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。
如何开始:
- 选择一个标准。出于安全性考虑使用 CycloneDX,出于许可证考虑使用 SPDX。
- 实现自动化生成。使用 Syft 处理镜像,或使用 Snyk 处理流水线。
- 关联数据库。将你的清单连接到 NIST NVD 或 OSV。
- 设定计划。在每次构建时生成 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
