SLSA 框架与软件供应链安全防护
随着软件供应链攻击浪潮愈演愈烈,Google 发布了一系列指南来确保软件包的完整性,旨在防止影响软件供应链的未经授权的代码修改。新的 Google SLSA 框架(Supply-chain Levels for Software Artifacts 软件构件的供应链级别)通过识别 CI/CD 流水线中的问题并减小影响,为企业实现更安全的软件开发和部署流程提供建议。
Google 的 SLSA 框架
SLSA 是一个端到端框架,旨在确保软件开发和部署过程的安全性,专注于缓解由于篡改源代码、构建平台或构件仓库而产生的威胁。这些要求源于 Google 的 BAB (Binary Authorization for Borg),该授权已经使用了8年多,并且对于 Google 的所有生产工作负载都是强制性的。
SLSA 侧重于以下两个主要原则,即所有软件工件都应当:
非单边: 未经至少一个其他“受信任的人”的明确审查和批准,任何人都无法修改软件供应链中任何地方的软件工件。目的是预防或尽早发现风险。
可审计: 软件构件足够安全透明,来源与依赖项可溯源。主要目的是自动分析来源和依赖关系以及一些特定调查。
虽然无法做到万无一失,但这两个原则可以帮助企业有效避免和缓解各种篡改和其他供应链攻击带来的风险和影响。
CI/CD 流水线流程

软件供应链是创建和发布软件构件的一系列步骤。上图展示了源代码、构建、依赖项和包的流程关系。而每个源代码、构建和软件包都可以托管在一个平台上,例如源代码管理 (Source Code Management) 或持续集成/持续部署 (CI/CD)。

SLSA 框架下的4个安全级别
安全级别越高,实施的安全控制越强,攻击者越难破坏代码:
- SLSA 1: 要求构建过程完全脚本化/自动化并生成出处
- SLSA 2: 要求使用版本控制和托管生成服务来生成身份验证的出处
- SLSA 3: 要求源和构建平台符合特定标准,以保证源的可审计性和来源的完整性
- SLSA 4: 要求对所有更改进行两人审查,并采用封闭的、可重现的构建过程
将供应链保护提升到新的水平
Google 的 SLSA 框架是朝着提高认识和建立标准的正确方向迈出的一步,这些标准将帮助企业控制供应链风险。根据 CI/CD 流程(上图)和 SLSA 建议,我们可以将风险定义为以下三个阶段:
代码阶段风险:
提交恶意代码 – 将易受攻击的代码上传到公司的源代码管理系统,其中可能包含漏洞或受损的代码包。
攻陷源代码管理系统 – 源代码管理系统中的错误配置或漏洞,可能导致代码、机密和用户信息泄露和被盗。
使用恶意依赖项 - 可能允许未经授权访问管道或导致暴露/泄漏代码。
构建阶段风险:
使用恶意代码 – 注入错误代码,并在设定流水线流程之外,未经适当的审查和批准而出发的构建过程。
攻陷构建平台 – 利用漏洞或错误的配置来获得对构建服务器的访问权,并操纵构建过程及其输出。
已泄露的依赖项 – 利用已泄露或易受攻击的依赖项来获取访问权限或操作构建服务器。
分发阶段风险:
绕过 CI/CD – 将恶意构件上传到 Artifactory,绕过 CI/CD 流程,使客户暴露于恶意软件包内。
使用恶意包 – 改变系统流程,获得对构件的访问权,以便上传、替换或窃取构件。
保护软件供应链
保护软件开发等复杂和动态的过程免受供应链攻击,需要全面的安全解决策略,该策略需要考虑到在工具,源代码和流程,构建和分发阶段中面临的各种风险。正如 SLSA 指南所强调,实施强大的安全防护策略可强化流水线安全状况,使攻击者难以破坏基础架构、流程或代码。
在过去,我们看到了各类 DevOps 环境中的源代码泄漏,资产受损和漏洞,这是 CI/CD 流水线上薄弱的安全措施导致的直接结果。微软、Rapid7、Monday.com、Codecov、SolarWinds 等知名企业成为针对软件供应链攻击的受害者,在业内和社会引起高度关注。
随着恶意攻击者发现开发环境可以作为一种简单且高度可利用的攻击媒介,企业必须对其开发环境给予更严格的安全防护措施,来阻止恶意的软件供应链攻击。在 SLSA 框架下采用全面的安全策略,提供对 CI/CD 流水线的端到端可见性和控制,并将此作为流水线的一部分进行集成,来实现全方位安全保护。
参考链接:
Supply-chain Levels for Software Artifacts
SLSA 框架与软件供应链安全防护的更多相关文章
- Kubernetes 时代的安全软件供应链
点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 汤志敏 阿里云 ...
- CSO视角:Sigstore如何保障软件供应链安全?
本文作者 Chris Hughes,Aquia的联合创始人及CISO,拥有近20年的网络安全经验. SolarWinds 和 Log4j 等影响广泛的软件供应链攻击事件引起了业界对软件供应链安全的关注 ...
- 关于web软件信息安全问题防护资料的整理(二)
想要做好软件的安全防护,首先就得了解web系统的安全威胁,那么web系统都存在哪些威胁呢? 应用层攻击.网络层攻击和混合攻击. 传统被动.单点以及彼此孤立的防护手段已不能应对越来越严峻的安全威胁. 改 ...
- 基于 Docker 的现代软件供应链
[编者按]本文作者为 Marc Holmes,主要介绍一项关于现代软件供应链的调查结果.本文系国内 ITOM 管理平台 OneAPM 编译呈现,以下为正文. 3 月初,为了了解软件供应链的现状以及 D ...
- OpenSSF安全计划:SBOM将驱动软件供应链安全
在 软件成分分析(SCA)一文中,我们简单提到软件物料清单(SBOM)在安全实践中的价值. 本期文章将带你深入了解 "SBOM 无处不在"计划是什么,以及 SBOM 对未来软件供应 ...
- 云锁Linux服务器安全软件安装及防护webshell、CC、XSS跨站攻击设置
无论我们在使用电脑,还是使用VPS/服务器的时候,最为担心的就是服务器是否有安全问题,尤其是网站服务器再遭受攻击的时候如何得到防护.对于大 部分站长用户来说,我们可能只会使用基础的环境,如果真遇到问题 ...
- 一系列令人敬畏的.NET核心库,工具,框架和软件
内容 一般 框架,库和工具 API 应用框架 应用模板 身份验证和授权 Blockchain 博特 构建自动化 捆绑和缩小 高速缓存 CMS 代码分析和指标 压缩 编译器,管道工和语言 加密 数据库 ...
- 关于web软件信息安全问题防护资料的整理 (一)
之前意识到了安全问题的重要性,于是就在网上找了一下安全问题的解决办法(主要是web应用以及政府网站方面的),问了一下同学的公司是怎么保证安全的,跟我说用的是shiro安全机制这个貌似好多公司都在用,网 ...
- 关于web软件信息安全问题防护资料的整理(三)
了解了web系统的安全威胁,那么我们应该怎样防范这些安全威胁呢? 1.时刻准备应战 Web应用系统所面临的威胁是非常严峻的.不管攻击的一方是采用单一形式的攻击,还是采用混合多种手段的混合攻击,作为防护 ...
随机推荐
- netty系列之:netty中的核心解码器json
目录 简介 java中对json的支持 netty对json的解码 总结 简介 程序和程序之间的数据传输方式有很多,可以通过二进制协议来传输,比较流行的像是thrift协议或者google的proto ...
- Windows常用cmd命令总结
cmd是command的缩写,即命令提示符. 运行操作: 使用"Win+R"快捷键召唤出运行窗口,再在运行中输入cmd即可. 1.ping 用法: 常用举例: ping www.g ...
- 老生常谈系列之Aop--JDK动态代理的底层实现原理
老生常谈系列之Aop--JDK动态代理的底层实现原理 前言 在Aop系列里面有两篇文章,分别是老生常谈系列之Aop--Spring Aop原理浅析和老生常谈系列之Aop--Spring Aop源码解析 ...
- hashlib加密模块和logging模块,购物车项目
hashlib加密模块 简介 hashlib模块是一个提供了字符串加密功能的模块,包含MD5和SHA的加密算法.具体的加密支持有: MD5,sha1,sha224,sha256, sha384, sh ...
- 一个NIH综合症患者的自白
一个NIH综合症患者的自白 欢迎关注我的博客,️点他即可. NIH: Not Invented Here 当人们看到一款产品或者任何涉及创意的东西时,常常会有一个想法--这是抄的.也就是说它并非原创, ...
- 【低码】asp.net core 实体类可生产 CRUD 后台管理界面
前言介绍 喜欢小规模团队的"单打独斗",有的时候即使在大公司,也经常做着3-5个人团队的小项目,相信很多人有类似的经历. 本文介绍如何将项目中已存在的[实体类],直接生产出 CRUD 后台管理界面. ...
- 893. Groups of Special-Equivalent Strings - LeetCode
Question 893. Groups of Special-Equivalent Strings Solution 题目大意: AB两个字符串相等的条件是:A中偶数位出现的字符与B中偶数位出现的字 ...
- Android 12(S) 图像显示系统 - GraphicBuffer同步机制 - Fence
必读: Android 12(S) 图像显示系统 - 开篇 一.前言 前面的文章中讲解Android BufferQueue的机制时,有遇到过Fence,但没有具体讲解.这篇文章,就针对Fence这种 ...
- 魔改了一下bootstrap-treeview组件,发布个NPM包体验一下
前言 之前在这篇文章 基于.NetCore开发博客项目 StarBlog - (8) 分类层级结构展示 中说到,我为了让文章分类列表支持层级结构,用了一个树形组件,不过这个组件太老了,使用的Boots ...
- Kubernetes client-go DeltaFIFO 源码分析
概述Queue 接口DeltaFIFO元素增删改 - queueActionLocked()Pop()Replace() 概述 源码版本信息 Project: kubernetes Branch: m ...