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

字节探险家说
• 阅读 179

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

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

01 软件物料清单(SBOM)

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

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

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

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

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

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

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

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

02 可信 SBOM

简单、透明、安全、高度集成!龙蜥可信 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 能力探索与实践

目前开源社区在可信 SBOM 上的实践:上图是 Redhat 的 sbom 仓库。Redhat 在官方制品的仓库已经发布了一个 beta 版本的、基于 spdx 的 sbom 数据。可以看到每个制品的 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 建立一个可信模型。为了全面覆盖软件供应链 SBOM 整个过程,把它分为大概三部分:

  • 源码阶段是编码 Code Review。
  • 构建阶段是编译、发布。
  • 部署阶段是发布、上线、运行。

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

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

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

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

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

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

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

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

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

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

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

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

—— 完 ——

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Wesley13 Wesley13
3年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
天翼云供应链API安全治理实践获“优秀治理实践奖”
近日,由工业和信息化部网络安全管理局指导,中国信息通信研究院主办的首届信息通信软件供应链安全社区成员大会顺利召开。大会以“强化软件供应链安全治理助力信息通信业健康发展”为主题,旨在探索软件供应链安全治理模式,从根源上防范风险,促使安全治理工作得到真正落实并收获成效。大会现场公布了4类优秀成果评选结果,天翼云基于边缘云WAF实现API安全管理实践成果获评“优
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
安全可信 | 通过多项评估认证!天翼云与业界伙伴共谋云上安全发展!
近日,由全球数字经济大会组委会主办,中国信息通信研究院(以下简称中国信通院)与中国通信标准化协会联合承办的2024全球数字经济大会云和软件安全论坛暨第二届SecGo云和软件安全大会在北京召开。本届论坛聚焦云和软件安全最新发展趋势,以“链接云端,可信而安”为主题,为产业界提供丰富多样的信息交流平台,通过云安全、零信任、安全大模型、软件供应链治理等议题全面展示中国信通院在创新安全领域的研究探索与实践。
字节探险家说
字节探险家说
Lv1
小楼一夜听春雨,深巷明朝卖杏花。
文章
10
粉丝
0
获赞
0