Edgio的Beyond the Edge播客简介第5集:识别和缓解Andrew Johnson,Sr.主持的零日威胁 Edgio的产品营销经理–安全。
Andrew Johnson: 欢迎来到Beyond the Edge,我们将深入了解影响现代数字业务的趋势。 我是Andrew Johnson,您的本集合作飞行员。 今天,我们正在探讨零日威胁的主题,特别是我们如何识别和缓解这些威胁。 今天加入我们的还有工程副总裁Dave Andrews Edgio和Edgio首席研究科学家Marcel Flores。
欢迎,Dave。 和Marcel,很高兴你们两人都在这里。 您能否介绍一下您自己以及您在Edgio的角色?
Dave Andrews: 好的。 感谢您的光临。 很高兴能够继续。 我是工程部副总裁。 我已经在Edgio工作了11年了。 从工程角度来看,我负责边缘平台和许多类型的中央基础设施。
安德鲁·约翰逊: 太棒了。 谢谢你。
Marcel Flores: 是的。 非常感谢您的参与。 正如你所说,我是Marcel Flores。 我是Edgio实验室的首席研究科学家,Edgio的研究小组 我的团队致力于提高网络的性能,可靠性和运营,方法是进行严格的研究和开发,并与更广泛的系统和网络研究社区进行互动。
什么是零日?
安德鲁·约翰逊: 太棒了。 再次感谢各位今天的参与。 因此,在零日威胁的主题中,我认为快速为我们的受众提供有关零日漏洞和攻击的背景信息非常重要。 在介绍您保护Edgio和我们的客户的一些体验之前,我将简要介绍一下。 那么就我们这里所说的而言,什么是零日呢? 基本上,现代的应用程序,现代的商业,现代的服务是由软件,来自开源代码的软件,商业化的代码基础不同的协议等组成的 我们知道没有一个软件是完美的,而且不时会在该代码中检测到漏洞。 基本上,”零天”是指发现漏洞的时间段,以及提出修补程序或变通办法的时间,对吗?
因此,开发人员一旦知道了漏洞,就会尝试尽快对其进行修补,或者向客户和用户提供他们可以执行的软件步骤,以防止漏洞被利用。 但基本上,就像我提到的,这是一个问题,不会消失。 我们发现,与2021年相比,2022年CVE或常见漏洞和风险的数量每年增加约25%。 越来越多的漏洞会被发现并不令人惊讶。 有一些AI工具可以快速扫描代码库。 对于好的行为者和坏的行为者来说,肯定有经济上的激励因素,可以从好的行为者方面找到这些脆弱性。 存在错误赏金程序。
你很熟悉苹果一直为你的iPhone推出代码修复程序的情况。 好的白帽研究人员正在向这些开发人员提交漏洞,然后也有一些坏人在利用漏洞。 所以,只是一点点的背景。 也许是您最近听说过的一些常见问题。 最近,HTTP2/Rapid Reset在应用程序安全领域是一件非常值得注意的大事。 也许你听说过Log4j,Spring4Shell或几年前的Apache Struts 2漏洞,它在美国,实际上在世界各地造成了大规模数据泄露。 这只是关于零日威胁的一些背景,但是,是的,也许我会先问Dave,你们做了些什么来保护Edgio和我们的客户免受零日威胁。
Edgio如何保护自己及其客户免受零日威胁?
大卫·安德鲁斯: 是的,绝对的。 所以我认为安全就是深度防御,对吧? 就像,从来没有任何一个特定的事情,你做. 它更多的是确保你有很多层都绑在一起。 这个想法是如果一个或两个层是不完美的,因为它们都是因为我们有非常聪明的人积极试图打破它们,纯粹的层数和重叠的保护和缓解被设计,这里的要点是, 如果有一件事失败也没关系,因为那里还有其他五件事可以保护您。 所以,退一步,就像第一步一样,我认为可以说,最重要的事情之一就是一般都属于准备阶段。
这至少有三个不同的方面。 我首先想到的是卫生。 保持良好的安全卫生绝对至关重要。 这在很大程度上有助于减少您的关注领域。 “我该拿你怎么办?” 有两个主要的东西。 一个是保持软件最新或定期修补。 这是世界上最无聊的事情。 它也可以说是最好,最关键的防线之一。 这意味着你利用你所谈论的所有负责任的披露,安德鲁,好的白帽研究人员,发现漏洞, 向供应商披露,修复和实施修复。
您可以利用您所使用的软件中的所有基本已知攻击向量。 只是因为它很无聊并不一定意味着它很容易,尤其是当您在Edgio以及其他许多地方工作时, 很难管理定期升级所有软件所带来的风险。 因此,正如我们稍后将看到的那样,我们在操作上做了很多事情,以使其更安全,更容易操作。 但如果你愿意,它仍然可以直接落入卫生桶里。 下一个放在卫生环境中的部件是扫描。 这里的重点是积极寻找一些迹象表明你在一个坏演员找到它之前就遇到了问题。
所以这有很多形式。 它可以是内部安全小组或信息安全小组。 您可以聘请外部方执行扫描。 它可以是两者。 通常,组织利用漏洞赏金基本上鼓励人们采取白帽子路线,发现漏洞向我们或特定方披露,以便在被积极利用之前修复漏洞。 所以这些事情都属于你可以解决的东西,首先解决,对吗? 就像,利用整个社区正在做的好工作,使互联网和软件一般更安全. 然后主动查看您自己的应用程序,尝试找出漏洞并主动修复它们,尽您所能。 下一个我要说的关于准备的部分,我要把重点转向马塞尔,是可观察性。
Marcel Flores: 是的,谢谢Dave。 所以我认为在许多这种情况下能够做的另一件重要的事情是能够了解您的网络或基础设施的情况。 所以我认为这种类型可以分为两类,它们基本上是相同的,但我认为必须指出。 第一个是思考应用程序级的行为,对吧? 确保您了解哪些请求进入您的网络,以及这些请求的功能,它们的形状和正常外观,以及在某些事件中它们可能是什么样子。 我认为同样重要的是,记住,每当你在互联网上通信,是的,这是一种完整的堆栈操作,对吗?
每个请求都要通过应用层,也要通过较低级别的协议。 因此,密切关注堆栈中的后续情况非常重要,对吧? 并了解可能有来自较低层系统的复杂行为和响应,这些行为在这些应用层行为中无法很好地捕获。 因此,跟踪这两个组成部分并观察这两种情况下发生的情况非常重要。 我认为最关键的一点是能够理解交通的变化,对吧? 当您的流量超出预期时,对吧? 您可能会开始看到应用程序请求的功能,而不是您通常看到的功能,对吗? 例如,与GET相反,HTTP帖子突然增加,考虑应用层,考虑协议级别,对吗?
这可能是非常复杂的协议,如HTTP2或更低的东西。 并考虑TCP套接字发生了什么以及该级别的协议交互发生了什么,尤其是当您考虑DDoS攻击等可能尝试利用特定漏洞的情况时。 我认为拥有这些漏洞的关键在于,要获得这种可观察性,不仅要有能让您了解情况的指标,还要有能力深入了解这些行为,对吗? 并相应地对其进行细分,对吧? 了解是否有特定的用户群体正在生成特定的流量集。 有特定的网络,特定的客户,特定客户的特定属性,对吗? 因此,你可以理解并缩小事情发生的地方,以及它们可能发生的方式。
安德鲁·约翰逊: 这很有趣。 真有意思。 那么,在您观察到这些不同类型的行为或您认为可能是零日的事情后,您可以采取哪些操作步骤?
您可以采取哪些步骤来缓解零日威胁?
大卫·安德鲁斯: 是的,我可以拿那个,安德鲁。 是的。 Marcel所谈论的两种元素都是真正的基础,对吧? 就像第一个是看事物,看趋势,从一个角度来看,看事物的整体,对吗? 比如,整体情况是什么? 正如您所说的那样,您可以从高层次的角度了解正在发生的事情,并让您能够非常快速地识别变化。 深潜的第二部分实际上是能够挑逗和发展你对什么变化的理解,它在什么水平运行,它是一个风险,对吗? 就像,你知道,互联网是野生的,狂野的西部,对吗? 就像,事情一直在变化。
新的行为一直在发生。 并非所有这些都是安全问题,对吧? 同样,拥有更广泛的综合信息集的能力,让您深入挖掘,询问和观察,或者回答更细微的问题,让您了解变革的核心及其原因,并让您做出决策。 “哦,这是我的房子。” 这是一个新客户在做一些事情。 或者你知道这实际上是一个问题,或者我们需要去看看。 所以,离开,你知道,看看发生了什么,发展一些对它的理解是一个问题。 你进入了相似的领域,伟大的,那么什么?
“那你打算怎么办?” 我们称之为操作敏捷性和敏捷性。 在考虑运营敏捷性时,我们会仔细思考一些高层次的主题。 再次强调,除了响应,安全和冗余之外,还有三个方面。 因此,在每一个响应能力上花费一点时间就是它听起来的样子,对吧? 从安全角度来看,当出现问题时,时间至关重要,对吗? 如您所知,您希望能够非常,非常快速地解决安全问题,从而使攻击者能够将造成破坏的时间减至最少,并使您能够将清理时间减至最大。 因此,我们的目标范围非常广,不仅是围绕安全问题,而且是围绕我们所做的各种操作更改,我们的目标是大约5秒钟,以达到99.99%的基础设施。
这就是目标。 我们并不总是达到目标,因为有些事情需要更长时间,但这就是目标。 我们的许多子系统确实满足了这一目标。 安全是一个奇怪的主题,需要考虑操作敏捷性。 让我稍微分开一个。 当您尝试以高水平的响应(即非常,非常快)来做某件事时,您面临的一个风险是您可以非常,非常快速地解决问题,前提是您具有完美的可观察性和对正在发生的事情的完美理解, 你可以完美地预测对你即将做出的改变的反应。 这很好,而且很多时候都是这样。 然而,也有机会,你的任何这些东西的理解是不完美的,你很可能会使它变得更糟,也非常,非常快。
没有人愿意这样做。 因此,关于安全的全部要点是将系统,流程,自动化以及许多其他方面都投入其中,以确保事实上不会让情况变得更糟。 这可以归结为几个非常,非常高级的事情。 开始时。 这就像主动建模。 这在很大程度上适用于基本容量规划,对吧? 例如,如果由于某种原因而必须使计算机退出生产,则需要对其进行修补,因为无论出于何种原因,都需要重新启动服务。 如果您尝试非常快速地执行此操作,其中一个风险是您将太多机器从生产中撤出,以承受它们当前所承受的负载。 你可以提前知道这一点,对吧?
因此,我们有许多建模系统与工作流程系统集成,因此当您请求尽可能快地修补所有内容时,它不会立即将所有服务器从生产中拉出。 因此,有基本的安全系统,你可以建立和集成,以防止自己射击自己的脚。 因此,假设我们不会从这个角度使事情变得更糟,仅仅从容量规划基础设施的角度来看,我们还想知道我们正在进行的更改会对应用程序级别或任何级别,可观察性应用程序,协议, 无论我们试图减轻什么影响。 所以我们所做的就是利用一个我们称之为煤矿的系统。 我们之前在博客上发表过关于它的文章,并公开谈论过它,但这个想法基本上是一切都是我们所谓的金丝雀——煤矿里的粮仓。
无论多么可怕,全球都不会发生任何事情。 至少需要两个阶段才能完成任务。 因此,我们将其放在基础设施的子集上。 通常情况下,最极端或最明显的基础设施会发生事件,我们会验证它是否能满足我们的期望,然后我们会非常迅速地将其推出。 抱歉,请将其推广到更广泛的地方,并验证整体问题是否已在全球范围内得到解决。 因此,煤矿和粮仓与它们的指标和可观测性系统紧密集成,因此您可以一目了然地关联起来,这是什么? 金丝雀对我正在查看的汇总指标有何作用? 所以我们得到了实时反馈,嘿,我们所做的改变实际上是在解决这个问题。
这非常非常方便。 我们目前实际正在进行的工作,准备在内部和以后发布,我们将为客户及其配置更改产品化,基本上是完全自动化的度量分析。 所以目前,当我们做出这样的改变时,它需要一个人类坐在那里观察它,确保发生了正确的事情,并确保他们关注的指标朝着正确的方向发展。 然后基本上推进金丝雀,告诉系统,好的,你已经通过了第一阶段。 一切看起来都很好。 继续前进,进入金丝雀的全球阶段。 我们做到了这一点,我们利用系统进行所有更改,不仅仅是您知道的安全操作更改,还包括整个系统中的所有更改。
我们遇到的问题是,我们建立了越来越多的销售点可见性,越来越多的可见性,越来越多的指标,越来越多的关于正在发生的事情的信息,越来越多的信息可供人类观察,对吗? 而负载正达到其过高的程度。 所以人类开始犯错误,对吧? 因为有太多的图表要看,太多的图表要看,人们会累,人是不完美的。 所以我们启动了一个叫做birdwatcher的系统,这个系统监视着那些基本上会对指标进行一些复杂的统计分析的犬舍,比如随着变化的展开,给它一个大拇指或大拇指向下。 这与煤矿集成在一起,所以我们可以说,嘿,以一种自动化的方式,我们得到一些迹象表明金丝雀是好的,它在做我们所期望的。
另外,它也不会做任何我们不期望的坏事情,而且,在没有任何人为干预的情况下,这种部署将会继续进行。 所以超级兴奋。 这将使我们的响应速度更快,更安全。 这些是我们在谈论安全时要考虑的主要事项,能够快速,安全地解决问题。 我提到的最后一点是冗余,这是比较不言自明的。 我们可以利用和部署一个关键点或理念,这基本上是许多这些变革的双路径,我们可以尽可能多地进行这些变革。 双路径意味着,我们思考的两条路径基本上是快速,尽力和缓慢,可靠的。 我们的想法是,我们在世界各地非常,非常,完全不同的地方运营大量的基础设施。
在几秒钟内以100%的可靠性击中一切的能力是一个童话。 就像,这不是什么是可行的。 某处总是有问题。 你根本就不能做任何事情。 所以我们要做的是,我们基本上把这些东西放在一起,就像安全一样,就像深度防御一样,对吧? 比如,你把这两个东西放在一起,实际上就是利用这条快速的道路。 尽可能多的点击你可以. 如果你错过了任何东西,我们会确保我们有一个冗余的可靠路径,我们会不断重试,直到它起作用,这会有点慢。 因此,为了实现这一目标,我们将在不到五秒的时间内对大约99.9%的基础设施进行更改,对吧?
就像这样,99.9%是可重复的,可靠的。 然后,缓慢可靠的路径运行大约60秒。 这个系统将继续尝试直到它基本上成功。 因此,通过将这两个因素结合起来,我们可以充分利用这两个因素。 如果这些子系统中的一个子系统完全停机,并不意味着一切都停机了,我们仍将在五分钟后达到所需的最大值。 这两个因素共同为我们提供了这种响应能力和敏捷性以及我们所需的可靠性。 还有其他类似的有趣的小事情来确保我们有一些冗余。 喜欢如何启动这些系统? 就像您所知道的许多系统一样,聊天机器人是集成的,因此非常,非常简单。
任何人都可以在世界任何地方通过手机做到这一点。 很多其他的东西都有API。 有一个CLI可用于许多子系统。 因此,确保不是只有一种方式来启动这些任务,这是我们如何构建冗余的另一个示例,这样无论发生什么事情或遇到什么特定系统问题,我们都可以随时获得操作灵活性。 我们确保我们拥有所需的控制力和运营能力。 很多这些东西,你知道,都是一般的目的,但正如我所说,我们尽可能多地利用它们。 从我们自己的基础设施工作流程,如将机器从生产中撤出,修补它,一直到客户配置更改,一切都是如此。 它都利用了我们狗粮和积极利用自己的相同核心系统。 因此,我们向客户展示的产品非常可靠,非常坚固。
安德鲁·约翰逊: 太棒了。 太棒了 感谢Dave。 和Marcel,我认为您谈到了安全团队可以应用到其实践中的最佳实践或注意事项。 感谢这些技巧。 我知道你们肯定已经在野外处理了一些非常有趣的零日案例,以保护Edgio和我们的客户。 我相信你们有一些好的故事和这些最佳实践的应用。 你能谈谈这个吗?
零日示例:HTTP2/Rapid重置
大卫·安德鲁斯: 是的,绝对的。 我认为最相关或最近的一个,我猜,它有点有趣,你前面提到的,是HTTP2/Rapid重置攻击。 这是一个非常有趣的经历。 所以,为了从Edgio的角度传达它,我们写了一个关于这个家伙的小博客。 HTTP2/Rapid重置是一个零日攻击,人们意识到,不仅模式HTTP2服务器库的实现已经采取了某种东西在HTTP2 RFC中,规范,协议规范作为一个一般性建议,并基本上在库本身编纂。 这是允许的并发请求数,抱歉,允许在特定连接上运行的并发流,在规范中被写为100。
再加上H2的一个有趣的小方面,这是,你知道,这个想法是多路传输-在一个TCP插槽上有大量的请求-和取消请求的能力导致这个非常,非常有趣的漏洞或DDoS漏洞. 攻击者所寻找的整个要点是,攻击者只需花费一小笔钱,而对另一端的人而言,攻击者需要花费更多的钱 他们在HTTP2快速重置中发现了这一点。 这基本上意味着攻击者可以非常非常非常非常非常快速地像一个数据包一样入侵,发起一个请求,然后一遍又一遍地取消它,就像单个套接字上的数百个数据包一样,抱歉地将它发送到服务器。
然后,服务器要做的工作要比发送单个数据包多得多。 我们必须创建一个请求,通常我们必须启动代理连接。 这就是CDN所做的,以获取攻击者所请求的任何资产。 最后,我们必须记录请求发生的情况。 因此,攻击者能够生成这些请求的初始化和取消这一事实非常快。 基本上,就像任何受到攻击的人一样,这种攻击的代价要高一些。 处理它们的成本比生成它们的成本高。 因此,这将成为DDoS漏洞。 所以我们像业内的许多其他人一样,跑了,你知道,被攻击了。
每个人都在同一时间受到攻击,这使得它特别有趣。 这是一个非常广泛的攻击。 我很想了解攻击者开始攻击时的想法。 因为他们同时攻击许多,许多,许多提供商。 当我们开始与其他提供商交谈时,我们发现了一个问题:哦,您是什么时候看到的? 哦,这正是我们看到它的时间,我们偶然发现了,因为我们发现了攻击。 由于Marcel所说的可观察性,我们确定了所发生的事情。 我们开始构建缓解措施,对吧? 因此,缓解措施看起来就像增加更多的可观察性,以准确了解正在发生的事情的核心,然后建立操作控制,使我们能够调整应对措施。
因此,实际情况是,跟踪任何客户端在特定套接字上重置请求的次数,如果百分比超过预定义的阈值,则终止该连接。 因此,我们的想法基本上是不允许攻击者持续发送这些请求以对其设置上限,从而能够缓解攻击。 因此,我们在构建了缓解措施,部署了缓解措施,实施了缓解措施,并验证它实际上可以防止这些攻击再次发生后,发布了该博客。 然后,我们有业内人士伸出手,喜欢,哦,我们看到了博客. 我们实际上也受到了这种影响,我们正在致力于负责任的披露。 因此,我们与业内的一个团队(如Vince)合作, 这是证书的一部分,要通过负责的披露流程,请确保在这种情况下,实施HTTP2库或HPD服务器的人员有时间生成修补程序,在部署这些修补程序之前,漏洞得到了更广泛的宣传。
所以这是一个非常非常有趣的流。 我们能够快速地扭转这种局面,对吧? 就像我们在卫生和运营以及运营可见性和灵活性方面所做的工作一样,我们能够做出非常小的改变,对吗? 就像,不是,我的天呐,我们必须升级这个库,因为我们不会定期更新它,所以我们落后了10个版本。 这不是说,实际上我们落后了一个版本,对吗? 例如,因为我们会定期修补升级,从而降低风险,因为这是一个小跳跃,这意味着您可以非常快速地完成升级,同时保持我们拥有的低风险阈值。 因此,我们很快就完成了这项工作,并且我们能够将其部署并抵御攻击。 然后我们在不知道攻击已经袭击了更多人的情况下发布了博客,尝试不仅与我们的客户,而且与行业进行社交。 就像,嘿,这是一个奇怪的东西,我们看到它看起来像它不是特定于Edgio的,事实上可能更适用. 原来是这样。
Andrew Johnson: 那真的很有趣。 很酷的是,您可以从内部看到全球的安全社区携手合作,为每个人改善成果。 “那你想肏姐是从什么时候啊?”
Marcel Flores: 是的,我只是想添加一个注释,我认为这个例子是一个有趣的例子,在最初的观察性,我们肯定显示出奇怪的行为,因为戴夫是描述的,对吗? 这种较低级别的协议功能与CDN较高级别的行为之间的交互产生了一些真正意想不到的行为。 其中的一部分,我们想知道这里发生了什么,就是理解存在着这种严重的不平衡,对吧? 我们看到的请求数与实际交付给客户的请求数之间存在偏差,对吗? 而这一点很突出。 尽管这两个指标都是我们一直在收集的,但我们并没有以这种方式对它们进行比较。 结果的一部分就是坐下来看看它说,嘿,我们怎么能把我们已经拥有的可见性结合到为检测这个问题而量身定制的东西上呢? 我们能够做到这一点,并通过一个稍微不同的视角来查看我们已经拥有的数据,从而改善我们的可见性范围。
安德鲁·约翰逊: 太棒了。 太棒了 记住这一点很好。 感谢您的支持,Marcel。 是的,伙计们,我认为我们已经结束了。 如果,是否有任何其他建议您想要分享? 我想我们涵盖了一个高水平,一些非常好的。
加强安全态势的建议
戴夫·安德鲁斯: 好问题。 我认为一个一般性的建议是卫生是至关重要的。 专注于你的可观察性,我想我要呼吁的是找到可以帮助的人,对吧? 像Edgio这样的公司所提供的关键价值主张的一部分一样,我们肯定可以提供帮助,对吗? 您有一个像我和Marcel这样的整个团队,他们正在努力解决这一问题,并积极主动地防止各种攻击影响人们。 所以,找人可以帮助,对吧? 就像我们构建的许多工具和技术一样,社区提供的这些工具和技术可以让您的工作更轻松。 当我们谈论互联网上的事物时,WAF就像,是最关键的,也是最基本的,我认为这类事物的最关键的例子。
如果实施得当,它将使您能够将敏捷性和安全要素结合在一起。 因此Edgio WAF在双模式下运行,这意味着您可以将新规则部署到生产中,部署到正在获取新规则并观察流量的实际机器上。 你可以看到正在发生的事情。 Log4j就是一个很好的例子,你知道,它可以追溯到一小段时间。 当我们制定对该规则的响应时,我们能够非常,非常快速地制定规则并验证规则。 由于我们正在推送规则更新,并且能够在警报模式下将其部署到实际机器上,并看到它们与攻击相匹配,因此向我们的客户展示他们没有受到攻击或受到攻击。 然后做出一个非常数据驱动的决策,使该规则进入阻止模式,并实际防止这些攻击向我们的客户传播。 所以它把所有这些结合在一起,对吧? 例如响应速度,安全性,冗余性和可靠性。 找能提供帮助的人。 我认为这将是我的主要建议。
安德鲁·约翰逊: 这很有道理。 我很感激,Dave。 是的,我是说,当回应零天,时间是关键的。 因此,拥有这些专门的解决方案,更重要的是,能够帮助您完成这一过程的人员是关闭攻击者的大门的关键。 非常感谢大家加入我们的行列。 我也想感谢观众,我们将在下一集见到你。 谢谢你。