10.3 分享还是不分享,多少才算太多?

在推动软件透明度的过程中,软件供应商可能会发现自己会问的一件事是,他们到底需要共享什么,或者他们是否应该共享这些数据。虽然每个组织的决策过程和分析看起来都不同,但有一点是明确的,由于软件供应链攻击的日益普遍,以及消费者和更广泛的行业对未知和潜在不安全软件消费风险的担忧,消费者、客户、政府机构和监管机构对软件透明度的推动正在继续增长。

决定供应商可能被要求或被迫分享什么的因素将受到无数因素的驱动,例如合同语言、消费者要求和适用的监管要求。一些消费者或行业尝试可能会要求或要求供应商提供第一方软件清单组件,而其他组件可能要求或请求在可行的范围内详尽地列出软件和产品中涉及的传递依赖关系。以 NTIA SBOM 最小元素报告为例,在深度方面,该报告指出,“SBOM 应包含所有主要(顶级)组件,并列出其所有传递依赖关系。至少,必须以足够详细的方式列出所有顶级依赖项,以便以递归方式查找传递依赖项。

显然,此要求仅适用于美国联邦生态系统中符合 NTIA 最低要素要求的实体,但它也可以作为有用的指南。需要注意的一点是,寻找传递依赖关系所涉及的工作量可能很大,因此供应商没有向消费者提供这种深度,就会给消费者留下负担,这当然是所有消费者的指数级增长,而不是由供应商直接完成,然后传达给他们的消费者群。除了在识别传递性依赖性时将工作留给消费者之外,仅向消费者提供顶级依赖关系会使他们对与传递依赖关系相关的漏洞和风险视而不见。正如 Endor Labs 的“依赖关系管理状态”报告中所讨论的,我们在其他章节中已经讨论过,该报告发现 95% 的易受攻击依赖关系是传递依赖关系。这意味着,如果 SBOM 未能包含传递依赖项,则大多数漏洞将无法传达或对消费者可见,而无需他们自己进行跑腿工作来识别它们。这不包括对依赖关系(无论是直接的还是传递的)是否可访问和利用的细致分析和细节,但它至少提供了与应用程序或产品相关的所有依赖关系及其漏洞的进一步上下文,而不仅仅是顶级细节。

提供 SBOM 的软件供应商的另一个关键考虑因素是他们提供的 SBOM 是否有用,是否包含足够丰富的元数据,使其对下游消费者有价值。帮助开展这项活动的一个早期新兴工具是 eBay (https:// github.com/eBay/sbom-scorecard) 提供的 SBOM 记分卡项目。另一个新兴选项是 OWASP SCVS 项目中的一个项目,我们在第 6 章“云和容器化”中进行了讨论。虽然该项目仍在进行中,但它致力于帮助组织评估 BOM 是否符合组织策略、格式和分类。随着行业尝试继续采用 SBOM,此类工具以及 SBOM 记分卡将是必要的。正如我们所讨论的,SBOM 的深度、完整性和准确性目前各不相同,组织希望根据其组织或法规确保与其特定要求保持一致,以确保他们分发或使用的 SBOM 满足他们的需求 (https://scvs.owasp.org/bom-maturity-model)。

此工具可用于确定一些关键条件,例如 SBOM 规范是否合规、是否提供有关其生成方式的信息以及与包关联的信息,例如具有 ID、许可信息和版本控制。

我们在第 4 章“软件物料清单的兴起”中讨论了 NTIA 定义的 SBOM 最小元素。这些最低要素对联邦软件供应商和消费者来说将是重要的,因为它很可能被要求与联邦证券法规中的最低要素要求保持一致。ntia-conformance-checker 是一个有用的工具,它可以验证 SBOM 文档是否具有 NTIA 定义的最小元素 (https://github.com/spdx/ntia-conformance-checker)。

基于这两个工具,Chainguard 等组织通过其 Chainguard Labs 的努力,在 2022 年底研究了一组公开可用的 OSS SBOM,以确定它们的质量和内容,使用我们讨论过的工具(www.chainguard.dev/unchained/ are-sboms-any-good-preliminary-measurement-of-the-quality-of-open-source-project-sboms)。

虽然他们的研究发现,一些开放源码软件SBOM确实包含高质量的数据,但许多没有。没有一个符合 NTIA 的最低元素要求,其中很大一部分缺少软件包许可和版本信息。虽然这不是个好消息,但它也应该与SBOM的采用(包括发电、要求和质量)在整个行业中处于起步阶段的现实形成鲜明对比。然而,为供应商提供这些早期研究工作和工具是件好事,以了解现有的差距以及如何确保他们提供给下游消费者的 SBOM 是高质量和有用的。对软件组件清单、透明度和 SBOM 等努力的推动都围绕着数据展开。如果没有高质量的数据,供应商和消费者都将不知所措,因为没有足够的洞察力来做出风险知情的决策,并推动有助于加强软件供应链状态的组织成果。