安全混沌工程(SCE):通过主动的实验来识别安全控制上的故障,以建立对系统能力的信心,以抵御生产中的恶意场景 。

前言

PrivacyRights非营利组织是一家追踪数据泄露的机构,据该机构称,安全事件发生的频率和受影响的用户数量正在呈指数级增长。

一直以来,我们处理安全的方式和系统构建的方式存在着冲突。组织往往受制于时间、资金和人手的限制,无法提供充足的资源来维持安全现状,错误配置以及不当的技术控制,是导致一系列安全事件的因素。

在向复杂分布式系统迈进的过程中,这威胁到了安全能力的协同发展,因此必须从不同的角度来思考信息安全问题。

我们现在面临这个囧境,即无法预测自己设计的系统行为。现在,云计算、微服务和持续交付等变革性技术,都给用户价值方面带来了新的进步,但反过来也带来了一系列新的未来挑战。

这些挑战中最主要的是我们无法理解我们自己的系统。如果我们对系统行为了解不多,那么如何能够给系统带来良好的安全性呢?

答案是通过有计划的、经验指导的实验,将混沌工程学应用于安全领域。我们称之为安全混沌工程(SCE) 。

一、红紫队演习的问题

SCE填补了当代安全方法中的许多空白,如红紫队演习等。红紫队演习或其他安全测试方法仍然很有价值,但是面临上述提到的囧境,一切都不同了。

与单独实施相比,与SCE的结合提供了更客观、更主动的反馈机制,为系统应对不良事件做好准备。

红队起源于美国武装部队,可描述为一种“对抗的方法,以最真实的方式模仿攻击者的行为和技术”。

企业中常见的红队有两种形式,分别是白客攻击和渗透测试。在这些演习中,蓝队是红队的防守队伍。

紫队是红队演习的一种进化,“紫”字反映了红蓝组队的混合。
这些演习的目标是进攻和防守战术的协作,以提高双方演习的有效性。这样做的目的是增加透明度,并为安全机构提供一个渠道,使其了解其准备工作是否有效。

1.1 红队的问题

红队的问题包括以下几点:

1)这些结果报告如果完全共享,则很少建议可采取的后续行动,也没有向工程团队提供建议,如何调整改变优先级。

2)主要关注恶意攻击者和不当利用,而不是更常见的系统漏洞。

3)红队因击败对方蓝队而不是形成共识而受到激励:

  • 红队的成功常常看起来像一个巨大的、可怕的报告,表明存在很大且脆弱的攻击面。
  • 蓝队的成功通常看起来像是发出了正确的警报,表明预防控制措施全部起效。

4)对于蓝队来说,许多警报可能被误解为探测能力正在有效运行,而实际上情况可能比这要复杂得多。

1.2 紫队的问题

紫队的问题包括以下几点:

1)进行紫队练习需要大量资源,这意味着:

  • 仅解决了业务组合中一小部分应用程序的问题。
  • 练习不经常进行,通常每年或每月进行一次。

2)生成的人工制品缺乏一种机制,以重新应用过去的发现,实现回归分析的目的。

二、SCE带来的好处

SCE解决了这些问题,并提供了一些好处,包括:

  • SCE对系统有更全面的关注。主要的目标不是欺骗其他人员或测试警报;相反,这是为了主动识别由复杂分布式系统所引起的系统安全故障,并建立信心。
  • SCE利用简单的隔离和受控实验,而不是复杂的攻击链。当同时进行大量更改时,很难控制爆炸半径,也难以将信号与噪声区分开。SCE大大降低了噪声。
  • SCE提供了一种协作式学习体验,其重点是构建更具韧性的系统,而不是对事件做出反应。

SCE不一定与红队或紫队的发现或意图竞争。然而,SCE确实增加了一层有效性、透明度和可重复性,可以显著提高这些实践的价值。

红队和紫队的练习,根本无法跟上CI/CD和复杂分布式环境的步伐。现在,软件工程团队在24小时内会交付多个产品更新。在红队或紫队练习中获得的结果,其相关性很快就会降低,因为在此期间系统可能已经发生了根本的变化。

三、SCE的实际案例: ChaoSlingr

ChaoSlingr是由联合健康集团(UHG)的亚伦·里纳特领导创建的安全混沌实验和报告框架。

image.png

这是第一个与之相关的开源软件,展示了混沌工程应用于网络安全的价值。以开放源码的形式设计、引入和发布,目的是提供一个用于编写安全混沌工程实验的简化框架。

联合健康集团(UHG)的一项实验,涉及错误配置端口。该实验的假设是防火墙应该检测并阻止错误配置的端口,并且应为安全团队记录该事件。

有一半的时间,防火墙做到了;另一半时间,防火墙无法检测到并阻止它。虽然商用的云配置工具始终可以捕获并阻止它。不幸的是,该工具没有对其进行记录,安全团队无法确定事件发生的位置。

想象一下,你在那个团队中,这个发现会动摇你对安全的基本认识。ChaoSlingr的力量在于,实验证明了你的假设是否正确,不需猜测。

image.png

该框架由四项主要功能组成:

  • Generatr: 标识要注入故障的对象并调用Slingr。
  • Slingr: 注入故障。
  • Trackr: 记录实验发生时的详细信息。
  • 实验描述: 提供实验文档,以及Lambda函数的输入和输出参数。

ChaoSlingr最初设计用于亚马逊AWS服务。通过一系列实验,主动引入已知的安全故障条件,以确定如何有效地实现安全。这一努力提高了公司快速交付高质量产品和服务的能力,同时尽可能保持最高级别的安全和保障。

现在我们构建的分布式关键系统变得如此复杂,以至于没有谁能够说明其整个运行本质。即使分布式系统中的所有单个服务都正常运行,这些服务之间的交互也会导致不可预测的结果。

不可预测的结果,加上影响生产环境的特殊性,具有破坏性的现实事件激发了这些分布式系统固有的混乱。

开发ChaoSlingr的目的是在影响生产客户之前,主动发现和解决重大漏洞。

ChaoSlingr 的功能包括:

  • 开放源码
  • 红色大按钮:自动关闭ChaoSlingr
  • 可配置的时间范围和实验运行频率
  • 用Python编写
  • 作为Lambda函数运行
  • 以Terraform脚本编写自动配置

ChaoSlingr展示了如何构建和执行混沌工程实验,以及在分布式系统中能提供的价值。大多数使用ChaoSlingr的组织都克隆了该项目的代码仓库,并使用该项目提供的框架作为指导,构建了自己的安全混沌工程系列实验。

结束语

随着企业采用云原生技术栈和DevOps模型,其安全流程必须不断发展以满足新的需求,例如通过持续部署加速系统变更的频率。传统的安全测试方法虽然仍有价值,但不足以应对这些新挑战。

对待安全问题的观念也必须改变。“系统故障”是复杂系统的正常运行状态。在安全性方面,关注“人为错误”、“根本原因”或复杂的攻击者,并不能让你更好地了解基本的安全态势,只有通过持续可测量的反馈环。而SCE创建了这些反馈环,并暴露了“未知的未知”,从而限制了系统的攻击面。

ChaoSlingr工具证明了混沌工程可以应用于网络安全。

联合健康集团(UHG)使用ChaoSlingr的经验证明了这种方法的价值。当应用于安全中时,混沌工程能够揭示有关安全控制如何运作的客观信息,允许组织更有效地投入安全预算。

来源:混沌工程实践
作者:刘美宁
声明:文章获得作者授权在IDCF社区公众号(devopshub)转发。优质内容共享给思否平台的技术同伴,如原作者有其他考虑请联系小编删除,致谢。

IDCF DevOps黑客马拉松,独创端到端DevOps体验,精益创业+敏捷开发+DevOps流水线的完美结合,2021年仅有的3场公开课,数千人参与并一致五星推荐的金牌训练营,追求卓越的你一定不能错过!关注公众号回复“黑马”即可报名

北京:7月24-25日
上海:9月11-12日
深圳:11月20-21日


用户bPcN1SC
149 声望55 粉丝