简单、透明、安全、高度集成!龙蜥可信 SBOM 能力探索与实践

近两年,软件供应链有非常多安全事件,包括软件供应链的各个阶段开发、构建、交付、使用等每个环节都有很多的软件供应链的安全事件发生。在 2023 龙蜥操作系统大会全面建设安全生态分论坛上,阿里云技术专家郑耿、周彭晨分享了龙蜥社区在构建 SBOM 基础能力方面所做的努力,也深入探讨了龙蜥社区在建立健全 SBOM 能力所必须开展的相关工作,并基于软件供应链各个阶段出现的签名服务短板,提出了专门服务于软件供应链的统一签名服务。以下为分享原文:

图片

01  软件物料清单(SBOM)

图片

提到 SBOM 就不得不提一下软件供应链的概念,上图是引用 CNCF 软件供应链白皮书。软件供应链和传统供应链是一个非常好的类比,如从原件的生产到工厂的制造,运输到用户侧,商店销售,触达到终端用户。从软件的维度,软件源码的引入、开发、构建,通过网络发布到最终的制品仓,触达下游用户的整个流程,即为软件供应链的定义。

图片

近两年的情况可以看到非常多的软件供应链的安全事件,包括软件供应链的开发、构建、交付、使用等各个环节都有很多安全事件发生,软件供应链问题急需解决。截止到 2023 年 4 月份的 12 个月之内,外企有至少 60% 的公司受到软件供应链攻击的影响。

图片

这就引出了软件物料清单的概念。软件物料清单可以理解为对软件制品的一种描述,它包括了一些软件的原信息、软件的基本信息、软件的依赖、开源证书等信息,可以做软件供应链管理、安全漏洞管理、应急响应、软件合规管理等用途。gartner 预测,到 2026 年至少有 60% 的采购方将在关键设施的采购中交付软件物料清单。

图片

龙蜥社区在逐步构建整个 SBOM 的基础数据能力。目前在龙蜥软件信息中心上已经实现了针对软件的软件包、ISO 镜像、容器镜像的全制品覆盖。目前,初步是实现国际主流的 SPDX 的格式的软件物料清单,后续根据需求,也会逐步支持其他的 CycloneDX、SWID 等更多 SBOM 格式的支持。

02  可信 SBOM

图片

什么是可信 SBOM?这里引用一句话:Simply producing an SBOM is not sufficient,instead we must ensure that such SBOMS are trustworthy,意思是做一个 SBOM 的交付是不够的,保证 SBOM 交付给下游的用户的 SBOM,它是可信的,什么是可信?从四个维度定义可信,一个是交付给用户的 SBOM 内容的准确性,比如软件制品包含了哪些成分,成分是否是真的,用机器学习的评价指标就是里面的假阳率有多少。二是可验证性,怎么保证交付给用户的 SBOM,用户可以验证交付的 SBOM 是真实的。三是完整性,比如 SBOM 可能包含了 99 个依赖成分,但可能它实际依赖了 120 个成分,完整性上的缺失导致 SBOM 内容不准确。四是 SBOM  的来源可信,是否是来源于一个可信的组织机构,比如龙蜥,而不是不可信的第三方,这就是机构可信背书的问题。

图片

目前开源社区在可信 SBOM 上的实践:上图是 Redhat 的 sbom 仓库。Redhat 在官方制品的仓库已经发布了一个 beta 版本的、基于 spdx 的 sbom 数据。可以看到每个制品的 SBOM 对应了三条数据,第一条是压缩后的 SBOM 文件;第二条是 SBOM 文件的签名信息;第三条是 SBOM 的哈希值。利用签名和哈希值,从完整性和来源可信两个维度保证 SBOM 的可信。

图片

上图是一个比较典型的容器镜像场景,也是 SBOM 目前的生态和整个工具集支撑的比较好的场景。目前社区主流的方案是: 首先通过 SBOM 的一些生成工具,比如 syft 工具生成容器镜像的 SBOM。cosign 是 Linux Fundation 在社区上支持的签名项目,然后利用cosign 对 SBOM 基于 in-toto 的 Attestation 格式生成 SBOM Attestation。通过这种方式可以把 SBOM 和容器镜像关联。最终下游用户可以通过工具对 SBOM 进行验证。图上我们对远程证明做验证,可以看到 SBOM 整个的制品签名信息。签名是一个非常好的验证来源可信的手段。供应链的整个生产流程还有非常多的点可以用签名做可信校验。

03  龙蜥统一签名服务

为什么在软件供应链 SBOM 场景下提到统一签名服务?它其实是推导后的结果。接下来介绍怎么演绎推导出需要的统一的签名服务?

图片

软件供应链 SBOM 有一个非常明显的特征,所有的数据来源、问题都是碎片化散落在整个软件供应链 SBOM 体系下面的,比如生产阶段、设计阶段、发布阶段。要解决软件供应链 SBOM 的可信问题,需要一个非常好的方法论指导,而龙蜥从攻击面管理的角度解决软件供应链 SBOM 复杂体系的可信问题

在安全问题的设计过程中,首先为软件供应链 SBOM 建立一个可信模型。为了全面覆盖软件供应链 SBOM 整个过程,把它分为大概三部分:

  • 源码阶段是编码 Code Review。

  • 构建阶段是编译、发布。

  • 部署阶段是发布、上线、运行。

除了以上三部分之外还会涉及到依赖,如构建依赖、编译依赖等,这是构建、发布时非常重要的 SBOM 概念。在此过程中,源码阶段会发现有一个攻击方式,比如有一些人编写的不安全代码,这是一种比较多的攻击方式。源码入侵的场景下,可以把源码仓库都破坏掉,对源码完整性形成了一个非常坏的结果。在构建阶段还有非常多的供应链投毒,把发布制品篡改成用于攻击的制品。

总结下来整个软件供应链 SBOM 有四种需要做安全保护:源码完整性、构建完整性、系统完整性、元数据的完整性。在此过程中,提到完整性大家会有一个非常直观的概念,就是完整性的保护可以通过签名解决。软件供应链 SBOM 绝大多数场景有完整性的需求,通过统一签名解决这样的问题。因此,龙蜥从软件供应链 SBOM 安全威胁模型,推导出了需要有统一的签名服务消解可信问题。

图片

当前签名技术比较成熟标准化,在 SBOM 的体系下有用签名。那当前的签名服务在Anolis OS 还有没有,有哪些需要解决的问题。从整个Anolis OS 的软件生命周期看,把它分为七个阶段,需求、设计、研发、构建、测试、发布、运行。需求阶段有一个很重要的问题,即所谓的需求完整性,例如产品需求方提的需求最后有没有完全被覆盖到,在软件供应链体系下它其实没有被覆盖的。签名依赖很多签名工具,比如构建系统、三方的工具等,龙蜥 OS 用的是 koji 的打包平台。底层用到的密管服务,阿里云的 KMS 或者本地的 PKI,从签名服务的复杂性来说有很多的对接。

我们对 Anolis OS 的场景做了一个总结,有些功能有但可能会承担安全风险,如 OS 的 rpm 包有一个非常严重的问题,有可能会本地落盘,所有的软件生命周期当中的签名都是分散,缺乏管控的。另外一个问题是标红的东西很多,不同的标准,不同的签名工具,不同的 KMS 都没有统一支持或集成,导致了整个软件供应链 SBOM 签名是碎片化的。

图片

针对以上问题,社区做了龙蜥统一签名服务的设计,龙蜥的统一签名服务特点是简单的、透明的、安全的、高度集成的。所谓的简单从用户的视角来看,希望统一签名服务是易用的,对用户来说非常简单,可以用各种方式把服务用起来。透明是后续把统一签名服务开源出去,来搭建它真正的安全性。另一个最重要的点是高度集成,签名服务是弹性的、可扩展,可以支持多种 KMS、服务、数据库等。

统一签名服务架构上可以东西向和南北向扩展。南北向的可扩展是后台支撑的服务有多种 KMS、数据库、三方服务可以借用。东西向的可扩展希望有多实例的能力,LB 或者 Gateway的方式能够提升服务的吞吐能力,还有一个最重要的是缺失的标准的 JWT 统一的权限管控。以上就是龙蜥统一签名服务的整体架构介绍。

精彩视频回放、课件获取:

2023 龙蜥操作系统大会直播回放及技术 PPT上线啦,欢迎点击下方链接观看~

回放链接:https://openanolis.cn/openanolisconference

技术 PPT :关注龙蜥公众号【OpenAnolis 龙蜥】,回复“龙蜥课件”获取。

—— 完 ——

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/433688.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

企业计算机服务器中了faust勒索病毒怎么解密,faust勒索病毒解密流程

网络在为企业提供便利的同时,也为企业的数据安全问题带来严重威胁,网络安全是众多企业关系的主要话题,近期,云天数据恢复中心接到一大波企业的求助,企业的计算机服务器都被faust后缀勒索病毒攻击,导致企业计…

Electron 多显示器渲染

Electron打出的包,如果当前有俩个显示器,则可以配置当前显示倒哪个显示器上,或者可以配置不同的显示器,启动不同的项目,只在Windows和Linux下测试过,Mac没有真机,可以利用docker安装MacOS环境&a…

Jmeter性能测试 -3数据驱动实战

什么是数据驱动? 从数据文件中读取测试数据,驱动测试过程的一种测试方法。数据驱动可以理解为更高级的参数化。 特点:测试数据与测试代码分离;数据控制过程 好处:降低开发和维护成本,减少代码量&#xf…

如何做代币分析:以 LDO 币为例

作者:lesleyfootprint.network 编译:mingfootprint.network 数据源:LDO 代币仪表板 (仅包括以太坊数据) 在加密货币和数字资产领域,代币分析起着至关重要的作用。代币分析指的是深入研究与代币相关的数据…

数字社交时代的引领者:Facebook的元宇宙探索

引言: 在当今数字社交时代,人们的社交方式正在经历着翻天覆地的变化。随着虚拟现实技术的不断发展和元宇宙概念的崛起,社交网络正朝着一个全新的未来迈进。作为全球最大的社交网络平台之一,Facebook正在积极探索元宇宙时代的社交…

理解npm run dev 和 npm run serve的区别

文章目录 1. 分析npm run2. dev与serve的区别 1. 分析npm run npm npm 是 Node.js 的包管理器,它允许你安装、更新、删除和管理 Node.js 的模块和应用程序。 run run 是 npm 的一个子命令,用于执行在 package.json 文件的 scripts 部分定义的脚本。 dev…

C++初阶篇----类与对象下卷

目录 1.再谈析构函数1.1构造函数体赋值1.2 初始化列表1.3 explicit关键字 2.Static成员2.1概念2.2 特性 3.友元3.1 概念3.2友元函数3.3 友元类 4.内部类4.1 概念 5.匿名对象5.1 概念 6.拷贝对象时的一些编译器优化7.再次理解封装 1.再谈析构函数 1.1构造函数体赋值 在对类的实…

ssm基于javaEE+springboot校园闲置二手物品拍卖交易平台_ngad7

为提升浏览用户观感及使用体验,本系统要具有易用性和美观性。通过页面的简单提示就可完成操作,校园闲置物品交易平台展示界面应该清楚简洁,使用户通过美观的前台页面能快速定位想要浏览的校园闲置物品交易平台信息。后台界面也应简约&#xf…

Ubuntu22.04系统 安装cAdvisor提示找不到 CPU 的挂载点错误解决办法。

如果我们在安装cAdvisor时容器启动不起来 查看日志如下图所示 1、查看cgroup文件系统是v2 还是 v1 mount | grep cgroup 如图所示我的是v2 , cAdvisor 目前的最新版本(v0.39.0)仍然只支持 cgroup v1,不支持 cgroup v2。因此&#…

CAN通信篇 - ComM模块配置(六)

文章目录 ComMConfigSetComMChannelComMUserPerChannelComMNetworkManagementComMPncComMGeneralComMGeneration总结ComM模块时通信控制模块。在ComM模块中存在三个概念:通道、用户、Pnc,但在本文我们暂时先不介绍Pnc相关功能需要的配置,仅关注基本CAN通信需要的配置。ComM模…

本机虚拟机centos7设置固定ip

一、配置虚拟机网络 1、点击编辑 2、点击更改设置 记住子网地址:192.168.121.0 点击确定 二、配置虚拟机网络配置文件 首先进去root中,然后进入vim编辑器中 (1)su - root (2) vim /etc/sysconfig/network-scripts/ifcfg-ens33 在VIM编辑器中修改并添加…

MATLAB环境下基于离散小波变换的体外血管图像处理

下面简要介绍小波变换的部分应用。 信号去噪。小波去噪是根据有效信号和噪声信号在小波变换后表现出的不同特性实现的,一般可用于去除语音、图像、视频等中的噪声信号。小波去噪方法根据对小波系数的非线性处理方式分为三类,分别是小波变换模极大值去噪…

【C++】string 类

1. 标准库中的string类 注意: 1. string是表示字符串的字符串类 2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。 比特就业课 3. string在底层实际是:basic_string模板类的别名,typedef b…

HBuilder X 关于404问题

大家好,我是晴天学长,本次分享来自昨天的bug调试,本分享感谢一位友友的支持,提供了样例图片。💪💪💪 1) .先项目再html文件 创建项目再创建html,实也不复杂,就是一个库的事情&#…

力扣经典题目解析--反转链表

原题地址: . - 力扣(LeetCode) 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 题目解析 链表(Linked List&…

【Java】关于ZooKeeper的原理以及一致性问题,协议和算法和ZooKeeper的理论知识和应用 场景

1. 目录 目录 1. 目录 2. 什么是ZooKeeper 3. 一致性问题 4. 一致性协议和算法 4.1. 2PC(两阶段提交) 4.2. 3PC(三阶段提交) 4.3. Paxos 算法 4.3.1. prepare 阶段 4.3.2. accept 阶段 4.3.3. paxos 算法的死循环…

3d怎么拖模型---模大狮模型网

在3D建模软件中拖动(移动)模型通常是一种基本的操作,用来调整模型的位置或布局。以下是一般情况下在3D建模软件中拖动模型的基本步骤: 3d拖模型的步骤: 选择模型:在3D建模软件中选中你要拖动的模型。通常可以通过单击模型来选中它…

Docker容器化解决方案

什么是Docker? Docker是一个构建在LXC之上,基于进程容器的轻量级VM解决方案,实现了一种应用程序级别的资源隔离及配额。Docker起源于PaaS提供商dotCloud 基于go语言开发,遵从Apache2.0开源协议。 Docker 自开源后受到广泛的关注和…

qnx display

05-SA8155 QNX Display框架及代码分析(1)_openwfd-CSDN博客 backlight p: 0 t: 0 00000 SHD -----ONLINE----- 2024/03/06 13:49:22.046 backlight p:1060958 t: 1 00000 ERR backlight_be[backlight_be.c:284]: pthread_create enter 2024/03/06 13…

时钟显示 html JavaScript

sf.html <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>时间</title><script>function showTime(){var timenew Date();var datetime.getDate();var yeartime.getFullYear();var monthtime.getMonth()1;var …