
SBOM:软件供应链安全的关键工具
几年前,80/20 法则仍然有效:在任何重要的软件中,80% 的内容不应该是你自己的。尝试开发任何软件超过 20% 的部分在经济上是没有意义的,因为很可能有人已经构建了具有必要功能的组件。相反,专注于开发能给你带来竞争优势的东西。近年来,这种平衡甚至可能已经转变为 90/10。
这就是软件物料清单(SBOM)的用武之地。它是一份正式记录,其中包含构建软件所用所有组件的详细信息和供应链关系。这些组件可以是开源的或专有的,免费提供的或付费的,广泛可用的或访问受限的。SBOM 中存在的信息可以以多种方式使用,帮助回答关于软件的各种合同、法律或技术问题。
早期提供 SBOM 的努力主要是由对法律合规性的渴望推动的。每个软件组件都受特定许可证的约束,这可能会对其使用施加一些义务。为了在法律上合规,必须满足所有许可证的所有义务。这很简单,但不容易实现。显而易见的第一步是记录所有组件和所有许可证,这正是 SBOM 的作用。
然而,在过去的几年里,由于软件供应链攻击,SBOM 采用背后的驱动力以及了解每件软件内部确切组件的需求一直是安全性。现在预计 SBOM 将伴随某些类型的软件交付。例如,美国行政命令 (EO) 14028 建议美国政府机构开始要求他们采购的任何硬件或软件产品提供 SBOM。
什么是软件物料清单(SBOM)?
从概念层面来看,SBOM 就像一个简单的目录:它是软件组件的综合列表,包含名称、版本、来源以及可能的关于许可、漏洞、出处或任何其他感兴趣领域的附加信息。因为它可以很容易被理解,所以这些信息可以用多种格式表达:表格、文本文档、电子表格等等。为了使信息有用,相同的格式应被交换双方理解和同意。
软件软件包数据交换 (SPDX)
十多年前,一群代表不同公司的感兴趣的个人开始着手解决定义通用、标准化格式的问题,他们称之为软件软件包数据交换 (SPDX)。每个人都同意,这个标准不应该成为任何特定公司的竞争优势,因此这项工作完全遵循开源原则进行,任何想贡献的人都可以公开参与。
SPDX 是用于交流 SBOM 信息的开放标准。去年,它被批准为国际标准 ISO/IEC 5962:2021。SPDX 规范是以协作方式产生的,汇集了大量参与者,根据他们的兴趣和专业知识组织成工作组。自成立之初,英特尔就积极参与了许多小组,例如定义 SPDX 规范的技术团队、致力于 SPDX 许可证列表的法律团队以及推广 SPDX 使用的推广团队。
SPDX 采取的方法是,SBOM 中存在的信息应该是事实性的。例如,它只是记录每个软件组件声明的许可证,并避免对许可证条款或义务进行法律解释。SPDX 的另一个重要特征是信息可以用多种格式编码,例如具有最小结构的纯文本、JSON、XML、RDF 甚至电子表格。
SPDX 文档的结构是分层的。除了与文档本身相关的信息(如作者和日期)外,信息还以越来越精细的级别呈现,对应于软件包、文件或代码片段。几乎每个级别的所有信息都是可选的,因此可以生成提供概览的 SBOM,也可以生成包含极其详细信息的 SBOM。格式的灵活性使其成为任何数量的实际用例的理想选择。例如,SBOM 的接收者可能只对安全漏洞信息感兴趣,而另一个人可能关心不同组件所受的许可证以及它们施加的法律义务。
许多工具可以处理 SPDX 文档。根据功能和工具在软件供应链中运行的精确点,可以拥有完整的工具分类。例如,SPDX 文档可能在软件构建时生成,也可能在构建后通过分析已构建的软件生成。其他工具使用此信息,可以分析、转换、比较或合并 SPDX 文档。
工作组目前正在设计下一个主要版本。SPDX 版本 3 是一项重大努力,将 SBOM 信息重组为模块化、分隔的部分。这将使得例如可以拥有一个特别强调安全和漏洞信息而较少关注许可细节的 SBOM。鉴于 SBOM 的用例不断增加,这种模块化方法预计将导致更广泛的采用。
作者将在 2023 年南蒂罗尔自由软件会议 SFSCON 上谈论 SBOM 和 SPDX 的当前状态。
图片来源:Andreas Riedelmeier,来自 Pixabay
1 条评论
评论已关闭。