我们从 CircleCI 安全事件获得的3个经验教训
CircleCI 作为业内最受欢迎的 CI/CD 平台提供商之一,有超过20万个 DevOps 团队使用其平台。该公司在今年1月在其官网报告了一起安全事件引起客户恐慌。在此事件中,有身份不明的恶意攻击者入侵了一名员工的笔记本电脑,利用恶意软件窃取了员工的 2FA 支持的单点登陆会话 cookie,使其能够在远程位置冒充目标员工,然后升级对生产系统子集的访问权限。具体事件描述见参考 CircleCI 官网公告。
在此次安全事件中,攻击者利用技术绕过了双因素身份验证防御,这让 DevOps 团队意识到易受攻击的开发人员账户所带来的风险,同样这也是整个行业需要警惕的教训。接下来我们将会一起谈谈在此次攻击事件中我们能够获取的经验与教训。
警惕所有恶意软件
由于开发人员工作站上运行的恶意防护软件(anti-malware software)未能标记恶意代码,因此给了攻击者可乘之机,从而让攻击者获得了攻击目标关键资产的访问权(在此事件中则是会话 cookie 的访问)。在日益复杂的软件供应链攻击的背景下,恶意防护软件并未能有效阻止恶意攻击,似乎成了事后想到的补救办法。企业应当警惕所有恶意软件,并做好安全防护。同样值得注意的是在过往的攻击事件中,我们发现几乎所有的攻击都是从攻击目标的一个端点开始的。这也提醒所有企业应当重视端点保护,同时敦促开发组织尽快加强恶意软件检测和端点保护能力,在防病毒和移动开发管理工具中检测恶意软件,以及此类恶意软件表现出的恶意行为。
使用最小权限
在此次 CircleCI 安全事件中我们发现实施用户最小权限的重要性和必要性。攻击者利用恶意获取的开发人员的特权访问泄露 CircleCI 数据库和存储中的数据,包括客户环境变量、令牌和密钥。因此,DevOps 组织应当投入更多时间、精力以及技术来加强开发人员账户和开发环境,以应对潜在的安全风险。
建议 DevOps 组织使用最小权限框架来加强开发人员权限管理和控制。对于需要生产环境访问权限的人增加额外的升级身份验证步骤和控制,以此来限制和阻止恶意攻击者使用被盗会话令牌的能力。这样, 就能够有效地抑制攻击者在攻击目标组织内横向移动。
高度重视软件供应链风险
软件供应链风险不仅仅与代码相关,还与实际创建工件相关技术和工具紧密联系,这也是在此次 CircleCI 安全事件中最主要的经验教训。在评估软件供应链风险时,企业往往将重点放在工件在流程中的移动,却忽视了潜伏在构成流程本身的工具中的安全风险。如果所有安全测试(如 SCA、SAST、PenTest 等)都仅在工件上完成,而忽略了集成开发环境和 CI/CD 流水线,那么该组织将极有可能存在软件供应链风险。
因此,企业的 DevOps 团队需要高度重视上游软件供应链安全风险,企业需要将软件供应链风险分析的范围从软件工件拓展到开发流水线中的工具及平台。同时企业的安全团队需要高度重视 CI/CD 流程或 DevOps 流程工具的安全性,包括这些流程和工具可能受到何种损害或攻击,以及如何保护它们免受此类事件的影响。
我们从 CircleCI 安全事件获得的3个经验教训的更多相关文章
- 构建 Android 应用程序一定要绕过的 30 个坑
原文地址:Building Android Apps - 30 things that experience made me learn the hard way 原文作者:César Ferreir ...
- Python资源汇总
Python 目录: 管理面板 算法和设计模式 反垃圾邮件 资产管理 音频 验证 构建工具 缓存 ChatOps工具 CMS 代码分析和Linter 命令行工具 兼容性 计算机视觉 并发和并行性 组态 ...
- 华为专家谈CMDB建设
CMDB成功的关键因素 对于CMDB项目的失败,普遍的解释是:没有数据的消费场景.工具和技术不行.流程管控不足. 从我自身的实践来看,我对此是有不同看法的.上述原因的确会影响人们使用CMDB,严重时甚 ...
- 创建Android Apps的30个经验教训
这个世界上有两种人-从经验教训中学习的人以及听从别人建议的人.这里是我一路走来学到的一些东西,分享给大家: 在添加任何第三方party之前,请三思:这真的是一个成熟的项目吗? 如果一个东西用户看不到, ...
- 转载----我与CMDB不得不说的故事
每次读到配置管理相关的书籍时,我总在想:“这些定义很精准,流程也很完整,但这不是真正的难题.”对于一个配置管理者来说,真正的难题不是绘制“庞大而精美”的数据模型,不是设计“全天候.无死角”的管控流程, ...
- Life is short.,You need Python
真棒Python https://awesome-python.com/ 精选的Python框架,库,软件和资源的精选列表. 灵感来自awesome-php. 真棒Python 管理员面板 算法和设 ...
- GBT22239-2019等保2.0三级要求
1 第三级安全要求 1.1 安全通用要求 1.1.1 安全物理环境 1.1.1.1 物理位置选择 本项要求包括: a) 机房场地应选择在具有防震.防风和防雨等能力的建筑内: b) 机房场地应避免设在建 ...
- GBT22239-2008-等保1.0三级要求
第三级基本要求 7.1 技术要求 7.1.1 物理安全 7.1.1.1 物理位置的选择(G3) 本项要求包括: a) 机房和办公场地应选择在具有防震.防风和防雨等能力的建筑内: b) 机房场地 ...
- 解读2015年互联网UGC内容发展态势,安全事件频发
<2015内容安全年报> 阿里移动安全 第一章 2015年内容安全形势 随着互联网业务的迅速发展,互联网上的信息内容带来了爆炸式的增长.由于缺乏对网络活动进行有效监督和管理的措施,致使互联 ...
- Linux安全事件应急响应排查方法总结
Linux安全事件应急响应排查方法总结 Linux是服务器操作系统中最常用的操作系统,因为其拥有高性能.高扩展性.高安全性,受到了越来越多的运维人员追捧.但是针对Linux服务器操作系统的安全事件也非 ...
随机推荐
- 从小白到架构师(4): Feed 流系统实战
「从小白到架构师」系列努力以浅显易懂.图文并茂的方式向各位读者朋友介绍 WEB 服务端从单体架构到今天的大型分布式系统.微服务架构的演进历程.读了三篇万字长文之后各位想必已经累了(主要是我写累了), ...
- leetcode学习记录2.13
[13] 罗马数字转整数 import java.util.HashMap; import java.util.Map; /* * * [13] 罗马数字转整数 * * https://leetcod ...
- DHorse系列文章之镜像制作
DHorse系列文章之镜像制作 制作镜像常用的工具 使用Docker制作镜像 1.使用docker commit制作 该命令使用比较简单,可以自行网上搜索教程. 2.使用Dockerfile制作 这种 ...
- 我的Vue之旅 11 Vuex 实现购物车
Vue CartView.vue script 数组的filter函数需要return显式返回布尔值,该方法得到一个新数组. 使用Vuex store的modules方式,注意读取状态的方式 this ...
- Clickhouse表引擎之MergeTree
1.概述 在Clickhouse中有多种表引擎,不同的表引擎拥有不同的功能,它直接决定了数据如何读写.是否能够并发读写.是否支持索引.数据是否可备份等等.本篇博客笔者将为大家介绍Clickhouse中 ...
- 【Shell案例】【awk匹配、grep查找文件内的字符串】6、去掉空行(删除空行)
描述写一个 bash脚本以去掉一个文本文件 nowcoder.txt中的空行示例:假设 nowcoder.txt 内容如下:abc 567 aaabbb ccc 你的脚本应当输出:abc567aaab ...
- 【每日一题】【遍历orSet】2022年2月1日-NC66 两个链表的第一个公共结点
描述输入两个无环的单向链表,找出它们的第一个公共结点,如果没有公共节点则返回空.(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的) 输入描述:输入分为是3段,第 ...
- USB转TTL串口 (CH340 G)
为什么USB要转TTL串口[1]? 单片机串口基本采用TTL电平. 家用电脑很少有串口,但是有USB接口 USB的电平与TTL电平不兼容. 所以需要将USB电平转化为TTL电平. USB是什么? 接口 ...
- Kubernetes监控手册-01体系概述
Kubernetes 监控体系驳杂,涉及到的内容非常多,总是感觉摸不到头绪,网上虽然有很多资料,都略显凌乱,没有一个体系化的讲解,今天开始,我们准备撰写一系列文章,把 Kubernetes 监控说透, ...
- JavaScript:对象:如何创建对象?
JS是面向对象的语言,除开基础数据类型,其他所有的数据类型都是对象,包括函数. 如何去理解对象,什么是对象呢? 举个例子,比如我们将日常生活中见到的猫这种动物,抽象成一个类Cat,这里不去谈类是什么概 ...