4.1 法规中的SBOM:失败和成功
尽管行业内可能存在一系列与软件物料清单 (SBOM) 相关的动态,但达到当前这一点是经过了多年的努力,涉及了各种政府和行业组织的参与。最值得注意的是,最近的 SBOM 动态发生在国家电信和信息管理局 (NTIA) 的推动下。
也就是说,虽然NTIA以及Log4j和SolarWinds等事件可能在最近围绕SBOM的发展势头中发挥了关键作用,但早期涉及Apache Struts 2和openssl2相关漏洞的事件是由于引入了立法,如2014年网络供应链管理和透明度法案(www.congress.gov/bill/113th-congress/house-bill/5793/text)。
该法案侧重于使用第三方和开源软件(OSS)代码为美国政府开发或购买的软件、固件和产品的完整性,并要求在联邦政府的软件、固件或产品合同中包含组件清单或物料清单。在这一努力中,早期的重要先驱之一是行业领袖 Joshua Corman,他曾在多家行业领先的私营公司和 CISA 工作,他还创立了“I am The Cavalry,”该团体关注数字安全、公共安全和人类生命的交集。
《2014 年网络供应链管理和透明度法案》因行业对其呼吁增加产品中软件组件透明度的抵制而未能完全实现。然而,这表明,尽管在撰写本文时 SBOM 受到广泛讨论,但这一话题实际上已经被讨论和期望了近十年之久。
其他值得注意的例子包括2017年6月发布的《医疗保健行业网络安全任务组报告》,该报告呼吁制造商和开发人员创建一个“物料清单”以描述医疗设备中的组件(www.phe.gov/Preparedness/planning/CyberTF/Documents/report2017.pdf)。
NTIA:宣传SBOM的必要性
近期在联邦领域的软件物料清单(SBOM)工作的推广由NTIA(国家电信和信息管理局)主导。自2018年起,NTIA一直致力于推动软件组件透明度。2018年7月,NTIA召开了多方利益相关者会议(http://ntia.doc.gov/federal-register-notice/2018/notice-071918-meeting-multistakeholder-process-promoting-software),讨论了软件组件透明度、挑战及潜在解决方案。
这些早期会议由当时担任NTIA网络安全倡议主任的Allan Friedman博士参与。Friedman自早期以来一直是围绕SBOM和软件透明度行业对话中的重要人物,与上文提到的Joshua Corman一样,现在他在网络安全和基础设施安全局(CISA)担任高级顾问和策略师,依然在帮助推动软件透明度和SBOM进程。
NTIA认识到现代软件是由许多来自开源和商业行业的组件和库构成的(http://ntia.gov/blog/2018/ntia-launches-initiative-improve-software-component-transparency)。它也承认创建和维护这些组件及其相关漏洞的清单非常具有挑战性。该组织及其多方利益相关者社区一直致力于理解改进软件组件清单、实践以及相关政策和市场挑战的方法。
在推动软件透明度和软件物料清单(SBOM)的过程中,NTIA(国家电信和信息管理局)发布了大量相关文件和指导(可在http://ntia.gov/SBOM找到)。这些文件涵盖了介绍SBOM、提高对SBOM的理解、SBOM实施以及相关技术资源等内容。
根据《网络安全行政命令》中的第4节“加强软件供应链安全”,子节(F)要求NTIA在《网络安全行政命令》发布60天内公布SBOM的最低要素。随后,NTIA在2021年7月发布了《软件物料清单(SBOM)最低要素》(http://ntia.doc.gov/files/ntia/publications/sbom_minimum_elements_report.pdf)。该指导文件确立了SBOM的最低要素,定义了如何思考这些最低要素的范围,并描述了软件供应链透明度的SBOM用例。NTIA的指导文件论证了系统共享和组件元数据的跟踪有助于支持软件供应链的透明度。
在本节中,我们将分解NTIA的最低要素指导。他们的指导包括并详细说明了三类要素:
■数据字段
■自动化的支持
■实践和流程
NTIA的指导意见指出,每个软件都可以表示为一个层级树结构,其中包含组件和子组件。这些组件包括从其他来源获取的第三方组件,以及作为独立软件单元存在的一方组件。三个元素类别中,第一个是数据字段,包含了应跟踪和维护的每个组件的基本信息。这些数据字段的主要目的是帮助组织在整个软件供应链中跟踪这些组件。NTIA定义了一组基准数据字段集合,如表4.1所示。
组织可以使用这些数据字段将组件与其他数据源进行映射,这一过程被称为“富集(enrichment)”。从表4.1可以看出,目的是提供诸如组件供应商、组件名称和版本等基本信息,然后将组件与相关的上游组件关联起来。这通常被称为依赖关系,因为大多数软件包括第三方代码,导致一方和第三方代码在组件和应用程序中形成依赖关系。值得注意的是,NTIA的指南讨论了一些挑战,如供应商和软件供应商之间的不同版本管理方法。
除了数据字段,NTIA为SBOM确定的另一个核心组成部分是自动化支持的需求。SBOM普及和采用的怀疑者指出,需要强大的工具和自动化支持来使SBOM的采用在大规模情况下准确且成功。自动化支持将使组织能够将SBOM集成到其现有的漏洞管理、供应链风险管理和网络安全计划中。NTIA的SBOM指导讨论了三种主要的SBOM格式,将在“SBOM格式”部分中涵盖。
最后,NTIA的SBOM指导涵盖了实践和流程,重点是SBOM在组织操作和采用中的使用机制。主要讨论的实践和流程包括以下内容:
■频率
■深度
■已知的未知
■分发和交付
■访问控制
■错误纠正
频率(Frequency)与新SBOM的创建频率有关。NTIA的指导意见强调,每次新建或发布软件时,必须创建新的SBOM。如果软件供应商了解到组件的附加细节,包括纠正之前传输的错误,也需要创建新的SBOM。
深度(Depth)指的是SBOM在依赖树中应该深入到的层次。NTIA的指导意见指出,SBOM至少应包含所有顶级组件,并列出传递依赖项。传递依赖项可以定义为软件运行、编译或测试所必需的组件。虽然列出所有传递依赖项并不总是实际可行,但指导意见确实指出,如果必要,应该提供足够的信息以查找这些传递依赖项。在深度方面,不同的组织和行业可能有不同的要求,甚至由于内部政策或法规要求而有所不同。SBOM的消费者会试图为其软件产品指定深度,特别是在涉及专有软件供应商和合同、法律方面的问题时。
已知的未知(Known Unknowns)的概念围绕着SBOM作者在进一步依赖关系的沟通中的清晰性。有些情况下并非所有依赖项都是已知的,这在指导意见中被称为已知未知。SBOM作者可以传达数据已知是不完整的,告知软件消费者在其软件使用中可能存在未解决和未知的风险。
分发和交付(Distribution and Delivery)涉及确保需要知晓SBOM的实体能够及时获取,并具备适当的权限和访问控制。SBOM采用的这一领域仍在发展中,无疑会采用多种方法。分发和交付的方法也会因所涉及的软件和系统的性质而异,例如嵌入式系统或在线服务,每种方式的分发和部署给终端消费者的方式都不同。对于美国政府,《网络安全行政命令》规定要求,即“为每个产品提供给购买者一个软件物料清单(SBOM),直接提供或发布在公共网站上”。
访问控制是SBOM采用和使用中至关重要的一部分。在软件生产商之间持续标准化SBOM交付实践的过程中,对于数据共享的容忍度会有所不同。一些可能希望将信息公开和开放,例如开源维护者或一些私人软件公司,如JupiterOne(http://jupiterone.com),他们已经将其SBOM发布在http://jupiterone.com/sbom。然而,一些软件供应商,特别是那些认为其SBOM敏感或具有特定客户需求的供应商,如国防或国家安全社区中的供应商,可能希望只在特定条款和条件下并在特定的访问控制下提供此信息。这是一个将继续发展和成熟的SBOM和软件透明度领域。
最后,指南中提到了容错实践。这意味着允许遗漏或错误的存在。整个行业的软件供应链安全内部实践仍在成熟中,错误和疏忽肯定会发生。这是一条双向的路,软件生产者在适当的时候可以提供额外的见解或澄清,软件消费者也理解初期可能不完美。通过这种相互合作,可以改善整个软件供应链的卫生状况。
NTIA对SBOM的对话和采用的贡献远远超出了最低元素指南,如前所述,包括澄清一些误解(http://ntia.gov/files/ntia/publications/sbom_myths_vs_facts_nov2021.pdf)、解释视频和常见问题解答(http://ntia.gov/files/ntia/publications/sbom_faq_-_20201116.pdf)。他们最常被引用的出版物之一是SBOM框架文件(http://ntia.gov/files/ntia/publications/ntia_sbom_framing_2nd_edition_20211021.pdf),该文件涵盖了从软件透明性和系统风险相关的问题声明、什么是SBOM、SBOM流程和使用案例、以及NTIA用来制定其指南的多利益相关者过程概述。
尽管NTIA作为促进SBOM采用和更广泛的软件供应链透明性的基本催化剂发挥了作用,这一努力已经继续发展,现在由CISA支持(http://cisa.gov/sbom)。毫无疑问,这一部分是由于Allan Friedman从NTIA转移到CISA,鉴于他一直是SBOM采用和使用的最积极的倡导者之一。CISA努力通过其社区参与、开发和进展活动,将NTIA的早期努力推进到更远的地方,最终目标是实现SBOM在行业中的规模化和运营化。
截至撰写本文时,CISA最重要的SBOM活动和社区参与是2021年12月举办的SBOM-a-Rama。这是为期两天的活动,第一天重点讨论了SBOM能力的现状,第二天则重点讨论了使SBOM的采用和使用更加可扩展和有效。参与者包括一系列公共和私人部门的领导者,如国会议员James Langevin、长期SBOM和软件透明性倡导者Josh Corman,以及来自开放世界应用安全项目(OWASP)、Linux基金会等行业组织的代表。
讨论包括基础性话题,如什么是SBOM及其重要性、领先的SBOM格式如SPDX和CycloneDX、以及在医疗保健、能源和汽车工业中的早期概念验证(PoC)努力。两个活动日的录音和演示文稿可在http://cisa.gov/cisa-sbom-rama上获得。在后续章节中,我们还将深入探讨如领先的SBOM格式等话题。
No Comments