软件物料清单,通常被称为SBoM或BOM,在过去一年半的时间里获得了巨大的普及。它在美国白宫的14028号行政命令中被提及,并在无数的安全软件供应链文章中被提及。虽然SBoM已经存在了很多年,但人们对它的认识和采用似乎正处于一个拐点。
SBoM的简单性
SBoM的普及要归功于它的简单性,特别是与软件供应链中的其他工具相比。核心是,SBoM是一个应用程序的软件包或依赖性的列表。它是开发者用来构建一个应用程序的开源、第三方或内部组件的清单。
它从成分开始。一个经常被引用的、无处不在的比喻是,SBoM是一个面包营养标签上的成分列表,或者是你打算在晚餐时做的意大利面条食谱的杂货购物清单上的具体成分。
为什么成分会有帮助?让我们来看看SBoM的优势。
数据驱动的决定
你是否对麸质蛋白不耐受,或者你想减少糖的摄入?如果不仔细研究一个食品的投入,就不可能知道你是否应该消费它。以同样的方式,SBoMs帮助你回答诸如以下问题。该软件包是否有漏洞或其他安全风险?你使用的是旧版本吗?软件许可证是否符合你公司的标准?SBoMs是满足组织安全和合规性要求的第一个先决条件。
标准化
食品和药品管理局要求所有的食品都要有一个一致的标签。这使消费者更容易理解信息。同样的好处也适用于SBoMs。 软件行业已基本同意三种SBoM格式中的一种。SPDX和CycloneDX是面向开发者的,SWID是面向管理设备上的软件,如医疗仪器。就这些机器可读标准达成共识是扩大SBoM规模的关键。
保存标签
上面想象的标签除了主要成分外还包括其他细节:"复合 "成分(如混合浆果[草莓、覆盆子......])、生产该产品的公司、在哪里可以找到该公司(即地址、网站)、产品到期日和序列号。作为一个消费者,也许你并不立即关心这些来决定 "吃或不吃"。但是,假设你在冰箱里发现了一盒鸡蛋,你不记得你是什么时候买的。如果你保存了标签和保质期,你可以防止胃部不适。或者,如果有一个产品被召回,拥有标签和序列号来查看你的产品是否受到影响,可以帮助你做出类似的判断。
同样,SBoMs包含元数据,在你决定使用某个软件包很久之后,当发现新的漏洞时,你可以参考。保存你所有的SBoMs,并使它们易于访问,在与你的软件依赖性有关的任何变化中,都会得到回报。
简单不等于容易
理解SBoM的概念和好处是很容易的,但要真正实现它们就难多了。毕竟,手动检查几件物品的麸质是一回事,而在你的余生中保存和监测每一种食品的成分则是另一回事。
坚持SBoM饮食的主要困难是。
-
拥有完整的SBoM元数据
-
在你的供应链中的正确时刻产生SBoMs
-
储存和访问SBoMs
这些挑战,以及更多的挑战,在国家电信和信息管理局广泛的SBoM内容中都有概述,包括作为白宫行政命令授权的一部分而产生的软件材料清单文件的最低要素。
完备性
SBoM必须是完整的才有用。虽然SBOM格式(如SPDX)提供了支持强大的数据集的模式,包括NTIA建议的最低数据,但这并不意味着会提供这些数据。
来源。国家电信和信息管理局
复杂性是由许多因素引起的。一个主要的驱动因素是过渡性的依赖关系,也就是依赖关系的依赖关系。如果你是一个没有软件依赖性的开源项目的维护者,你可以创建一个完美的SBoM,因为你有所有的信息在你的指尖。但是,如果你依赖上游软件,而该软件又依赖其他软件,那么你生成的SBoM很可能缺少某些数据,如依赖关系或唯一标识符。
对此没有真正的解决方案,只是承认你的SBoM只能和你使用的上游软件一样完整。随着SBoM应用的增加,SBoM的完整性将得到改善。这就更有理由产生并与你的软件用户分享你的SBoMs。
何时生成SBoM
与完整性密切相关的是SBoM的生成时间。回到我们的食品标签的比喻,如果你到家后发现面包的标签不见了,但你决心重新制作一个标签,你可能会正确地猜到一些成分,但肯定会错过其他成分。
同样,SBoM在 "制造 "过程中也有一个理想的生成时间。 具体来说,当软件被 "构建 "成二进制(即图像)时,会引入某些额外的软件依赖。这些应该在SBoM中捕获,但如果SBoM是在软件供应链的这一阶段之前或之后生成的,它们可能会被错过。在自动构建过程中自动创建SBoM是最理想的。
Paketo Buildpacks是一个开源项目,在构建镜像时自动生成SBoM。VMware Tanzu Build Service是一个商业产品,开箱即提供相同的功能。
储存和访问
如何跟上每个SBoM?这是一个非常大的任务。如果我们假设你为企业中的每个git repo和镜像在每次构建后都生成一个SBoM,而你的许多repos和镜像有10个、100个或1000个包,这相当于一个庞大的数据量。此外,这些数据只有在你能有效地访问它时才有帮助。当下一个 "log4j "包出现时,你需要能够查询整个企业的SBoMs,看看哪些repos和image包含 "log4j"。
一个关系型数据库是跟踪所有这些数据的明显解决方案。
VMware Tanzu Application Platform中的供应链安全工具中的Store功能就是为这一特定需求而创建的。它配备了一个CLI工具,以帮助回答诸如哪些图像包含某个CVE或软件包的问题(见演示视频)。
软件的营养标签时刻
1938年的《联邦食品、药品和化妆品法》(FDCA)为所有食品的标准化营养标签铺平了道路。也许白宫2021年5月12日的行政命令中的以下一段话对软件来说会有类似的看法。
第4(e)(vii)条规定,直接向购买者提供每个产品的软件材料清单(SBOM),或在公共网站上公布。
当美国政府要求其软件供应商提供SBoM时,似乎有可能对所有上游软件供应商产生巨大的涓滴效应。
SBoM只是一个广泛的安全工具带中的一个工具。它有其弱点,例如缺乏内置的防篡改功能(即如果一个恶意用户能够编辑SBoM,它将使软件用户对漏洞视而不见)。然而,随着越来越多的人和公司开始定期使用SBoM,SBoM将出现许多轮的演变,就像有许多法律和法案来改进最初的FDA营养标签法案一样。目前的营养标签与50年前的营养标签有很大的不同,未来还会有更多的迭代。
开始探索SBoM的一个方法是查看Tanzu应用平台。相关的文档将帮助你尝试扫描和存储你的软件依赖性。 然而,最重要的收获是开始阅读和组织你的软件的营养标签。开始手动生成SBoMs;这很简单。开始将你的软件的依赖性与漏洞进行交叉引用。开始组织和存储这些依赖关系。你将会在建立一个健康的SBoM程序的道路上走得更远。