软件成分分析(SCA)一文中,我们简单提到软件物料清单(SBOM)在安全实践中的价值。 本期文章将带你深入了解 “SBOM 无处不在”计划是什么,以及 SBOM 对未来软件供应链安全和开源生态系统的重要性。

开源软件安全基金会(OpenSSF)发布了一项动员计划,以提高开源软件(OSS)的适应性和安全性。 现代软件供应链之所以广泛使用 OSS,是因为它提供了更快的创新和更高质量的产品,但由于 OSS 组件固有的漏洞,其广泛采用会伴随一定风险。

该计划的一个重要部分是使用软件物料清单(SBOM)作为基础构建块,改善整个开源生态系统的安全状况。 这个计划概述了 OSS 项目应如何向下游用户提供 SBOM,从而将 OSS 组件的可见性提升到一个新的高度。 因此,使用 OSS 的企业和组织将需要一套用于 SBOM 管理的流程,使他们能够生成、获取、分析、存储、监控和共享 SBOM,以提高其自身软件供应链的安全性。

“SBOM 无处不在”究竟是什么?

开源软件安全动员计划包含 10 个行动项目被称为“活动组”。 第9组的目标为 “SBOM 无处不在: 改进 SBOM 工具和培训,以推动其广泛应用”,旨在帮助推动 SBOM 作为基础构建块的应用,以改善整个开源生态系统的安全状况。 该计划的核心思想是让 OSS 生态系统能够为其软件的每个版本提供准确的 SBOM。 对于 OSS 厂商、用户和维护者,SBOM 提供的软件产品中所有组件的最终列表,可用于在软件开发生命周期的每个阶段识别现有漏洞和新漏洞。

“SBOM 无处不在”工作小组将确保现有的 SBOM 格式与记录的用例相匹配,同时开发高质量的开源工具来创建 SBOM 文档。 尽管目前已有相关工具,但还需要搭建更多工具。 该工作小组还负责开展以 SBOM 为主题的教育活动,以推动 SBOM 在开源领域、政府和商业行业生态系统中的应用。

值得注意的是,美国联邦政府采取了积极主动的措施,要求政府机构消费和生产的所有软件都使用 SBOMs。 《关于改善国家网络安全的行政命令》指出,网络攻击的频率和复杂性的增加催化了公共和私有部门联手保护软件供应链的局面。 这也标志着 SBOM 驱动的未来已经到来。

SBOM 驱动的未来会是什么样子?

计算机科学家先驱 Alan Kay 有一句名言: “预测未来的最好方法就是创造它。 ” SBOM 的变革必然是一种创新和发明。 当我们使用 SBOMs 时,我们将找到新的方法来改进和构建目前已有的模式。 关于未来的 SBOM,我们先睹为快:

多种 SBOM 格式

目前存在多种 SBOM 格式标准,而这些标准将不断改进并演变出其他标准。 当下两种最常见的 SBOM 格式是 SPDX 和 CycloneDX。 虽然某一种格式可能会成为行业标准,但是只要有多个标准存在,我们仍有可能需要继续使用多种格式。 因此对于 OSS 用户来说,选择能够支持多种格式的工具则是最优方案。

引入和生成 SBOM

我们运行和构建的许多东西实际上是由许多较小的部件组装起来的。 同样,现代软件应用程序使用数百甚至数千个较小的构建块像拼乐高一样将它们组装起来。 我们需要将每个组件中的 SBOM 组装起来,以便为特定应用程序制作一个全面的 SBOM。

我们使用的组件的 SBOM 可能来自 OSS 项目或商业软件,亦或者可能需要我们自己为某些组件生成 SBOM。 重要的是要能够以不同的格式引入这些组件级 SBOM,然后组装它们来建立一个更全面的 SBOM。

 

组装和输出 SBOMs

当组装完应用程序级 SBOM,我们将在内部进行使用和共享(出于安全性和合规性目的)。 我们将为现有软件引入 SBOM,为创建的新软件生成新的 SBOM,然后输出包含最终应用程序所有组件的 SBOM。

如果没有工具管理 SBOM,输出 SBOM 的过程将非常复杂且费时。 大多数应用程序将具有用于各个单独组建的,多个版本的 SBOM,所有这些部分都要合并到最终的 SBOM 中。 如果没有 SBOM 工具,跟踪和准确创建应用程序级的 SBOMs 将是一项不可能完成的任务。

SBOM 管理

目前,“SBOM 无处不在”的重点是使用 SBOM 进行漏洞扫描。 通过维护软件应用程序中所有 SBOM 的存储库,您可以持续监控 SPOM 并及时发现新的漏洞,在部署后也是如此。 SBOM 管理还包括维护软件组件的清单,根据项目参与者发布的内容,来验证正在使用的内容,获得对开源许可证的可见性,以及评估 OSS 项目的运行状况和风险。 而在未来,SBOM 数据将有更多其他用途。

开启 SBOMs 的四个步骤

1. 了解 SBOMs

“SBOM Everywhere”倡议的其中一个重点是意识和教育。 SBOM 有很多自学资源,例如来自不同平台的博客文章。 通过开始学习 SBOMs 以及日益累积相关认知,您将为SBOM 驱动的未来做好更充分的准备。

2. 生成 SBOMs

开始为软件或开源组件生成 SBOM。 有许多开源工具可用,比如docker sbom,Syft 和 GoReleaser。 通过为构建和部署的软件创建 SBOM,我们可以了解共享 SBOM 的最佳方式。

3. 获取 SBOMs

向开源项目维护人员以及商业软件供应商获取 SBOMs。 客户和用户请求 SBOM 的频率越高,SBOM 在功能请求列表中就越靠前。

4. 对 SBOM 的合理预期

对于所有人来说,对于全新的 SBOM 采用模式应当有一个合理的预期。 我们将不断地从过往的成功或失败中获取经验。 秉持耐心和理解,努力探索如何创建,管理和输出SBOM,最终将帮助我们更快地迈向 “SBOM 无处不在” 的未来。

通过采用 SBOM 作为最佳实践,来保护在更大的生态系统中创建共享依赖关系的常用 OSS 组件,由此在极大程度上提高整个软件供应链的安全性。

参考链接:

The Open Source Software Security Mobilization Plan

https://openssf.org/oss-security-mobilization-plan/

Executive Order on Improving the Nation’s Cybersecurity 

https://www.whitehouse.gov/briefing-room/presidential-actions/2021/05/12/executive-order-on-improving-the-nations-cybersecurity/

OpenSSF安全计划:SBOM将驱动软件供应链安全的更多相关文章

  1. 基于 Docker 的现代软件供应链

    [编者按]本文作者为 Marc Holmes,主要介绍一项关于现代软件供应链的调查结果.本文系国内 ITOM 管理平台 OneAPM 编译呈现,以下为正文. 3 月初,为了了解软件供应链的现状以及 D ...

  2. CSO视角:Sigstore如何保障软件供应链安全?

    本文作者 Chris Hughes,Aquia的联合创始人及CISO,拥有近20年的网络安全经验. SolarWinds 和 Log4j 等影响广泛的软件供应链攻击事件引起了业界对软件供应链安全的关注 ...

  3. Kubernetes 时代的安全软件供应链

    点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 汤志敏  阿里云 ...

  4. SLSA 框架与软件供应链安全防护

    随着软件供应链攻击浪潮愈演愈烈,Google 发布了一系列指南来确保软件包的完整性,旨在防止影响软件供应链的未经授权的代码修改.新的 Google SLSA 框架(Supply-chain Level ...

  5. win7 摄像头驱动软件找不到,只有sys文件

    有的驱动只有sys文件,但是仍然可以在qq视频等用,只是找不到amcap.exe等可执行文件, 因为没有摄像头软件,下载一个安装上即可

  6. AI如何驱动软件开发?华为云DevCloud 权威专家邀你探讨

    近期,国际著名咨询公司Gartner 在一份研究报告中将 "AI-Driven Development" 列为 2019 年的 Top 10 Strategic Technolog ...

  7. 利用jink的驱动软件j-flash 合并两个hex的方法,bootloader+app

    由于前几天要给工厂app和bootloader的hex的文件,网上很多都是bin的合并方法,bin的方法不再赘述,相信大家都能找到,现在将hex合并的方法写下来: 第一步:先打开第一个hex文件, 第 ...

  8. 利用jink的驱动软件j-flash 合并两个hex的方法,bootloader+app -(转载)

    第一步:先打开第一个hex文件, 第二步:选择 "Merge data file",合并文件 第三步:两个工程有可能地址相同,会有如下提示:(如果在编译的时候设置好Flash的地址 ...

  9. OpenSSF的开源软件风险评估工具:Scorecards

    对于IT从业者来说,Marc Andreessen 十年前提出"软件吞噬世界"的观点早已耳熟能详.无论是私人生活还是公共领域,软件为现代社会的方方面面提供动力,对现代经济和国家安全 ...

随机推荐

  1. Java语言学习day29--8月04日

    今日内容介绍1.Object2.String3.StringBuilder ###01API概念 * A:API(Application Programming Interface) * 应用程序编程 ...

  2. IO ——字节流

    什么是流? 概念:内存与存储设备之间传输数据的通道.程序运行后保存在内存,文件一般在硬盘中,在程序中读写文件,需要在内存和存储设备中建立通道.数据借助流传输 流的分类: 按流向: 输入流:将存储设备中 ...

  3. C++中 指针的指针是什么?指针的引用又是什么?你可能需要看看这篇文章

    关于变量的定义 我们都知道变量的定义包括一个基本数据类型(base type)和一组声明符,在同一条定义语句中,输入基本数据类型不同,但是声明符的形式却可以不同. //如:i是一个int的整数,a是一 ...

  4. XCTF练习题---WEB---baby_web

    XCTF练习题---WEB---baby_web flag:flag{very_baby_web} 解题步骤: 1.观察题目,打开场景 2.观察题目内容,想想初始页面是哪个,再看看URL,尝试输入in ...

  5. 《转载》python/人工智能/Tensorflow/自然语言处理/计算机视觉/机器学习学习资源分享

    本次分享一部分python/人工智能/Tensorflow/自然语言处理/计算机视觉/机器学习的学习资源,也是一些比较基础的,如果大家有看过网易云课堂的吴恩达的入门课程,在看这些视频还是一个很不错的提 ...

  6. 了解mybatis

    什么是mybatis? MyBatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射.MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作.MyBati ...

  7. 基本命令学习 -(4)链接文件:ln命令

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 前言 在Windows系统中,快捷方式是指向原始文件的一个链接文件,原文件一旦被删除或剪切到其 ...

  8. WSL与Windows环境共享

    Reference 更多cmd.exe帮助参考 cmd_helps WSL备份及windows Docker安装 WSL安装维护 在使用wsl时,总是需要执行windows的cmd,但是windows ...

  9. Springcloud及Git线上配置详解

    SpringCloud 这个阶段该如何学? 三层架构 + MVC 框架: Spring IOC AOP SpringBoot,新一代的JavaEE开发标准,自动装配 模块化~ all in one,代 ...

  10. mybatis 查询返回的类型中字段类型为 List<xx>

    基本类型数组 mapper.xml <resultMap id="xxDtoResultMap" type="com.xx.xxDto"> < ...