软件物料清单:软件供应链信任的基础

目录

现代软件很少作为单一手工打造的二进制文件发布。相反,它由数百个,有时甚至数千个按照各自节奏演进第三方组件组装而成。​精确了解应用包含了哪些内容已成为一项基本的安全要求,而软件物料清单(SBOM)正是表达、存储和共享这些知识的途径。

什么是 SBOM?

美国网络安全和基础设施安全局(CISA)将 SBOM 定义为一份包含软件组件详细信息及供应链关系的正式记录。实际上,SBOM 是一种机器可读文档,列出每个软件包及其版本、许可证、加密哈希值,以及它与其他软件包之间的关系。它可以选择性地包含其他信息,如供应商、发布者、漏洞信息等。

SBOM 可以从源代码、构建系统、容器镜像或运行中的工作负载生成。它们在 CI 流水线中自动生成时最为有用,使每个发布的工件都有匹配的清单。

为什么 SBOM 正从"锦上添花"变为"不可或缺"

监管与市场驱动因素

驱动因素要求
第 14028 号行政令(美国)联邦机构必须为其采购的所有商业软件获取 SBOM。
CISA"最低要素"规定了每个 SBOM 必须包含的基线字段,如供应商、组件名称、版本、依赖关系图等。
FDA 网络安全指南(2023 年)​网络连接型医疗器械的上市前提交现在需要一份描述设备中所有软件的 SBOM。
欧盟网络弹性法案(预计 2025 年)"含数字元素的产品"制造商必须在请求时向客户和监管机构提供 SBOM。[^eu-cyber-resil]

企业采购团队也遵循着同样的轨迹。供应商问卷现在将"您能提供 SBOM 吗?"作为关键软件和 SaaS 采购的准入问题。

SBOM 标准

SPDX

由 Linux 基金会托管的软件包数据交换(SPDX)​项目于 2021 年成为 ISO/IEC 5962:2021。它对详细的来源、许可证和安全元数据进行建模,并能捕获代码片段和补丁等复杂关系。SPDX 文档通常以标签值、RDF 或 JSON 格式编写。

CycloneDX

CycloneDX 最初是一个专注于应用安全自动化的 OWASP 项目。当前规范(ECMA-424)简洁、以 JSON 为先,并附带用于硬件、机器学习模型、加密和漏洞(VEX)声明的可选扩展。CycloneDX 得到超过 200 种工具的支持,覆盖 20 多种编程语言,通常在追求快速、以安全和合规为中心的采用时成为首选。

格式转换很简单。​ syftprotobom 和 Amazon Inspector 等工具可以同时导出 CycloneDX 和 SPDX 格式,让团队能够同时满足法律和安全利益相关者的需求。

实际用例

现实案例:Log4Shell 漏洞响应

Log4Shell 远程代码执行漏洞(CVE-2021-44228) 于 2021 年 12 月浮出水面时,各组织争相发现易受攻击的 log4j-core 库在何处被使用。拥有可搜索 SBOM 存储库的团队在几分钟内就识别出了受影响的服务,并发出了有针对性的补丁。没有 SBOM 的团队则花了数天时间手动搜索代码库、容器和制品存储库

这一事件展示了使用 SBOM 的三个切实好处:

  1. 检测时间从数天缩短到数分钟。
  2. 爆炸半径映射变成了查询问题,而非取证探险。
  3. 高管报告是即时的——安全领导者导出相关 SBOM 片段作为修复证据。

入门指南

  1. 选择一种基线格式。​ CycloneDX 是安全团队常采用的格式
  2. 自动化生成。​SafeDep Vet工具 cyclonedx-bomsyft、或 cdxgen 集成到您的 CI 流水线中,使每次构建都生成并存储一个 SBOM 工件。
  3. 集中存储和搜索。​ 将 SBOM 存储在版本化注册表或数据库中。添加 API,以便漏洞扫描器和策略引擎能够实时查询 SBOM。DependencyTrack 就是这样一个工具。

结论

SBOM 已从合规检查清单演变为一项基本安全能力。随着监管要求的执行和供应链攻击日益复杂,主动采用 SBOM 实践的组织将能够更快地响应漏洞、满足采购要求并建立客户信任。问题不再是是否实施 SBOM,而是您能以多快的速度将其集成到开发工作流程中。从小处着手,尽早实现自动化,让 Log4Shell 的教训指引您的紧迫感——因为下一个关键漏洞不是是否会来的问题,而是何时来的问题。

  • sbom
  • spdx
  • cyclonedx
  • cisa
  • vet

SafeDep 博客的最新动态

关注以获取开源安全与工程的最新更新和见解