随着软件供应链攻击浪潮愈演愈烈,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

https://github.com/slsa-framework/slsa

SLSA 框架与软件供应链安全防护的更多相关文章

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

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

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

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

  3. 关于web软件信息安全问题防护资料的整理(二)

    想要做好软件的安全防护,首先就得了解web系统的安全威胁,那么web系统都存在哪些威胁呢? 应用层攻击.网络层攻击和混合攻击. 传统被动.单点以及彼此孤立的防护手段已不能应对越来越严峻的安全威胁. 改 ...

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

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

  5. OpenSSF安全计划:SBOM将驱动软件供应链安全

    在 软件成分分析(SCA)一文中,我们简单提到软件物料清单(SBOM)在安全实践中的价值. 本期文章将带你深入了解 "SBOM 无处不在"计划是什么,以及 SBOM 对未来软件供应 ...

  6. 云锁Linux服务器安全软件安装及防护webshell、CC、XSS跨站攻击设置

    无论我们在使用电脑,还是使用VPS/服务器的时候,最为担心的就是服务器是否有安全问题,尤其是网站服务器再遭受攻击的时候如何得到防护.对于大 部分站长用户来说,我们可能只会使用基础的环境,如果真遇到问题 ...

  7. 一系列令人敬畏的.NET核心库,工具,框架和软件

    内容 一般 框架,库和工具 API 应用框架 应用模板 身份验证和授权 Blockchain 博特 构建自动化 捆绑和缩小 高速缓存 CMS 代码分析和指标 压缩 编译器,管道工和语言 加密 数据库 ...

  8. 关于web软件信息安全问题防护资料的整理 (一)

    之前意识到了安全问题的重要性,于是就在网上找了一下安全问题的解决办法(主要是web应用以及政府网站方面的),问了一下同学的公司是怎么保证安全的,跟我说用的是shiro安全机制这个貌似好多公司都在用,网 ...

  9. 关于web软件信息安全问题防护资料的整理(三)

    了解了web系统的安全威胁,那么我们应该怎样防范这些安全威胁呢? 1.时刻准备应战 Web应用系统所面临的威胁是非常严峻的.不管攻击的一方是采用单一形式的攻击,还是采用混合多种手段的混合攻击,作为防护 ...

随机推荐

  1. 【论文笔记】A Survey on Federated Learning: The Journey From Centralized to Distributed On-Site Learning and Beyond(综述)

    A Survey on Federated Learning: The Journey From Centralized to Distributed On-Site Learning and Bey ...

  2. 攻防世界-MISC:hit-the-core

    这是攻防世界MISC高手进阶区的题目,题目如下: 点击下载附件一,解压后得到一个后缀为.core的文件,用string分离一下,得到如下结果: 通过观察发现,每隔四个小写字母就可以看到一个大写字母,刚 ...

  3. 数据结构_C语言_二叉树先序、中序、后序遍历

    # include <stdio.h> # include <stdlib.h> typedef struct BiTreeNode { char data; struct B ...

  4. 掌握AI学习路上核心理论知识,你绝对不能错过这份最全资料包

    人工智能成为当下科技发展的代表之一,持续受到了不少追捧,不管你是否是这一专业的学生或者职场人,学习并掌握一项新潮技能总是不会被同龄人淘汰的.我曾经问过别人.也被别人问过关于学习人工智能(AI)最好的方 ...

  5. 干货 | Nginx负载均衡原理及配置实例

    一个执着于技术的公众号 Nginx系列导读 给小白的 Nginx 10分钟入门指南 Nginx编译安装及常用命令 完全卸载nginx的详细步骤 Nginx 配置文件详解 理解正向代理与反向代理的区别 ...

  6. SSH 证书登录教程

    开源Linux 专注分享开源技术知识 SSH 是服务器登录工具,提供密码登录和密钥登录. 但是,SSH 还有第三种登录方法,那就是证书登录.很多情况下,它是更合理.更安全的登录方法,本文就介绍这种登录 ...

  7. Resource wordnet not found. Please use the NLTK Downloader to obtain the resource:

    第一次使用nltk的时候,出现了这样的错误: from nltk.stem.wordnet import WordNetLemmatizer lemmatizer = WordNetLemmatize ...

  8. FinClip 前端之 VUE 核心原理总结

    小程序框架有很多,都是支持前端JavaScript语言的,也是支持 vue.js 框架的.FinClip 小程序是兼容各家平台的.所以在学习了框架使用之后的进阶就要熟悉框架的底层原理. 1.数据响应式 ...

  9. 877. Stone Game - LeetCode

    Question 877. Stone Game Solution 题目大意: 说有偶数个数字,alex和lee两个人比赛,每次轮流从第一个数字或最后一个数字中拿走一个(偶数个数字,所以他俩拿的数字个 ...

  10. MySQL执行计划explain

    一.简介 分析查询慢的原因,在查询语句前加explain即可.如: 二.输出格式 2.0 测试数据 # 表user_info CREATE TABLE `user_info` ( `id` bigin ...