博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
idea中出现紫色_紫色测试和安全性实验中的混乱工程
阅读量:2530 次
发布时间:2019-05-11

本文共 4871 字,大约阅读时间需要 16 分钟。

idea中出现紫色

我们使用技术构建产品和服务的方式正在不断发展,其发展速度难以理解。 遗憾的是,用于确保设计方法安全的主要方法是预防性的,这意味着我们正在无状态的世界中设计有状态的安全性。 我们设计,实施和仪器安全性的方式与现代产品工程技术(例如连续交付和复杂的分布式系统)并不一致。 我们通常为生产版本的第零天设计安全控件,而未能将控件的状态从第一天发展到第二天( N )。

此问题也源于现代基于软件的体系结构和安全控件之间缺乏反馈循环。 迭代的构建实践不断推动产品更新,创建不可变的环境并应用复杂的蓝绿色部署以及对日新月异的第三方微服务的依赖。 结果,现代产品和服务每天都在变化,即使安全隐患不断。

安全性应该是客观且经过严格测试的,数据和度量驱动我们对企业安全性的决策。 复杂的分布式系统,连续交付和高级交付模型(例如蓝/绿部署)的时代挑战着传统的测试方法是否足够。 尽管测试可能是系统检测的有用反馈机制,但仅凭测试本身是不够的; 我们也应该尝试。

我们如何假设系统正在运行以及
实际运行情况

安全工程领域的安全实验从根本上是通过混沌工程的应用而实现的。 混沌工程学是在分布式系统上进行实验的学科,目的是建立对系统抵御生产中动荡环境能力的信心。

混乱工程中的一句俗语是“希望不是战略。” 当我开始使用将混乱应用于安全性的 ,我开始对故障的作用有所不同,无论是在构建系统的方式还是在尝试保护故障的方式上。 我们通常如何识别企业内部安全控制的失败? 我们通常不认识到某些东西无法正常工作,直到不再起作用为止,而对于安全事件,这通常是正确的。 安全事件不是有效的检测手段,因为那时已经为时已晚。 如果我们希望主动检测安全故障,就必须找到更好的检测和监视方式。

Red fish, blue fish, purple fish, chaos fish

图片提供者:Aaron Rinehart

尽管它可能使您想起Suess博士的经典儿童读物安全测试所涉及的不只是充满紫色,蓝色和红色团队练习的蜡笔盒。 相反,它是一门广泛的学科,由重要技术组成,例如道德黑客,威胁搜寻,漏洞扫描等。 在本文中,我们将讨论总体上客观安全工具的重要性,当前安全测试方法(例如红色和紫色团队练习)中的差距以及安全实验的出现如何能够帮助弥补这些差距。

我们的目的不是要贬低红色和紫色练习或其他安全测试方法的价值,而是要扩大这种测试的重要性并阐明一种新兴技术。

多年来, 起源于武装部队,有着许多不同的定义,但如今可以描述为一种对抗性方法,它以最现实的方式模拟攻击者的行为和技术,以测试安全程序的有效性。 在企业安全测试中看到的红色团队的两种常见形式是道德黑客和渗透测试,这通常涉及内部和外部参与。

历史问题:红色与蓝色团队测试

  • 红色团队练习中的反馈循环通常由扔在墙上的报告组成,如果它们完全共享的话
  • 练习主要针对恶意攻击者,漏洞利用和复杂的主观事件
  • 红色团队演习强调补救漏洞,而不是预防和发现
  • 团队通过胜过对方的能力而受到激励
  • 红色团队通常至少部分由外包团队组成
  • 红队和蓝队的激励机制不一致
    • 红色团队的成功通常会导致(令人恐惧的大报告=工作做得很好),而蓝色团队的成功通常会导致(没有警报=预防性控制都奏效!)
    • 成功取决于团队可以绕过多少控制(蓝色团队失败点)
    • 对于蓝队,许多警报可能会被误解,这意味着检测功能正在有效运行

通过增加透明度,教育程度和更好的反馈循环,试图在进攻性和防御性安全技术之间创建更紧密的测试体验。 通过将蓝队的防御策略和控制与红队发现的威胁和脆弱性整合到一个叙述中,目标是最大程度地发挥各自的作用。

现代产品工程中红队(RT)和紫队(PT)练习的问题

  • PT练习也存在红色分组的许多问题
  • 通常只在最高比例的应用程序组合上执行
  • 演习通常每年或每月一次,或者最好每周一次,例如,“ Red Team Mondays”,即使对于成熟的企业,这也会占用大量资源
  • RT和PT练习主要关注恶意或对抗性攻击,通常会取得一定的成功。 在我的整个职业生涯中,我很少看到其中一项练习以失败的尝试而告终。
  • RT和PT练习主要将恶意活动作为根本原因,尽管对人为因素的趋势正在增长
  • 尽管提供了客观的安全测试方法,但RT和PT练习却很难衡量,因为存在系统更改,攻击,利用尝试,扫描等次数。 垃圾回收=垃圾回收成为环境中发生许多更改的一个问题。 在红色团队活动期间,很难衡量这些活动的级联效应和相关的安全计划有效性
  • RT和PT练习无法跟上持续交付和分布式计算环境的步伐。 当今的产品软件工程团队可以在24小时内提供多个产品更新,这超过了进行有效的红色团队练习所需的时间。 由于系统可能已发生根本性的变化,因此在练习中获得的结果的相关性可能会降低。
  • RT和PT技术缺乏足够的自动化功能来增强现代设计模式的变化。 流程自动化使任何信息安全策略都具有重要价值。 但是,自动化也会使安全人员陷入错误的安全感。 自动化程度的提高会导致自满和难以管理的复杂性,从而更难以看到“全局”。
  • RT和PT练习缺乏对过去发现的持续评估以识别破损

万恶之源:反思过去

在我们深入研究混沌工程及其演变成安全性试验之前,请考虑一个简单的问题:“数据泄露通常来自何处?”

ponemon_study_-_causes_of_data_breach.png

数据泄露的根本原因( Ponemon Institute,数据泄露成本研究,2017年

上图来自研究,该表明,恶意或犯罪攻击占2017年数据泄露的47%。这是网络安全行业最常见的关注领域,其中包括高级持续威胁,零日攻击,网络钓鱼活动,民族国家攻击,恶意软件变体等。

图表的其他两个部分由人为错误(28%)和系统故障(25%)组成,合起来占2017年数据泄露的53%。 解决方案和网络安全的通用定义在很大程度上只关注整个问题的47%:恶意或对抗性攻击。 大多数人发现恶意和犯罪活动比人类和机器所犯的错误更有趣。

人为错误和系统故障是造成数据泄露的主要原因。 这不是新趋势。 它已经进行了大约八年。 除非我们开始改变想法,否则它不可能改变。 为什么尽管在安全解决方案上花了更多钱,我们似乎还是无法每年减少安全事件和破坏的次数? 您可能会争辩说,如果网络安全行业更加关注人为因素和系统故障,那么许多恶意活动将失败。 例如,如果安全控制范围内没有配置错误或安全技术解决方案失败,那么就不可能进行许多恶意或犯罪攻击。 但是,由于缺乏关于恶意攻击与人为因素或系统故障(作为根本原因)之间关系的可靠信息,因此很难证明这一观点。

失败:销毁武器还是建造工具?

False Hawaii missile alert

图片来自

人为错误和系统故障的核心是了解故障在我们构建,操作和改进系统中的作用。 实际上,失败也是人类生活的重要组成部分,因为失败是我们学习和成长的方式。 如果“犯错是人类的”,那么认为我们构建系统的方式是完美的也是天真的。

失败发生

在2018年1月13日上午8:07,通过紧急警报系统和商业移动警报系统在夏威夷州的电视,广播和手机上发布了 ,警告即将到来的弹道导弹威胁并向居民提供建议寻求庇护。 警报的结论是:“这不是演习。” 但是,国家没有授权或响起民防户外警报器。

混沌工程植根于始终存在故障的概念,而我们对此的选择是我们的选择。 在Netflix的推动下,混沌工程学是一门新兴学科,旨在以可控的方式有意识地主动触发故障,以使人们确信系统将以我们期望的方式响应故障。 回顾“希望不是策略”,仅希望系统运行正常并且不可能失败就不是有效或负责任的策略。

安全与混乱工程相结合

在将混沌工程学应用于网络安全时,重点一直放在确定人为因素和系统故障如何直接影响我们构建和保护的系统的安全性之间的关系。 如前所述,在信息安全领域,我们通常仅在触发安全事件后才了解安全或系统故障。 事件响应阶段为时已晚。 我们必须更加主动地确定我们的安全功能及其所保护系统的故障。

混沌工程超越了传统的故障测试,因为它不仅涉及验证假设。 它还有助于我们探索可能发生的许多不可预测的事情,并发现我们固有的混沌系统的新特性。 混沌工程通过一系列受控实验来测试系统应对现实事件(例如服务器故障,防火墙规则配置错误,消息格式错误,关键服务降级等)的能力。 简而言之,一个混乱的实验(或就此而言,一个安全性实验)必须遵循四个步骤:

  1. 根据可测量的输出识别并定义系统的正常行为
  2. 提出关于正常稳态的假设
  3. 根据您的假设制定实验并将其暴露于现实世界中的事件
  4. 通过比较稳态和实验结果来彻底检验假设

备份始终有效

备份始终有效; 这是您必须担心的还原。 灾难恢复和备份/还原测试是一个典型的例子,说明如果执行的频率不够高,影响可能是灾难性的。 其余的安全控制也是如此。 不要等到发现某件事不起作用了;不要等待。 相反,您必须主动将故障引入系统,以确保安全性与您认为的一样有效。

开始进行安全性实验和混乱工程的一种常见方法是了解游戏日练习的作用,它是用于计划,构建,协作,执行和进行验尸的主要渠道。 游戏日练习通常需要2到4个小时,并且需要一组工程师来开发,操作,监视和/或保护应用程序。 理想情况下,他们需要成员从这些领域的组合中进行协作。

安全和混乱实验的例子

我们无法告诉您由于错误配置的防火墙规则更改而导致主要系统中断的频率。 我们愿意打赌,这对于许多其他人也是常见的情况。

实践使完美

目的是将故障引入受控的安全性实验中(通常是在游戏日练习期间),以确定您的工具,技术和流程如何有效地检测到故障,哪些工具提供了导致检测到故障的见解和数据,以及数据的有用性是确定问题,最终确定系统是否按您预期的方式运行。

那些朝着混乱的工程道路前进的人最常见的回答是:“哇,我没想到会这样!” 或“我不知道它能那样工作。”

混沌工程学和安全性实验都需要对它们的原理和基本原理有扎实的理解,并且需要专注于建立该学科的成熟度。 作为一个恰当的例子,如果没有先在较低的环境(例如分阶段)中测试任何工具,实验等,就永远不会开发实验并直接在生产环境中运行该实验。 首先要开发出对进行实验所需的方法和工具的能力和信心。

从小而手开始。 如果您的假设是正确的,请自动化实验

James Hamilton和Bill Hoffman,

  • 期待失败。 组件可能随时崩溃或停止。 相关组件可能随时发生故障或停止。 将会出现网络故障。 磁盘空间不足。 妥善处理所有故障。
  • 保持简单。 复杂性会滋生问题。 简单的事情更容易正确。 避免不必要的依赖关系。 安装应该很简单。 一台服务器上的故障不应影响其余数据中心。
  • 自动化一切。 人们犯错; 人们需要睡觉; 人们忘记了事情。 自动化过程是可测试的,可修复的,并且最终更加可靠。 尽可能自动化。

红队(RT)和紫队(PT)vs.安全实验

  • 安全实验与红色团队或紫色团队演习具有不同的意图和目标。 其主要目标是主动识别由人为因素,不良设计或缺乏弹性导致的安全失败。 RT或PT练习的目的是利用系统中的弱点。
  • 安全性实验基于简单的隔离和受控测试,而不是涉及数百甚至数千个更改的复杂攻击链。 这些小的孤立更改的目的不仅在于专注于测试,还在于能够直接识别问题。 当您同时进行大量更改时,可能难以控制爆炸半径和将信号与噪声区分开。
  • 安全性试验的目的是围绕您的企业安全性系统如何通过工具工作来建立学习文化。 尽管实验通常从小规模开始并在登台环境中手动执行,但目标是在给定实验中建立足够的信心,以使其在生产系统上自动化并运行。
  • RT和PT练习主要集中于恶意攻击者或对抗方法,而安全性实验则集中于故障和人为因素在系统安全中的作用。
  • RT / PT和安全性实验通过提供有关组织如何改善其安全性实践的真实,可操作和客观的数据而相互补充。
  • 安全性试验试图说明现代系统的复杂分布式特性。 这就是为什么更改必须简单,范围小,随时间推移而自动化并在生产中运行的原因。

想了解更多? 通过在Twitter上关注@aaronrinehart@AWeidenhamer ,加入讨论。

[请参阅我们的相关故事, 。]

翻译自:

idea中出现紫色

转载地址:http://awnzd.baihongyu.com/

你可能感兴趣的文章
Ural 1001 - Reverse Root
查看>>
玩转webpack之webpack的entry output
查看>>
java 操作mongodb查询条件的常用设置
查看>>
黑马程序员_java基础笔记(02)...java语言基础组成
查看>>
对innodb 拷贝文件实现数据库的方式(转)
查看>>
python知识点 2014-07-09
查看>>
FloatingActionButton的一点学习感悟
查看>>
ABAP CDS ON HANA-(10)項目結合して一つ項目として表示
查看>>
网站地址信息
查看>>
产品经理 - 登录 注册
查看>>
Notepad++ 通过g++编译
查看>>
Ruby Gem 的基础知识和详解
查看>>
Vue学习
查看>>
html5的本地存储
查看>>
Java设计模式系列之中介者模式
查看>>
eclipse编译时过滤SVN版本控制信息方法(转)
查看>>
CSS3中使用calc()设置宽度和高度
查看>>
泉五培训Day5
查看>>
理解constructor属性
查看>>
java学习 java 的继承机制 暑假第三天
查看>>