01
摘要
2021年,美国国家电信和信息管理局(NTIA)利益相关者工作组发布《SBOM常见问答》,该文件旨在介绍软件物料清单的概念、应用、参考文献,体现了SBOM 的重要作用。其中,常见问题解答部分主要针对用户在使用SBOM时可能产生的疑问进行说明。其中包括介绍什么是SBOM,使用SBOM能够为用户带来什么好处,对SBOM可能产生的误解和担忧,以及SBOM的创建、分发、使用的具体方法介绍。SBOM是推动软件保障和供应链风险管理的基础。在开源理念主导下,了解软件内部组成成分成为安全管理的必要工作,推进SBOM相关制度及规则的建立,有助于规范软件开发流程,提高软件透明度,保障产业安全发展。
02
背景
现代软件系统涉及日益复杂和动态变化的供应链。不幸的是,这些系统的组成和功能缺乏透明度,会大大增加网络安全风险,以及开发、采购和维护成本,这对我们这个相互联系的世界有着广泛的影响。除了会影响企业所依赖的产品和服务外,其风险和成本还会影响到公共安全和国家安全等集体利益。
随着SBOM越来越广泛地应用到开放性行业(例如金融服务和医疗保健),由此产生的网络效应放大了SBOM提供的初始固定收益。由此产生了一些误解和担忧,本文将对部分问题给出解答。
03
正文解读
3.1
概述
(1)问:什么是SBOM?
答:SBOM是一份正式规范记录清单,清单中包含用于构建软件的组件及其具体细节和供应链关系。这些组件包括库和模块,可以是开源的或是专有的,可以是免费的或是付费的。SBOM数据可以公开使用,也可以设置访问限制。
具体信息详见“构建软件组件透明度:建立通用SBOM”的第2节:https://www.ntia.gov/files/ntia/publications/framingsbom_20191112.pdf
(2)问:谁应该提供SBOM?
答:在当今世界,软件覆盖了我们生活的各个部分,并涉及各个行业,其中大部分都建立在第三方代码和开源软件之上。如果有人想要知道如何更好地支持自己的软件产品和客户,并在市场上将自己与竞品区分开来,那他们就应该考虑创建SBOM并提供给他们的客户。随着时间的推移,SBOM的需求可能会越来越多,例如FDA在网络安全上市前指南草案中对医疗设备制造商的要求:https://www.fda.gov/regulatory-nformation/search-fda-guidance-documents/content-premarket-submissions-management-cybersecurity-medical-devices
有关SBOM的用例和好处的更多信息,请参见:https://www.ntia.gov/files/ntia/publications/ntia_sbom_use_cases_roles_benefits-nov2019.pdf
(3)问:SBOM可以供谁使用,为什么?
答:大多数SBOM的使用者都出自以下三个视角中的一个或多个:软件生产者、软件购买者和软件运营者。
●对于软件生产者,SBOM被用于协助构建和维护他们的软件,包括知晓上游组件成分及属性。
●对于软件购买者,SBOM被用于告知购买者关于预购买保证协议、协商折扣、或计划实施策略。
●对于软件运营者,SBOM用于向漏洞管理和资产管理提供信息、管理许可证及产品合规性,并快速识别软件或组件的依赖关系与供应链风险。
3.2
优势
(1)问:SBOM有什么好处?
答:SBOM对软件供应商和消费者都有好处,而且他们获得的好处是类似的。其中包括:
●识别并避免已知漏洞
●量化并管理许可证
●识别安全性,检查许可证的合规要求
●量化软件包中已存在的风险
●管理针对漏洞的缓解措施(包括对新漏洞的补丁与补偿控制)
●提高效率,降低工作量,从而降低运营成本。
身为软件开发者、购买者或操作者,都可以感受到这些优势。有关所有优势的完整讨论,请参阅《SBOM在整个供应链中发挥的作用和优势》报告:https://www.ntia.gov/files/ntia/publications/ntia_sbom_use_cases_roles_benefits-nov2019.pdf
(2)问:发生网络攻击事件时,SBOM可以提供什么帮助?
答:当发现某个组件存在缺陷或漏洞时,SBOM可以快速识别受漏洞组件影响的软件,评估其使用情况,并由此推断使用漏洞组件所带来的风险。SBOM识别漏洞的能力使软件供应商能够生产补丁或提供其他补救方案;使消费者能够从软件供应商处自行选择适合自己的缓解措施;此外,通过SBOM还可以识别不受影响的软件,这样就能把重点放在可能受影响的软件上。
(3)问:除了漏洞管理,SBOM还能做什么?
答:有了SBOM,组织的许多部分,例如从采购者到运营者,都可以对其软件资产有一致的认识。SBOM提高可视性和问责制的优点为客户提供了更可靠的服务。对软件使用情况有认识越清楚,就可以为用户带来更多的业务优势,如资产整合、许可认定、审查新政策和法规的影响以及及时应对不断变化的商业环境。
(4)问:材料清单和供应链透明度在其他方面还有什么帮助?
答:几十年来,物料清单和供应链管理原则对汽车业、食品业和传统制造业的行业改革都有助力作用。其中许多原则是由丰田公司在20世纪40年代所树立,并在越来越多的行业中得以应用并持续改进。这场革命的一个关键是供应链透明度和了解软件来源和质量以及如何有效解决缺陷。SBOM计划的承诺将经过验证的供应链原则应用于现代软件开发。事实上,早在2013年,金融业就已经开始尝试实现软件供应链透明度。
3.3
常见的误解和担忧
(1)问:SBOM会成为“攻击者的路线图”吗?
答:理论上,是的。现实中透明度的防御优势远远超过了这类担忧,因为SBOM更多地是作为“防御者的路线图”来使用。所有信息都是一把双刃剑,但软件透明度不足会给攻击者带来不对称的优势。
首先,攻击者不需要SBOM;像WannaCry这样的大规模、无差别的攻击提醒我们,提前预知不是造成伤害的先决条件。其次,攻击者与他们的工具可以轻易地识别出软件组件;相反,防御者想要确定相同的内容往往具有相当大的挑战性和破坏性,并且效率很低,甚至是非法的。第三,对任一产品的攻击者早已能够找到人工可读的目标组件——这是因为近几十年来,对许可证披露的请求越来越频繁。
SBOM试图通过提供企业范围内的附加透明度,以及标准化且机器可读的决策支持,为防御者提供公平的竞争环境。
(2)问:SBOM是否需要公开源代码?
答:不需要。专有源代码仍然属于版权所有者,版权所有者可以自行决定共享或保密。因此也没有必要担忧因暴露代码而导致可能操作内部信息,这些软件组件只是“拼图的碎片”,完全不能近似指代某个软件程序的“完整拼图”。
(3)问:软件组件的清单是否会暴露相关知识产权?
答:不会。首先,知道第三方软件组件的组成内容和最终实现软件之间有很大的区别。此外,与供应链组件相关的任何知识产权都属于上游组件、第三方组件、商业和开源软件供应商。事实上,由供应商的组件上附加的许可证可能会要求软件公开披露其以任何形式包含的外部软件。
(4)问:SBOM是否会增加软件的许可证违规风险?
答: 不会。只要存在被许可的软件,就会产生相应的许可义务,并且这些义务与SBOM无关。SBOM提供了在其他方面可能会被隐藏的软件清单。因此,SBOM曝光了潜在的许可证违规行为,并令人们有意识地减少此类违规行为。
(5)问:SBOM是否会增加“专利流氓”出现的概率?
答:参见:“SBOM是否会增加我违反许可证的风险?”
(6)问:SBOM会增加软件许可成本或授权承诺吗?
答:不会。通过创建SBOM所获得的软件信息允许制造商解决可能潜伏在软件程序中的未知许可承诺。这允许制造商通过授权费或获取更有利的许可条款来解决这些问题,从而避免罚款、诉讼和许可承诺,以防暴露软件持有者的专有代码。
3.4
创建
(1)问:谁负责创建和维护SBOM?
答:SBOM是由软件的生产者创建并维护的。“生产者”包括制造商、供应商和个人作者。理想情况下,生产商应将其供应商提供的SBOM整合起来;在没有SBOM数据的情况下,生产商可能必须为某些组件生成SBOM数据。
(2)问:SBOM中应该包含哪些内容?
答:SBOM应该包含以下基线信息的某种组合:作者名称、供应商名称、组件名称、版本字符串、组件哈希值、唯一标识符和关系。此外,还应包括许可证、谱系、出处。有关SBOM基线组件信息的详细信息,请参阅“构建软件组件透明度:建立通用软件材料清单(SBOM)” 的第2.2节:
https://www.ntia.gov/files/ntia/publications/framingsbom_20191112.pdf
(3)问:有哪些数据格式可以用于传输SBOM数据?
答:目前有三种常用SBOM格式,三种格式均支持SBOM的基线组件信息:
●软件标识(SWID)标签:https://csrc.nist.政府/项目/软件识别-SWID
●软件包数据交换(SPDX):https://spdx.dev/
●Cyclone Dx:https://cyclonedx.org/
在现有SBOM格式和标准的调查文档中可以找到关于SBOM格式的其他细节:https://www.ntia.gov/files/ntia/publications/ntia_sbom_formats_and_standards_https://www.ntia.gov/files/ntia/publications/ntia_sbom_formats_and_standards_whitepaper_-_version_20191025.pdf
(4)问:是否有工具可以实现SBOM格式之间的转换?
答:有此类工具。SBOM社区强调了不同SBOM数据格式之间必须具备互操作性。有一些工具可以在SBOM格式之间进行转换,例如:https://democert.org/sbom/。有关每种SBOM格式工具的其他信息,请参阅格式和工具文档草案的相关链接:
●软件标识(SWID)标签:http://tiny.cc/SWID
●软件包数据交换(SPDX):http://tiny.cc/SPDX
●Cyclone Dx:http://tiny.cc/CycloneDX
(5)问:何时创建、更改或维护SBOM?
答:组件的每个新版本都应当创建一个新的SBOM。当对组件做出修改,那么组件的SBOM也需要进行相应修改才能有效。关于何时创建SBOM的详细信息,请参见“构建软件组件透明度:建立通用SBOM” 的第4.2节:
https://www.ntia.gov/files/ntia/publications/framingsbom_20191112.pdf
(6)问:有些软件组件是由其他软件组件本身组成的。SBOM能否体现这种层次结构?
答:SBOM可以提供分层信息。如果SBOM中包含的每个组件本身也包含组件,则包含其他组件的组件应该有自己的SBOM。将每个软件组件所提供的SBOM组合在一起形成的SBOM,包含了充分理解软件及其各个部分所需所有层面的信息。这样组成的一个SBOM就类似于产品制造的多级材料清单。
https://en.wikipedia.org/wiki/Bill_of_materials#Multi-level_BOM
(7)问:SBOM应该列举的依赖关系图需要达到什么样的深入程度?
答:这取决于目标受众和沟通媒介。在机器可读SBOM的情况下,最小可行模型是单一层级,目标是在供应链上循环往复。许多用例(如FDA医疗设备网络安全管理)希望SBOM能够尽可能完整,但他们也理解要想构建完整的SBOM需要时间。对于大多数用例,SBOM越完整,能产生的价值就越大。
3.5
分发与共享
(1)问:如果我创建了一个SBOM,是否必须公开它?
答:不是必须要公开的。创建SBOM的行为和将SBOM分享给可以建设性地使用这些数据的人是不矛盾的。作者可以自行决定宣传和分享其SBOM。对于公开可用的开源软件,公开其SBOM是有意义的。在其他情况下,特定部门的条例或法律规定可能要求能够或多或少地访问SBOM。此外,如果SBOM数据更容易获取,这些数据对整个供应链更有可能产生积极影响,并实现上文所描述的优势。
(2)问:如何共享SBOM数据?
答:由于SBOM将供大量软件使用,在不同的情景中,共享SBOM数据的方法也各不相同。但SBOM数据可以通过一系列可预测和可发现的方式进行宣传、共享和访问控制(如果需要的话),包括:
●与源代码或二进制文件一起发布
●制造商网站
●一些集中的或受信任的第三方网站
●来自设备的完整内容(例如,OpenC2)
●来自设备的指针(例如,制造商使用说明规范https://www.rfc-editor.org/info/rfc8520)
●提供给购买者的人工可读的文件(例如,OpenChain)
需要注意的是,共享机制与SBOM的共享对象无关。NTIA的利益相关者将继续审查如何有效地共享SBOM数据。
3.6
特定角色
(1)问:购买者可以如何利用SBOM
答:在做出购买决定之前,SBOM可以为购买者提供以下信息和帮助:
●为软件的各个部分及其之间的相互关系编写目录
●了解软件产品的许可链
●了解软件的复杂性(软件各个组成部分的日期、版本)
(2)问:SBOM如何帮助工程师为现场部署的技术发挥监视功能,以发现新的漏洞
答:对公开的漏洞(NVD、Vulner等)进行定期(最好是自动化的)对比,可以对环境中的潜在风险提供早期警报。此外,可以针对所披露的漏洞对程序的影响进行后续调查,这样可以使产品在受到攻击之前获得补丁。这可以提高客户的满意度,也可以提高该软件在市场上的受认可地位。有关工程师和其他人员的额外益处,请参阅:
https://www.ntia.gov/files/ntia/publications/ntia_sbom_use_cases_roles_benefits-nov2019.pdf
3.7
SBOM可以和哪些内容存在什么关联?
(1)问:SBOM与医疗器械安全制造商披露声明(MDS2)有什么关联?
答:医疗器械安全制造商披露声明(MDS2)为医疗设备制造商提供了一种向医疗保健提供者披露其制造的医疗设备的安全相关特性的手段。
负责建立和修改最新版本的MDS2工作组都是NTIA SBOM多利益相关者过程的参与者。MDS2的SBOM部分是根据这些类似经验而创造出来的。新版MDS2发布于正式SBOM文档出台之前,因此被设计得极具灵活性,以适应NTIA SBOM多利益相关者进程中出现的任何指导和标准。有关其他详细信息,请参阅:
https://www.nema.org/standards/view/manufacturer-disclosure-statement-for-https://www.nema.org/standards/view/manufacturer-disclosure-statement-for-medical-device-security i
(2)问:SBOM与OpenC2有什么关联?
答:OpenC2是一种用于指挥和控制网络安全的标准化语言。OpenC2的部分命令可以获取设备的SBOM、分析SBOM,并根据分析采取适当的行动(例如,连接、修补、沙箱或锁定)。有关其他详细信息,请参见:https://openc2.org/
(3)问:SBOM与制造商使用说明(MUD)有什么关联?
答: 制造商使用说明(MUD)描述了物联网设备及其功能和需求。对这些描述的扩展可以通过指向一个URL、指示适当的本地机制或指示联系点,告知本地部署如何找到对应SBOM。如需有关其他详细信息,请参阅:https://csrc.nist.gov/publications/detail/sp/1800-15/draft
(4)问:SBOM与DBOM有什么关联?
答:DBOM是共享包括供应链成员间SBOM信息在内的数据的认证共同主干部分。如需其他详细信息,请参见https://github.com/DBOMproject.
3.8
参与其中
(1)问:从哪里可以找到更多关于NTIA SBOM流程的信息?该如何参与其中呢?
答:如果想要了解更多关于SBOM的NTIA多方利益相关者流程信息,例如范围、定义、工具、格式、社区起草的文档和现有的实践状态。请访问:www.ntia.gov/sbom,www.ntia.gov/softwareTransparency。
04
总结语
该文件从SBOM概述、SBOM的优势、SBOM创建过程、SBOM的分发与共享等方面出发,系统地介绍了SBOM的定义和适用群体,阐述了SBOM在网络攻击事件、漏洞管理、许可证管理等方面的优势,同时,回答了SBOM创建和使用过程中可能产生的误解和担忧。对于软件创作者和SBOM创作者来说,该文件中强调了不会强制要求公开软件源代码和SBOM信息,选择权在于作者本人。最后,该文件一一说明了医疗器械安全制造商披露声明(MDS2)、OpenC2、制造商使用说明(MUD)以及DBOM等内容与SBOM的关系。
1
END
1
SBOM系列政策文件研究由中国信通院、中国联通联合牵头,筹建单位奇安信、会员单位悬镜安全、绿盟、高伟达、比瓴、盈高科技、亚信、北银金科、孝道科技、南洋理工大学、华为支持开展,包含13篇政策文件的翻译、解读,涵盖了SBOM整体内容概述,SBOM的生成、获取、交换、共享、管理、使用等全生命周期过程,回答了关于SBOM的常见问题,以期助力社区的安全研究研讨,加速推进提升国内供应链的安全管理水平。


