不知道大家有没有收到过汽车产品的召回通告。前几年,不少车辆都因安全气囊进行过大规模召回。汽车制造商的标准程序,是在发现零件存在缺陷且需要维修或更换时,向车主发出通知。即使部件由第三方制造,也同样会被纳入召回范围——因为很明显,第三方组件也是车辆整体中的一部分。

这种召回之所以可行,是因为制造商会保留一份物料清单,借此了解每辆车中具体使用的所有配件,包括物理零件与车载软件。相关清单还会向政府机构报备,借此跟踪各车辆产品的全体所有人。当需要召回时,厂商可以快速确定哪些车辆受到影响、目前的车主是谁。

如今,计算机软件行业也在采取类似的措施跟踪软件中的各类组件,例如库、可执行文件或者源代码。由美国国家电信和信息管理局(NTIA)发起的这项工作由行业为主导,多个利益相关方共同参与,旨在提供软件组件的透明度。NTIA工作组目前着力构建“软件物料清单”(SBOM)的全面透明化愿景

01 软件物料清单是什么?

软件物料清单实际上就是构成软件程序或应用程序的成分列表。与汽车行业一样,这些组件可能来自成千上万家供应商——没错,现代软件其实就是由开源及商业解决方案,再加上少量代码与子程序所拼接而成的。这种软件代码复用机制,使得开发人员不必从零开始重新创建所有内容,从而显著节约时间并提高应用程序开发效率。

图一:软件组件关系

软件物料清单将标记并列举出所有软件组件,这些组件的详细信息以及各组件间的关系。图一所示,即为软件物料清单中组件关系的基本关系。左侧表格为需要跟踪的信息,右侧图形则展示了各软件组件间的关系。

随着NTIA工作组进入开发阶段,他们意识到构建并维护这样一份可验证软件组件列表的内在复杂性。他们目前正着力解决的问题包括如何自动生成软件物料清单,并保持其及时更新。此外,他们还需要考虑使用哪种数据格式标准、如何将物料清单分发给拥有软件程序或应用程序的用户,以及如何验证组件列表中各数据及其继承依赖项的真实性。一切工作的目标,都是为了帮助软件开发人员及消费者在全球范围内定义一套明确且可遵循的使用规范。当然,只有得到个人与企业的广泛应用,软件物料清单才能真正发挥预期作用。

02 软件物料清单的必要性

通过物料清单提高软件内各代码组件的透明度,将带来以下几项突出优势。首先,其允许企业更早识别并缓解系统或许可源代码内的潜在缺陷,因此有效控制风险。此外,物料清单还将帮助开发人员更好地审查嵌入至当前项目中的成品代码,推动软件开发安全实践的普及。而在软件使用者方面,更高的透明度则能够有力支持采购决策,轻松了解开发方是否严格遵循软件许可要求。

软件物料清单的最大意义,很可能体现在网络安全保障与风险控制层面

根据行业研究,每套代码库平均包含数百种开源软件组件,且大部分代码库中至少存在一项安全漏洞。因此,深入了解代码组件及其可能包含的漏洞,将成为指导采购及使用决策的前提。

在明确了软件中包含哪些组件之后,大家可以明确理解这套特定物料清单在运行过程中给业务环境带来的风险及影响。此外,由于每天都有新漏洞被人们发现,因此风险因素也将持续浮动,甚至改变物料清单中相关内容的性质。而判断我们是否受到影响的唯一方法,就是借助物料清单带来的信息透明度。

当变化源自内部或外部威胁时,这种风险评估能力将变得尤为重要。一旦内部员工在尚不了解变更给整体风险态势造成的影响时就匆匆实施变更,则企业必然遭遇内部威胁冲击——例如安装某款被物料清单划归为影子IT范畴的外部应用程序。此外,外部攻击者可能将恶意软件注入您的服务器或设备,并试图替换或引入新的软件组件以将其伪装成看似合法的系统组件,这就是典型的外部威胁。无论是内部威胁还是外部威胁,我们都应默认假设任意新组件的引入,都会给现有系统造成巨大影响。

网络安全厂商能够开发出各类解决方案,以标准方式使用软件物料清单,并将其与系统上运行的现有内容进行交叉引用——包括引用已列出软件组件中的已知或新漏洞,同时实现威胁情报增强等。以此为基础,大家可以提出建议性缓解措施,例如发布软件补丁,以实施恢复流程。在某些情况下,我们还可以采取自动修复措施,例如持续阻止恶意软件运行直到将其删除等。

软件物料清单的出现,还有望改善我们对软件许可的管理能力。软件中的各个部分都有着对应的许可协议,此协议用于规定软件的合法使用方式及分发渠道。作为完整应用程序供应链中的组成元素,各代码片段可能在不同的组件中使用不同的许可机制。因此,部署该应用程序的企业客户对于许可遵循承担着法律层面的义务。如果没有软件物料清单的支持,我们往往很难意识到这些许可的存在、或者该如何遵循其中的具体要求。

03 不止于软件:数字物料清单

除了软件之外,目前还出现了另一个范围更广的概念,即数字物料清单,简称DBOM。数字物料清单进一步关注硬件配置以及其中的嵌入式固件,外加各组件之间的交互机制,即行为上下文。数字物料清单将收集关于硬件设备及网络通信模式的相关信息,借此了解款待在设备上的软件代码的上下文信息。通过这种方式,最近刚刚兴起的物联网体系将得到更简单易行的监控、更新与保护。

在购买设备时,我们买到的往往是一个黑匣子,用户根本不知道里面到底发生了什么。如果将其接入网络,我们也无法确定它会带来哪些风险。与之相对,如果能够提前了解风险因素,我们就能采取缓解措施。因此,最重要的就是敦促设备制造商全面接纳软件物料清单与数字物料清单,并帮助他们意识到此举能够给运营与安全带来哪些切实改善。与此匹配,大家还应重视ETSI等安全认证,借此保证最终用户了解自己承担的风险,并据此提升风险缓解能力。

医疗科技行业在这一领域始终走在时代前列,并从2019年开始认真探索软件物料清单在医疗设备的运营、管理及网络风险方面有望发挥的作用。各设备制造商也与医疗保健服务商共同努力,通过数据生成、共享与使用改善特定用例中的安全实践,最终证明了软件物料清单机制的可行性。NTIA方面也正在从概念验证项目中汲取经验,努力开发出具有行业中立性的新一代软件物料清单规范。

原文链接:

https://devops.com/why-we-need-a-software-bill-of-materials-industry-standard/

声明:本文来自安全内参,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。