通常,当你有一些问题或请求时,会有一个票务系统。所以你有一个人,他或她或他们提出一个请求,它会告诉你你需要修复或添加的东西,它会以正常的方式处理。然后是问题。这很简单。我们已经见过很多次了,你知道,每次我们实际构建这些功能和修复等等,我们都在使用软件开发生命周期,对吧?
计划、分析、设计、实施、测试、集成、维护模式。但是缺少的是安全墙。所以,在软件开发生命周期的最后一步,因为没有更好的表达方式,事情就像墙上的墙一样被锁住了,这一步实际上甚至不在图表中。所以你要做的就是把所有的东西都准备好。
它处于某种最终的状态,或者被认为是最终的,然后它被转移到安全上,也许它没有这样做,也许有一些已知的缺失的漏洞没有被注意到,诸如此类的事情。当这种情况发生时,安全部门就会过来说,嗨,这些是你需要修理的东西。这可能会有点争议,对吧?因为当像这样的事情发生时,一方的心态是完成了,而另一方的心态是,还没有,我甚至没有看到它。还有一些其他的事情可能会导致人们将一个或另一个群体视为障碍或不必要的过程。
我们感觉没有被倾听,没有被恰当地交流。或者你也可能遇到信息不足或不正确的情况,对吧?当您发送请求时,您不一定知道该包含什么,您可能包含太多或太少的错误或不匹配的信息,等等。这是非常令人沮丧的。那么我们如何解决这些问题呢?
一种方法是实现DevSecOps。什么是DevSecOps?DevSecOps代表开发、安全和操作,它寻求在软件开发生命周期中集成安全性,并简化这些组的工作流程:开发、安全和操作。
非常清楚,DevSecOps不是什么,它不是用Dev和/或Ops取代安全,它不是期望Dev和/或Ops成为安全专家,或者期望安全成为开发或运营。好吧。从本质上讲,这意味着DevSecOps试图为安全性做些什么,就像DevOps为开发和运维做的一样。所以这意味着什么,如果我们想想DevOps之前的生活,或者DevOps之前的转型,你看到的是Dev和Ops之间同样的沟通模式,事情变得混乱,沟通效率低下,团队变得沮丧,意见被保留。因此,当我们试图将安全性包装到这个过程中,以便将它们包括在内时,您正在尝试以与之前相同的方式解决这些问题。但除了用和之前一样的方法,我们到底要怎么做呢?这是安全的软件开发生命周期,然后他们向左转移。首先,我们需要讨论安全的软件领域生命周期,这是关于打破障碍,你想要向前发展,并在DevOps生命周期中包裹安全性,简单地说,它可以是这样的。
没有任何细节,只知道每一步都有安全措施。或者你可以拿一些更重的东西,就像这样讨论在每个阶段可以执行什么类型的安全活动,在这里您可以看到活动的不同名称。例如,你有安全的架构和设计。所以回到功能和修复,甚至整个,你知道,服务,应用等等。
如果你在设计阶段引入了安全性,你和他们以及其他参与其中的建筑师进行了对话,你可以说,哦,好吧,我想用这个来建造它,我想依靠这些东西。然后他们会说,哦,你知道这个有一个漏洞,你可以用这个来解决吗?他们可以成为谈话的一部分,这样你以后就不会发现了。
你选择的东西可能有更多的漏洞或者其他你没有意识到的东西。类似地,您可以进行威胁建模,这是另一个设计阶段的活动。这基本上就是,当你试着在心理上建模,然后从字面上建模,你有什么类型的攻击的风险,你能做什么关于安全问题,我们要做的是,在这个阶段,让所有需要的专家都参与进来,对吧?这取决于你在设计什么,会有一点不同,但你会有一个对话,你说,我打算这样做。
如果有人心怀恶意,他们会怎么做?对吧?简单地说,还有测试,包括静态和动态测试应用程序安全测试,其中一些东西可以被流水线化,有些不能也不应该被流水线化,因为它们的持续时间很长,但我们的想法是实现安全测试,而不是将映像、依赖项等放到流水线中。所以不用在这些组之间来回切换,你可以说,好吧,就像我有一个CI\CD管道来做QA测试,等等,我可以把这些安全测试放在管道中相应的阶段,然后它们自动运行,然后需要审查它们的人就可以在这些阶段看到它们。
而不是在最后发现它,我认为这已经完成了,我们实际上可以在这里或这里找到,哪个更早,你可以得到更好的结果。我想提到模糊测试,部分原因是它说起来很有趣,但也是一个好主意,确保检查所有可能的输入,如果有人试图向应用程序扔垃圾或合法代码,会对应用程序产生什么影响。这不仅仅是为了确保你对输入进行了消毒。但实际上,如果有人试图通过在文本输入中放入二进制文件或类似的东西来关闭您的应用程序,您会感到优雅吗?
你只是拒绝输入吗?会发生什么呢?所以这类事情非常重要。当然,正如你在图表中所看到的,除了这些活动,还有很多其他的事情但是这些是一些尝试的东西,让你开始思考,好吧,我们在软件开发生命周期的不同阶段做什么?说到点子上,为什么这叫做向左移动,如果你想想那个图表,你看看屏幕上的东西,你在向左移动,因为在这个图表的设计方式中,你实际上是在更早地移动。所以不是等到最后,而是提前移动,向左移动到图中。
有一点很重要,你不必自己做。我的意思不仅仅是请雇佣保安人员,尽管也请雇佣保安人员并与他们一起工作。但你不必自己设计每个测试,对吧?
如果你在想,哦,不,我该怎么设计,静态应用程序安全性测试?或者我应该在哪里使用它?或者什么时候使用它?或者你听到了威胁建模之类的东西,但不确定要进行什么对话,有框架,有可以用来描述所有活动的东西,你可以看到你的组织与某些标准化基准相比有多成熟,一些经常被引用的是BCM, DCM和Sam,我稍后会提供这些的链接。
但这里的想法是,你不需要从头开始,你的安全人员不需要从头开始,你可以从这些现有的工具和框架中提取,然后说,我想如何定制这个,我知道我们在做什么?这一切都很棒,对吧?我该怎么做呢?因为一旦我有了所有的工具,我如何让人们实现工具、测试和所有的对话呢?你做文化支持,这意味着这部分对话是关于人类的。
DevSecOps是由人类支持的,而人类是由另一群人支持的技术支持的。这是一种非常人性化的体验,我已经讲过了它的基本原理,但让我们再多谈谈人类。所以我把这次演讲命名为“定向指导”的部分原因与一个字面上的球体,矛…
我显然说不清楚,这是一支长矛。这个想法是,你有所谓的钝和锋利的一端,我们并不是唯一使用这个比喻的人,但基本上它是,谁拥有权力,谁执行决策。通常你有一个决策者层,然后你有一个实施层或个人贡献者层,他们通常不是同一层。当然,根据所做的决定,在不同的领域可能会有重叠。
但这个想法是你在后面引导长矛或者在前面戳它。所以钝器和利器,都是相对的。因为这都是相对的,你需要有适当程度的支持,这建立在谁做决定和谁执行决定的基础上。因此,实施它的人可能有一个非常好的想法,关于他们认为应该实施什么,应该如何实施,应该实施的时间表等等,但他们需要从经理那里得到支持,跳过级别等等,以便说,我们需要为这个项目腾出时间,我们需要代表人们,专注于各种各样的事情来完成这个项目。这就是买进的目的。一旦你接受了,你也可以从其他小组得到一定的支持,因为你可以说,好吧,我们小组没有做另一个项目的原因,这也很重要,是因为这个由于这些原因,项目很重要。
转动一下,我一直想说的是永远不要欺骗员工。这又回到了常见的漏洞,有时你会看到,有时在Twitter或其他地方,你会听到人们说,哦,我点击了钓鱼链接,现在我要上30分钟的模块之类的。这并不理想,对吧?所以有很多其他的线索,你可以看到人们谈论一些合法的电子邮件看起来是假的,因为电子邮件设计很难,而一些假的电子邮件看起来是合法的,因为,你知道,设计需要时间,他们可以正确地做。正因为如此,它更容易建立更多的信任,展示共同的漏洞,而不是把它们强加于人。这样做的主要好处是你可以让人们信任你当他们不小心点击了不该点击的东西或者当他们使用电子邮件客户端时,它会自动下载附件,对吧?
事情就是这样发生的,现在他们有一台受损的机器,你想让他们知道他们可以联系你。所以如果你们的关系是有争议的,那种“我抓住你了”的关系,那么这种关系就不会促进这种类型的对话。所以这是非常重要的。
不要欺骗员工,但要让员工知道,如果你在做年度安全培训,向他们展示这些常见的行为是什么。说到培训,这意味着你可以定制培训。当你试着,你知道,说,哦,实际上,我们在钓鱼上做得很好,人们很少点击它们,如果我们碰巧部署它们只是为了检查你对那些信息做的任何事情。
你可以说,好吧,人们用这个做得很好,但实际上,人们很难理解像多因素认证这样的东西,或者为什么他们应该启用它,或者为什么我们强迫它被启用,这取决于情况。所以让我们来教他们。所以当你接受定制培训时,当你在进行培训时,你可以花时间说,我要多谈谈大家做得不好的地方,少谈谈大家做得很好的地方。也许应该为此给他们点奖励。
如果你让培训变得有吸引力,这也会很有帮助。所以展示一下跨站脚本攻击,展示一下实现这些攻击是多么容易……我们会说人们可以使用的更简单的漏洞类型,这样当人们想,哦,我…我不认为人们会这样做,因为我认为出于某种原因,这样做比表面上更难,现在人们在试图保护自己的安全时可以记住这一点。对于一般的员工和那些从事代码、基础设施和其他工作的非安全工程师来说,稍微分开培训也是很有帮助的。顺便说一下,这也是你不需要从头开始的东西,我们有指南- Sudo.pagerduty.com,在我的材料中也有链接但是当你看一下这个指南时,你可以看到我们有一些模板员工培训和工程师安全培训,你可以使用,定制和构建,这样你就可以从一个好的起点开始。
可以帮助在安全组和其他组之间建立一定数量的保留库的东西,称为完全服务所有权。这也是我将在我的参考文献和资源中链接到的东西。2022世界杯阿根廷预选赛赛程但全面服务所有权的概念是,如果你在维护它,或者你在建立它,你拥有它,所以有一个清晰的路径,如果有什么问题,我可以联系谁,如果我有问题,我可以联系谁,等等。这对安全也有好处的原因是你可以有一个安全专家或安全团队拥有与他们相关的服务,比如保险库,对吧?他们可以了解开发和运营的生产要求是什么。他们可以用理解来帮助建立同理心,这是双向的,对吧?
建立一种同理心,然后说,好吧,这就是为什么你提出要求,或者你正在按照时间表工作。
点击回到开发运营,还有安全,他们这么做可能是为了好玩,你可以玩这些游戏,因为没有更好的表达方式,叫做“夺旗”。这是一种数字游戏,相当于你在地面上尝试捕获标志,但在这种类型的设置中,你所做的是,你可能有一个服务器,你需要获取文件,也许你需要访问root拥有的东西,但不是root帐户,你必须做某些攻击才能到达那里。我们的想法是努力提高安全态势,不仅你是安全专家,当然,而且如果你不是安全专家,你的其他工程师,这又回到了我之前做的一个评论,哦,我没有意识到做这件事是如此的快速和容易。如果你把它做成像这样的游戏,你可以说,哦,试着访问这个文件或者试着不登录就登录,你可以让他们意识到,哦,这就是你为什么要这样做的原因。
两组人一起进行的对话是关于威胁建模的。我之前提到过一点。
因此,威胁建模就是试图找出你设计的东西以及它的潜在风险,并评估风险,看看你可以减轻哪些事情,哪些事情你不能减轻。在这个对话中,不仅仅是安全问题,其他团体也一样,他们可以把自己领域的专业知识带进来。所以当谈到安全时,你需要防范这种类型的漏洞。你可以让其他团体说,嗯,我们可以围绕这种方式设计吗,让它成为一个实际的对话,而不是他们可能收到的项目列表。这再次有助于改善公共安全状况这样参与对话的每个人都可以在他们试图建立共同目标时学到一些东西,这实际上是许多有框架的事情之一,或者是你可以跳过的框架之一,而不是只是试图从头开始构建,资源材料中也有链接。在这之后,还是会有安全事件发生,对吧?所以你尽了最大的努力,你评估了你的风险,但最终,你会被一些事情吓到,正因为如此,我想谈谈安全事件反应。下一张幻灯片文字比较多,但我会一个一个地讲,所以不要惊慌。
这是我们抽象出的安全事件通常如何运行的14步流程。你不一定要为每一个事件做每一个步骤,但你会以这种方式对你实际实施的事件进行排序。
首先要谈的是停止攻击和进步。这个想法是,你需要平衡引入其他人的需求与快速阻止攻击的需求。在安全事件响应过程中的一些事情,你可能会开始注意到从非安全事件中偏离,但仍然是工程生产事件。所以在另一个事故中,你可能会尝试把所有的应急人员集中在一个地方,然后进行分类和处理。但如果发生安全事故,你的数据可能会很脆弱,你可能会遇到其他情况,你不想让它在你的环境中继续升级。所以尽早停止是非常重要的。所以,如果你能早点停止,那就停止吧。然后切断攻击向量,不管它是什么。所以这个想法就像,如果你有一个受损的服务器,你知道,你遇到了一个网络区域,你可以封锁一个端口或其他什么,封锁那个端口。因此,这是切断攻击向量,这与阻止正在进行的攻击略有不同。对这些进行心理建模的方法是,假设有人闯入了你的房子,第一步是把他们赶出去第二步可能是锁上门窗。这是门窗的步骤。
在此之后,再次组建一个响应团队,同时注意平衡攻击严重性的需要和注意到攻击正在进行的人员的专业知识。一旦你在这一步,你需要优先考虑每个人谁有适当的专业知识采取行动,而不是利益相关者,所以这不是一个沟通的步骤。
这仅仅是为了让人们能够继续对事件做出反应,并处理我马上要谈到的下一步。
当你在这个阶段,重要的是要注意到,当你阻止正在进行的攻击时,你可能需要假设敌对意图,但一旦它得到解决,你可以在心理上转变为中立或积极的意图,这种思维转变的想法是,当你不知道意图时,你必须假设敌对,因为你必须规划出什么是最高的风险,以及有敌对意图的人会去哪里。但是在处理好这个问题之后,你可以说,你知道,人们总是在无意中做一些事情,下载发送垃圾邮件的附件,或者做他们正在做的任何事情,这时你可以转变成一个更中立的立场,一旦你希望没有理由继续假设敌对的立场。
你也要确保你隔离了任何受影响的东西,如果有一个漏洞。这里的想法是,如果有东西试图访问数据库或任何其他数据源,你要确保这些是隔离和包含的它们不会继续以这种方式被访问。此时,您还需要确定攻击的时间线。
现在你已经注意到攻击了,粗略地说,现在的一些定义,可能是30分钟,可能是一个小时,但是攻击的总持续时间可能更长。我们可能还记得之前的Equifax数据泄露事件。
发生了什么,他们在某个时候注意到攻击,但是当它被挖掘出来的时候,它已经持续了很长时间,任何安全事件都是如此,你知道有人在里面,但是他们可能只是进进出出,没有绊倒梯子或类似的东西。那就确定时间线,弄清楚我们存在了多久或者这次袭击持续了多久。
你要确保你处理了范围和严重性。所以他们能接触到什么,有多敏感。当你看到它有多敏感时,试着识别被泄露的数据,如果有的话,可能没有,那可能不是他们在做的。但如果有,确保你能识别它,并再次评估泄露数据的敏感程度。然后你需要看看其他系统。我们的想法是,如果有人从入口点A进入,他们能去哪里?或者他们可以使用相同的攻击点来攻击a、B、C,等等?那么,在您的环境中,这些其他系统的风险是什么?然后你需要评估再次攻击的风险。那么,当你早些时候切断和处理事件时,你是永久地还是暂时地解决了这个问题?
是否存在未打补丁的CVE,例如,一个关键的漏洞,你可以修补它或围绕它进行架构设计,但在其核心,你需要对依赖项或其他东西进行更新才能真正修补它。这是你的评估。您还需要确保您正在使用任何额外的缓解措施。我举了一个Equifax的例子,但基本上,像这样的东西,如果你有东西入侵你的系统,而你的监视器没有捕捉到它,当你评估它是如何发生的,你可以设置监视器来捕捉它们未来的行为,你还可以做任何类型的键旋转或任何被破坏的东西,这是有意义的改变,以防止它被重用。
如果你把这些系统放在一边,这样你就可以在以后对它们进行分析,现在一切都解决了,范围和诸如此类的事情,这就是你要对这些受损系统进行法医分析的时候。再说一遍,你只能在所有问题都尽可能得到最好解的情况下才这么做,对吧?
这是当你想看到实际发生了什么,任何新的信息添加,这是一种增强你目前所拥有的一切,你可能会使用第三方来完成这取决于,你知道,各种因素和内部知识之类的东西。
这是最后的步骤之一,有意图,这里的想法不像一个非安全事件,但仍然是生产或工程事件,你不想沟通,有一个活跃的事件,然后做30分钟,你知道,更新与安全的轮换因为没有太多要说的,它主要是明显的焦虑,没有人采取行动,对吗?安全小组采取的行动比他们请来的其他专家都要多。所以当你发出这个内部沟通的时候,它就快结束了,一旦你掌握了所有的信息,你只发送它,如果有必要的话,因为人们需要采取什么行动这就相当于不做我提到的30分钟的更新如果你只做一个事后分析一般的,我们会说,工程事故。这里的想法是,现在人们可以通读,他们可以说,哦,这是发生的事情,这是如何解决的,这是我需要做的任何事情,然后他们可以继续。
在那之后,你可能需要让执法部门介入。这同样取决于您刚刚经历的安全事件的类型。
不管怎样,这可能是你公司的要求,所以这真的要依赖于你的内部知识和文档化的过程。如果你涉及到执法部门,你还需要联系可能被用作攻击媒介的外部各方。想想这样的事情,如果你是a公司,而B公司是攻击的源头,可能只是有人意外地在他们的系统上得到了恶意软件或其他东西,这就是为什么你以这种方式受到攻击。所以你要确保你可以联系到他们,但不要使用你知道,“你好,域名”,比如联系适当的联系人,如果你有,你可能需要通过执法部门,如果你没有这样做,你知道,通知是合法的,而不是被忽视的垃圾邮件,对吧?就其本身而言。然后,只有在必要的情况下,进行外部沟通。这是如果你需要再次通知任何类型的泄露数据的通知,或任何行动这需要应用程序的任何客户、用户等向你提交数据的人来承担。
现在,作为一个快速回顾的幻灯片,我们刚刚回顾了所有14个,我在我的资源和材料中有一个链接,就在这张幻灯片上。2022世界杯阿根廷预选赛赛程所以我把所有的东西都写在便条上了。首先,你可以看看我链接的所有东西,培训的伪指南,DevSecOps指南,这是这次演讲的起源,然后还有安全事件响应页面,它概述了14个步骤的过程。
还有跨步框架的链接,完整的服务所有权和其他一些东西。所以我强烈建议大家都看一看。
下个月,我们要举办传呼机工作峰会所以我真的觉得如果你能注册加入就太好了。
这是一个免费的活动,5月4日开始注册。我会在你身边。
如果你有任何问题,请告诉我。
我的名字是Quintessence,我是《Pager Duty》的开发者倡导者。