如何通过SBOM(软件物料清单)实现安全治理

前言

SBOM(软件物料清单)是近年来在软件供应链领域频繁提到的概念,Linux基金会在2021年Q3调研了全球412 家机构发现已经有82%的人熟悉SBOM、78%的组织预计在今年使用SBOM。本文将介绍SBOM基本概念、实现方式、应用场景,帮助读者通过SBOM更高效地实现安全治理目标。

什么是SBOM

根据NTIA(美国国家电信和信息化管理局)的定义,SBOM(Software Bill of Materials,软件物料清单)是一份关于软件组件和依赖,包含它们的信息和层级关系的形式化、机器可读清单。

NTIA认为SBOM应该满足以下要求:

  • 这份清单应该是全面,或者是明确识别范围的
  • 应包含开源和闭源软件
  • 能被广泛使用或者限制访问

还定义了SBOM中应该包含的最小化的软件组件信息(基线软件组件信息),包括:供应商名称、组件名称、唯一标识符、版本字符串、组件哈希、组件之间的关系、SBOM作者姓名。

在展现方式上,SBOM的信息可以通过图、表格等方式进行展现。

如何通过SBOM(软件物料清单)实现安全治理

(左图为SBOM最小化信息示例,右图为依赖关系图示例)

如何通过SBOM(软件物料清单)实现安全治理

(树状表格展示的SBOM信息示例)

SPDX (ISO/IEC 5962:2021) 是目前SBOM格式的事实标准,常见的格式还有SWID和CycloneDX,都能满足最小化的使用需求。

SBOM的用途

根据Linux基金会的调研报告,人们普遍认为SBOM有三大收益:

  • 51%的人表示,开发人员更容易理解应用程序中组件之间的依赖关系
  • 49%的用户表示更容易监控组件的漏洞
  • 44%的人指出,管理许可证合规变得更容易

依赖治理

当今软件开发的过程,如同开发人员使用一个个组件作为积木搭出高楼,随着软件变得越来越复杂,开发人员可能并不清楚用到了哪些组件、这些组件之间又存在什么样的依赖关系,一个个的积木如同黑箱般存在,维护起来只能小心翼翼,随时可能陷入下图中的依赖地狱。

如何通过SBOM(软件物料清单)实现安全治理

对于企业的工程团队而言,对于一些管理需求,例如规范某类组件的使用、避免重复开发以提升研发效率,首先需要了解企业内各种项目中使用到的组件,梳理对应的依存关系,才能做出有效的管理动作,这也迎合了当前比较火热的可见性需求。

一个组件版本碎片化的go语言项目可能会像下图这样,依赖了大量不同版本的同一组件。基于SBOM可以将碎片化的组件版本固定至一个或多个长期维护的稳定版本,避免版本无人维护导致产生bug无法解决。

漏洞管理

企业安全团队在面对新的漏洞、安全事件出现时,需要评估企业内有哪些资产受到影响,可以通过将漏洞的影响软件、版本范围等信息与已有SBOM进行关联,得到受影响资产列表,从而指导进一步的风险处置动作。

例如当出现新的类似log4j的漏洞时,可以通过SBOM以图的形式查找哪些内部项目中用到了log4j,通知这些项目的维护者进行漏洞修复。

除了应急响应,在日常的风险管理中,可以基于SBOM计算每个项目存在依赖的漏洞风险,作为安全评价维度进行管理。

开源许可证合规

2021年罗盒公司的案件是中国法院首次认可了GPL许可证的效力,违反开源许可证也已经被越来越多的国家法律认定为侵权行为。为了降低软件侵权风险,企业需要识别软件中涉及的许可证,有效管理项目中涉及的许可证风险。

而由于许多开源许可证具有传递性,如果不能全面识别所涉及到的组件及对应的开源许可证信息,则可能忽略所开发软件需要遵循相应的开源许可证约束,比如需要提供源代码、需要对开源许可证进行标识。

如图中项目A引用了组件A,组件A使用了AGPL许可证,则项目A应该按照AGPL许可证的要求,不论修改或使用都应该开源。这样的场景对企业使用会有较多限制,应基于SBOM及时进行治理。

如何生成SBOM

可以看到包括墨菲安全的客户端在内有不少的开源工具都可以生成SBOM,而有效的SBOM依赖软件成分分析能力和大量知识数据的储备。

SCA(软件成分分析)

SBOM的生成依赖SCA技术,识别组件和版本,并输出对应的层级依赖关系。其复杂性在于

1)要适配不同的编程语言,而像java和c/c++这样不同语言的包管理机制会有较大差异;

2)要从源码、制品、二进制等不同形态的软件产物中解析提取特征,这些特征的提取策略依赖于对各类产物的理解。

知识库数据

除了SBOM中的基线字段信息外,漏洞、开源许可证也可以作为SBOM的附加信息,而这样的数据则强依赖于云端知识库的积累。

知识库需要实时跟踪当前的各种漏洞情报,并由人工运营加工;需要采集大量的代码、制品信息,分析依赖、计算哈希、提取特征等等,加工形成能和SCA工具结果匹配的特征数据。

如何发挥SBOM的作用

对于企业而言,要想充分发挥SBOM的作用,至少应该关注以下几点。

SBOM及时更新

老旧的SBOM数据可能产生反作用,做无用功的同时让研发团队产生抱怨,因此SBOM应该是跟随代码、制品动态变化的「实时」数据。

可以通过将SBOM更新的逻辑嵌入到每一次代码的变更,例如通过IDE插件识别对应的代码变更、与代码仓库集成在代码提交或合并时重新生成;对于没有代码或者项目中存在二进制依赖的情况,CI/CD环节则更为关键,通过与jenkins等软件的集成可以实现代码发布前的审查。

通过知识库关联风险数据

SBOM只是一个开始,要想用于风险的治理,只有基线数据字段的SBOM难以发挥它的价值,背后需要有强大的知识库作为支撑。

SBOM要和知识库进行联动,当SBOM发生变化或者知识库中的数据发生变化时,都应该触发风险识别逻辑。例如,当SBOM中引入了一个新的组件,需要通过知识库评估这个组件是否存在开源许可证约束、是否适合商业使用;当出现一个新漏洞,知识库收录后应该联动SBOM判断有哪些项目受到影响。

构建管理平台

对于企业的内部治理而言,单点的工具是不够的,还需要有管理平台输出全局的风险视图,提供管理和控制能力。

例如,管理平台需要记录每一次的SBOM变化情况,从而能够展现不同时间点的风险指标情况;要能够基于项目、资产等不同维度对结果进行聚合,便于对总体风险进行梳理。

基本的管理平台可以如下图所示,以SBOM和知识库作为核心数据,控制模块通过和制品库、代码库等的联动,进行数据收集和策略下发,出现问题时帮助企业及时止损。决策模块对黑白名单进行维护、对阻断等策略进行管理,管理模块提供SBOM查询和相关管理指标看板的能力。

要求供应商提供SBOM

企业难以避免会使用到各类供应商提供的软件产品,这些产品通常以二进制的形式交付,相比源码识别的效果覆盖率会更低,存在的风险更难识别。此时SBOM应该作为供应商准入的要求,在采购环节要求提供SBOM,并对SBOM进行审查和统一管理。

总结

对于企业而言,SBOM是软件供应链治理中很重要的基础数据,能够帮助企业实现依赖治理、漏洞管理和开源许可证合规。SBOM背后靠的是SCA和知识库数据的支撑,想要充分发挥SBOM的作用,应该将生成工具和尽可能多的研发流程打通,做到实时更新,和全面的知识库数据进行动态关联,通过管理平台支撑全局的风险呈现与管理,同时还应要求供应商提供SBOM信息。

参考链接

https://www.ntia.gov/SBOM

https://www.ntia.gov/blog/2021/ntia-releases-minimum-elements-software-bill-materials

https://linuxfoundation.org/wp-content/uploads/LFResearch_SBOM_Report_020422.pdf

(0)
上一篇 2023年8月9日 下午7:29
下一篇 2023年8月9日 下午8:33

相关推荐

  • ChatGPT类AI软件供应链的安全及合规风险

    AIGC将成为重要的软件供应链 近日,OpenAI推出的ChatGPT通过强大的AIGC(人工智能生产内容)能力让不少人认为AI的颠覆性拐点即将到来,基于AI将带来全新的软件产品体验,而AI也将会成为未来软件供应链中非常重要的一环。 在OpenAI的文档中,例举了可以利用其实现的48种应用场景,人们在积极探索如何将以ChatGPT为代表的AI能力应用到各行各…

    2023年8月9日
    0
  • 用社区和开发者工具驱动软件供应链安全治理

    本文整理自 OSCS 软件供应链安全技术论坛- 章华鹏老师开场致辞的分享内容。 章华鹏,十二年的企业安全建设、安全社区白帽子、开发者,先后在百度、贝壳负责过企业安全建设 ,也在乌云负责过安全产品,业余时间活跃于安全技术社区,帮助企业、开源项目、软件公司解决过数百个严重安全问题,现在负责墨菲安全和 OSCS 社区,专注于软件供应链安全方向。 软件供应链安全的概…

    2023年8月9日
    0
  • 前沿 | 国外开源软件安全治理模式研究及工作建议

    开源软件是指软件源代码可以被共享和公共使用的软件。在人们享受开源软件的便捷性和广泛性同时,一旦发生开源软件安全漏洞,其危害程度大、波及范围广,将造成较大安全隐患,从而使对开源软件的治理成为一项重要内容。本文在分析开源软件安全风险的基础上,对国外开源软件安全治理模式进行研究,对我国开源软件安全治理工作存在的不足展开反思,基于以上研究,就如何更好地保障我国开源软…

    2023年8月24日
    0
  • 如何解决软件供应链的安全问题?

    作者:TOMISLAV PERICIN 对于组织来说,更多地了解他们所依赖的软件供应链以及保护它们所需的步骤至关重要。在过去几年中,我们看到恶意行为者利用软件供应链中的漏洞来促进对组织的攻击。但是,重要的是要记住,这些攻击并不是一个新现象。事实上,它们已经存在了几十年。因此,保护我们所依赖的软件的需求并不新鲜,尽管业界将注意力转向这个问题。 软件供应链攻击也…

    2023年9月7日
    0
  • 软件完整性保护方案之Sigstore

    背景 SolarWinds Orion 软件更新包在2020年底被黑客植入后门,此次攻击事件波及范围极大,包括美国政府部门、关键基础设施以及多家全球500强企业,影响难以估计。如果用户能确认软件来源是可信的 SolarWinds 官方,这次事件可能可以避免。 为了确认软件的来源和构建方式,实现完整性保护,Linux基金会联合Red Hat、Google 和 …

    2023年8月9日
    0