freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

后“最小要素”时代如何推进软件物料清单(SBOM)的应用落地
2023-08-23 15:57:08

专栏·供应链安全

数字化时代,软件无处不在。软件如同社会中的“虚拟人”,已经成为支撑社会正常运转的最基本元素之一,软件的安全性问题也正在成为当今社会的根本性、基础性问题。

随着软件产业的快速发展,软件供应链也越发复杂多元,复杂的软件供应链会引入一系列的安全问题,导致信息系统的整体安全防护难度越来越大。近年来,针对软件供应链的安全攻击事件一直呈快速增长态势,造成的危害也越来越严重。

为此,我们推出“供应链安全”栏目。本栏目汇聚供应链安全资讯,分析供应链安全风险,提供缓解建议,为供应链安全保驾护航。

注:以往发布的部分供应链安全相关内容,请见文末“推荐阅读”部分。


软件物料清单(SBOM)是一种为了提升供应链透明度而记录其软件组成等信息的文件,对降低供应链维护和保障的工作量及难度意义重大。近年来,随着软件供应链安全成为关注焦点,特别是美行政令EO 14028发布后,各界对SBOM的追逐也呈现出白热化的态势。

但由于SBOM在使用推广过程中出现了一些困难和抵触,从业者对SBOM的思考也开始回归理性。红帽产品安全副总裁Vincent Danen针对《2022软件材料清单和网络安全报告》的统计数据表示,SBOM只有使用时才有用,仅要求生成并不解决问题,SBOM未来的方向是集中数据,SBOM数据工作起来才能推动其使用。

本文以《SBOM最小要素》遇到的应用瓶颈为切入点,归纳分析了美网络安全和基础设施安全局(CISA)和开源安全基金会(OpenSSF)等机构组织在推动SBOM“使用”、“实用”、“适用”方面的思路、举措和进展,并结合我国当前的SBOM工作状况提出了对应建议。

一、“最小要素”其实并不“小”

美国家电信与信息管理局(NTIA)发布的《SBOM最小要素》是EO 14028要求的重要指南成果之一,引发了广泛关注。但软件供应链安全服务商Chainguard在2023年1月发布的一份对3000多个SBOM文件检测结果的分析报告中提到,1%SBOM文件满足“最小要素”的要求,大量SBOM文件存在缺少组件供应商数据、无法指定所有组件的名称或版本等问题。由此看来,“最小要素”的要求似乎是SBOM的较高门槛

此外,白宫管理和预算办公室(OMB)2022年9月发布了《通过安全的软件开发实践增强软件供应链的安全性》(M-22-18)的备忘录,以响应EO 14028 4k的要求。备忘录的附录规定了各机构后期需完成的任务及期限,其中CISA有一项任务是“发布更新的SBOM指南”,但未明确完成期限。这也反映出最小要素可能并非SBOM使用推广的最佳选择。“最小要素”时代必将随着新指南的制定而结束,但NTIA的一系列文件依然是后续工作的重要基础。

二、CISASBOM指南更新”工作进展

CISA的背景和职能定位决定了其SBOM工作更加关注落地和漏洞风险等方面,聚焦可操作性、工具、新技术、新用例等内容。CISA意识到SBOM的发展和改进应来自社区,通过促进社区的参与、开发和持续进步来推动SBOM工作。一年多来,CISA通过搭平台、建模型、扩VEX(漏洞可利用性信息交换)等工作完善和推进SBOM指导文件制定。

1、搭平台:推动成立5个工作组

为促进软件和安全社区在更广泛的技术生态系统中理解SBOM的创建、使用和实现,CISA推动成立了5个工作组。

工作组

每周会议时间

(美东部时间)

聚焦方向

VEX

周一10-11点

定义、细化VEX模型,并描述用例和认证等

共享和交换

周一12-13点

跨软件供应链的SBOM移动及相关元数据

入口和采用

周二12-13点

组织提供、请求和使用SBOM以了解风险并确保安全

云和线上应用

周三15-16点

将当前理解集成到线上应用和现代基础设施上下文中

工具和实现

周四15-16点

关注自动化SBOM生态的机遇和挑战

2、建模型:凝练共享和类型模型

  • SBOM共享生命周期模型

为帮助使用者合理选择共享SBOM的解决方案,2023年4月,《SBOM共享生命周期报告》发布,描述了从SBOM作者到用户共享SBOM的完整过程,包括发现(Discovery)、访问(Access)和传输(Transport)三个阶段,如下图所示。

报告针对发现、访问、传输的一系列具体方法,分别定义了高、中、低三级复杂度,并结合例子进行了详细说明。例如,对于访问来说,低、中、高级复杂度的方法分别包括人工控制、限制的访问控制粒度、授权的身份认证和访问控制等。模型和这些方法均基于NTIA的《共享和交换SBOM》,但NTIA列出的方法较少,且未进行复杂度分级。

  • SBOM类型模型

2023年4月,CISA的SBOM工具和实现工作组发布了《SBOM类型》,总结了当前工具能够创建的6个常见SBOM类型及各自的优点和局限。具体SBOM类型如下表所示。

SBOM

类型

定义

数据描述

设计

针对准备做的、计划好的软件项目或产品

源于设计规范/RFP/初始概念

从开发环境、源文件和用于构建的依赖项中创建

SCA工具生成,手工净化

构建

SBOM作为软件构建过程的一部分

由集成的中间构建和源SBOM组成

分析时

构建后通过分析工件生成的SBOM

由第三方工具分析工件生成

部署

结合配置项分析和部署环境中执行行为检查

结合已安装工件SBOM和配置信息

运行时

通过检测运行软件的系统生成SBOM

记录环境中存在或执行的工件

在RASC2023上,CISA SBOM共享联合负责人、Cybeats战略副总裁Chris Blask报告了《SBOM的世界》的议题,介绍了上述各类型SBOM之间的关系及对电力行业典型供应链参与者改进透明度和效率的帮助,以及在“未来集成商交付的解决方案”、“安装新产品的程序操作”和“管理安全修复的程序”三个典型场景下,各类型SBOM协作应用的例子。

3、扩VEX:补充和制定VEX指南

VEX是一种用于表示软件产品是否受已知漏洞影响的机器可读的安全通知形式,并非SBOM的必要组成,但对SBOM数据的有效使用,特别是在安全领域的使用有很好的支撑作用。VEX最初由NTIA提出,但CISA近一年多来从多个方面进行了扩展和规范。

  • 定义VEX最小元素和应用场景

2022年4月,《VEX用例》发布,推荐了VEX文档最小数据元素,并提供了一系列产品供应商可能会遇到的应用场景示例,可用于指导构造不同复杂度的VEX文档。其最终目标是支持跨漏洞生态系统的更大自动化,包括披露、漏洞追踪和修复等。

VEX文档最小数据元素包括:VEX元数据、产品详情、漏洞详情、产品状态详情(NTIA初始VEX中定义的“不受影响”、“受影响”、“已修复”、“调研中”4种状态)4部分内容。并规定,如产品状态为“受影响”,则必须有一个行为语句来指明用户需要做什么;如产品状态为“不受影响”,则必须有一个影响语句来进一步解释细节。

文件针对“单产品&单漏洞”、“单产品&多漏洞”、“多产品&单漏洞”和“多产品&多漏洞”等四大类9种典型场景,分别给出了具体案例,以及套用了最小数据元素的CSAF和CycloneDX格式的VEX文档。

  • 确定“不受影响”状态解释选项

2022年6月,《VEX状态解释》发布,为“不受影响”的产品状态推荐了5种可能的解释选项,并提供了在VEX文档中适时使用不同选项的示例,以帮助使用者理解产品“不受影响”的结论是在什么情况下做出的。

这5种解释选项包括:组件不存在、易受攻击的代码不存在、易受攻击的代码不会被控制、易受攻击的代码不在执行路径上、内部缓解措施已存在。文件针对每种状态解释选项给出了具体的示例和对应的状态解释图。

例如,“组件不存在”的示例可能包括使用Python编写的产品不会受Java组件Log4j漏洞的影响、自动化导致不正确地将组件标识保存在JAR文件中、其他层删除了基础层容器镜像中包含的未使用的包等;“易受攻击的代码不在执行路径上”的状态解释图如下所示。

  • 规范VEX最低要求及标准格式

2023年4月,《VEX最低要求》发布,以标准格式指定了创建VEX文档所需的最小元素。“最低要求”面向自动化、工具和互操作性,为非强制要求。CSAF、CycloneDX和OpenVEX等格式均可用于生成基于最低要求的VEX文档。

“最低要求”的VEX数据元素如下表所示。一个VEX文档中可包含一个或多个VEX语句。表中数据元素名称后方括号中的内容是元素标识符;圆括号中的内容是对相应元素的解释说明。

所属类别

VEX数据元素

VEX文档

文档元数据

文档ID[doc_id]

文档版本[doc_version]

作者[author] (个人/组织,可表现为“名称/URI”等)

作者角色[author_role] (可定义为“用户/供应商/协调者/……”)

工具[tooling] (生成VEX相关信息的工具或自动化机制)

首次发布时间戳[doc_time_first_issued]

最后更新时间戳[doc_time_last_updated]

VEX语句

语句元数据

语句ID[statement_id]

语句版本[statement_version]

首次发布时间戳[statement_time_first_issued]

最后更新时间戳[statement_time_last_updated]

产品详情

产品标识符[product_id]

子组件标识符[subcomponent_id]

提供者[supplier]

漏洞详情

漏洞标识符[vul_id]

描述[vul_description]

状态

状态

[status]

(从4个状态选项选择)

若选“不受影响”,需增加:

影响语句[impact_statement]

影响语句时间戳[impact_statement_time]

解释[justification] (从5个解释选项选择)

若选“受影响”,需增加:

行为语句[action_statement]

行为语句时间戳[action_statement_time]

状态说明[status_notes] (附加信息,如引用的其他VEX信息等)

三、OpenSSFSBOM无处不在(SBOM Everywhere)”计划进展

在2022年5月的白宫开源软件安全峰会Ⅱ上,OpenSSF发布了《开源软件安全行动计划》,介绍了改善开源软件安全的10个方向。其中方向9为“SBOM无处不在:改进SBOM的工具使用和宣传培训,以尽量促进其应用”,核心思想是“通过无处不在的SBOM改善整个开源生态系统的安全状态。仅发布是不够的,SBOM需要被积极的使用”。

随后,OpenSSF在安全工具工作组下设立了“SBOM无处不在兴趣小组(SIG)”,专注于通过改进工具和培训促进SBOM的可用和易用。成立以来,SIG的主要工作聚焦在探索创建SBOM工具生态全景图、与开源生态和项目合作研发并向其推广成功经验、识别面向安全的SBOM用例等方面。

1SBOM工具生态全景图构建

(1) SBOM全景图的目标和任务

当前,对SBOM工具跟踪工作的不足带来了搜索工具的困难。SIG从成立之初就计划创建一个类似于CNCF“云原生全景图”的SBOM全景图,用于跟踪所有SBOM工具、企业、数据格式和用例,以便对生态中大量的解决方案进行分类、搜索和跟进。

根据计划,SBOM无处不在项目将为全景图的初始构建、填充和部署提供资金,并与OpenSSF会员、志愿者一起进行后续维护。SIG认为,全景图一旦建立起来并被视为信息的标准来源,开发者将保持对其工具的更新,并且能够帮助所有人驾驭庞大的SBOM世界。SIG为全景图的开发和部署规划了4项任务:

  • OpenSSF基础设施上建立SBOM全景图。全景图将托管在OpenSSF的GitHub库中,按OpenSSF要求使用适当的品牌和许可,并实施最新的行业标准;
  • OpenSSF工具分类法应用于已知工具列表。NTIA的已知工具文档已长时间未更新,且非机器可读。部署全景图时,SIG将会将其转换为全景图工具可读的YAML文件;
  • 完善现有的NTIA工具分类元数据。NTIA的分类方法已过时。在依靠社区成员提供当前工具、标准和概念的列表后,应尽量从中识别新的分类元数据;
  • 确保全景图是社区可维护的。全景图被部署后,将由社区来推动未来的更新。必须确保所有必要的组件都存储在GitHub库中,且有解释如何更新、添加和删除条目的文档。

(2) 基于工具信息模板的已知工具维护

根据上述第二项任务的要求,SIG正在推进SBOM工具信息模板的编制,并基于模板初稿(2022年9月1日)对140个已知工具进行了整理,包括基于SPDX的29个开源工具和15个专利工具、基于CycloneDX的61个开源工具和12个专利工具、基于SWID的15个开源工具和8个专利工具。此外,SIG还在探索通过设置模板的机器可读版本来自动获取工具数据。工具信息模板初稿及示例如下表所示。

<工具名称>(例如:<Augur>)

工具类型

所属的工具分类[说明:目前仍主要依据NTIA的工具分类法]

例如:生成(分析)

功能

关于工具功能的描述

例如:Augur用于开源软件健康使用和可持续性指标及数据收集,可扫描收集项目许可信息并创建SPDX文档。实例演示见http://augur.osshealth.io/

位置

能够获得工具的位置信息

例如:网址:http://www.augurlabs.io/;来源:https://github.com/chaoss/augur/

安装说明

关于如何部署工具的说明

例如:https://oss-augur.readthedocs.io/en/master/getting-started/installation. html

如何使用

关于如何在生产中使用工具的说明

例如:https://oss-augur.readthedocs.io/en/master/getting-started/create-a-metric /overview.html

支持的格式版本

工具支持的规格文件版本,如SPDX 2.2、SPDX 2.3、CycloneDX 1.4等

例如:SPDX 2.1

SBOM类型

根据本文第二2(2)节中列举的SBOM类型

例如:分析时SBOM

支持的Mime文件类型

工具支持格式的数据类型,如XML、JSON、YAML、RDF、SPDX、XLS

支持来源

专有/商业/开源社区

(3) 改进的SBOM工具分类法

根据上述第三项任务的要求,在NTIA工具分类法的基础上,SIG正在推进和探讨SBOM工具分类元数据的改进和完善。下表是改进的分类法的初稿(2022年9月1日),斜黑字体标注的是SIG新增内容,其他为NTIA原有分类内容。

分类

种类

描述

生成

构建

SBOM作为构建软件工件的一部分自动创建,包含有关构建的信息。这些信息包括含有的组件、标识及特定的版本标识符

静态分析

静态分析将通过检查工件和任何关联源来生成SBOM

动态分析

动态分析/监听执行以生成SBOM。需要一个执行环境,可能会遗漏被监听的执行不需要的依赖项。动静结合的分析被认为是动态分析

编辑

协助手动输入或编辑SBOM数据的工具

使用

查看

能够理解人类可读形式的内容。用于支持决策制定和业务流程

分析

可分析SBOM内容,并与其他数据集和策略比较,以支持风险管理决策。包括识别组件已知漏洞,漏洞是否可利用,潜在的许可问题

监管/报告

对于给定的组织,能够报告哪些产品包含重要的漏洞

差异对比

可比较多个SBOM并清晰地展现差异(如比较一个软件的两个版本)

导入

能够发现、检索和导入SBOM到系统中,以便进一步处理和分析

变换

转变

从一种文件类型转变为另一种文件类型,同时保留相同的信息

合并

可以将多个文档源合并在一起以进行分析和审计

工具支持

支持通过API、对象模型、库、传输或其他引用源在其他工具中使用

可以看出,修改包括将“生成”大类中的分析进一步划分为静态和动态分析,“使用”大类中增加了针对安全风险、漏洞的分析类和监管类工具,这也说明了这些工具的需求、开发或使用正在不断增加,已引起SIG的注意。

2、与开源生态和项目合作研发

SPDX Python库是一个用于解析、验证和创建SPDX文档的Python库,可帮助用户了解依赖关系,并提高安全性和合规性。但由于缺乏志愿者的技术和资金支持,该库较长时间未更新,不能与较新的SPDX版本保持一致。SBOM无处不在计划确立后的第一项工作就是促成了OpenSSF对SPDX Python库研发的资助,该工作于2022年9月1日启动,在2023年3月27日发布了SPDX Python库的0.7.0版本,提供了对SPDX V2.3的支持。

之所以积极推进该工作,是因为SIG认为无论未来软件安全状态如何,SBOM及相关工具的生态系统都将继续在保持软件生态安全方面发挥重要作用。此外,今年6月底SIG展望未来工作时还提到,下一步将会考虑将目前正在做的事情与一些开源项目合作,例如,SIG了解开源项目成功生成SBOM的条件,可为对此感兴趣的开源项目创建统一的实现手册。

3、面向安全的SBOM用例识别

SIG正在推进的另一项工作是通过识别用例,支持SBOM无处不在计划的执行,因为《行动计划》方向9中提到,消除进一步应用SBOM的重大障碍在于,确保使用SBOM构建用例所需的条件在当前SBOM规范中被清晰的理解、记录和实现;有好用的开源工具来生成满足这些条件的SBOM。对此,SIG总结了用户需求视角的用例信息要求和关键SBOM用户/角色初始集合等内容(截止2023年8月10日)。

用户需求视角的用例信息应突出列出用例的动机、清晰表达用户视角、明确SBOM的用途(即明确软件中非第一方贡献、修改和控制的成分,包括了解依赖项的许可以确保合规、了解依赖项的漏洞以评估安全风险、快速了解软件是否依赖于Log4j之类的组件);关键SBOM用户/角色的初始集合包括开发者、具有SBOM的产品的下游用户、产品架构师/管理者、开源项目办公室、安全工程、第三方供应商采购,每类用户又细分为若干具体用户种类。

SIG还简要介绍了软件生产者和用户的典型用例。软件生产者的典型用例包括通过构建、分析或编辑生成SBOM等5方面内容,软件用户的典型用例包括SBOM的查看、验证、分析和导入等8方面内容。

四、我国推进SBOM工作的进展及建议

为推进SBOM的落地,我国也已开展了多方面的工作。标准制定方面,国标《软件供应链安全要求(报批稿)》和《软件产品开源代码安全评价方法(征求意见稿)》中有关于SBOM基础字段的定义和对SBOM完备性、可追溯性的要求,全国信安标委7月发布的2023年度第二批网络安全国家标准需求中包括了《软件物料清单数据格式》的需求指南;科研项目方面,SBOM自动生成及应用的项目课题在稳步推进中;行业SBOM能力评估方面,由中国信通院组织开展的“可信软件物料清单SBOM能力评估”和“基于软件物料清单(SBOM)的软件供应链风险管理试点”,已发布相关评估结果。尽管如此,我国的SBOM应用和推广尚处于起步阶段,结合前面章节对已有工作的分析,本文建议:

  • 反向开展SBOM格式和内容规范的制定

SBOM是一项实践性很强的工作,主要难点在于应用推广,而非技术。在制定SBOM格式规范时,建议借鉴CISA从实践中提炼和归纳SBOM共享和类型模型的经验,借助产业界的力量(类比于CISA和OpenSSF依赖的社区),从已有成功案例中总结格式数据,并通过充分的试点试用进行验证和迭代。采用“理论指导实践”的反向思路制定规范。

  • 构建面向国内使用者的SBOM工具体系

自动化工具是SBOM可用易用的重要保障,让SBOM使用者方便的了解、获取和使用这些工具可大大提升工作效率。建议:组织或资助研发一系列特定功能的工具,如与格式规范配套的SBOM生成、验证工具;及时跟踪OpenSSF SBOM全景图进展,对相关成果选择性利用,并补充国内已有工具的信息,不断完善工具体系图谱,为SBOM使用者服务。

  • 推进基于SBOM的安全风险治理应用落地

建议SBOM格式规范中包含开源许可、漏洞等安全相关字段;软件供应方采用开源安全治理工具监测开源物料并消减其风险,监测所使用物料的安全漏洞等风险并及时为用户提供技术支持,生成SBOM并随产品提供;软件最终用户验证SBOM以确认软件成分和安全风险,在软件日常运行中,基于SBOM持续跟踪软件物料相关的威胁情报,及时采取措施。


推荐阅读

奇安信入选全球《软件成分分析全景图》代表厂商

奇安信入选全球《静态应用安全测试全景图》代表厂商

在线阅读版:《2023中国软件供应链安全分析报告》全文

奇安信发布《2023中国软件供应链安全分析报告》开源软件供应链的系统化安全治理需加速落地

在线阅读版:《2022中国软件供应链安全分析报告》全文

在线阅读版:《2021中国软件供应链安全分析报告》全文

Google Cloud Build 漏洞可使黑客发动供应链攻击

OWASP发布五维软件安全开发成熟度参考框架,提升软件供应链安全

给CISO的软件供应链债务偿还指南

新型供应链攻击利用被弃的 S3 存储桶分发恶意二进制

速修复MOVEit Transfer 中的这个新0day!

MOVEit 文件传输软件0day被用于窃取数据

MSI UEFI 签名密钥遭泄漏 恐引发“灾难性”供应链攻击

OilRig APT 组织或在中东地区发动更多 IT 供应链攻击

“木马源”攻击影响多数编程语言的编译器,将在软件供应链攻击中发挥巨大作用

GitHub 在 “tar” 和 npm CLI 中发现7个高危的代码执行漏洞

流行的 NPM 包依赖关系中存在远程代码执行缺陷

速修复!热门npm 库 netmask 被曝严重的软件供应链漏洞,已存在9年

Npm 恶意包试图窃取 Discord 敏感信息和浏览器文件

微软“照片”应用Raw 格式图像编码器漏洞 (CVE-2021-24091)的技术分析

速修复!热门npm 库 netmask 被曝严重的软件供应链漏洞,已存在9年

SolarWinds 供应链事件后,美国考虑实施软件安全评级和标准机制

找到软件供应链的薄弱链条

GitHub谈软件供应链安全及其重要性

揭秘新的供应链攻击:一研究员靠它成功入侵微软、苹果等 35 家科技公司

开源软件漏洞安全风险分析

开源OS FreeBSD 中 ftpd chroot 本地提权漏洞 (CVE-2020-7468) 的技术分析

集结30+漏洞 exploit,Gitpaste-12 蠕虫影响 Linux 和开源组件等

限时赠书|《软件供应链安全—源代码缺陷实例剖析》新书上市

热门开源CI/CD解决方案 GoCD 中曝极严重漏洞,可被用于接管服务器并执行任意代码

GitKraken漏洞可用于盗取源代码,四大代码托管平台撤销SSH密钥

因服务器配置不当,热门直播平台 Twitch 的125GB 数据和源代码被泄露

彪马PUMA源代码被盗,称客户数据不受影响


# 开源组件安全 # 软件供应链安全 # SBOM
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录