软件部署失败使Cloudflare服务崩溃

这是一篇简短的临时文章,稍后将提供完整的分析和有关今天发生的情况的详尽信息。


今天,大约30分钟内,Cloudflare网站的访问者可能会看到由我们网络的CPU负载急剧增加引起的错误502。 这是由于软件部署失败。 我们回滚了所做的更改,现在该服务可以像以前一样正常运行,并且所有使用Cloudflare的域都恢复了正常流量水平。


我们向您保证没有攻击,我们对发生的事情深表歉意。 我们的开发人员已经在对错误进行详细的分析,并试图找出需要做些什么才能避免将来发生此类事件。


于世界标准时间20:09发表:


今天,在世界标准时间13:42,我们的网络中检测到故障,因此,访问Cloudflare域的访问者看到错误502(“错误的网关”)。 失败的原因是在部署新的Cloudflare WAF托管规则的标准过程中,在Cloudflare Web应用程序防火墙(WAF)中部署了配置错误的规则。


新规则旨在改善用于黑客攻击的嵌入式JavaScript的阻止机制。 这些规则是在仿真模式下部署的,在该模式下通常可以检测并记录错误而不会阻塞用户流量,这使我们能够测量误报的数量,并确保新规则在该项目的框架内部署时能够正常运行。


不幸的是,这些规则之一包含一个正则表达式,这导致我们到处的计算机上的CPU负载最多增加了100%。 由于这一飞跃,我们的服务用户见证了502错误,流量下降到82%。


下图显示了我们其中一个PoP上的CPU负载跳跃:



这是我们第一次面临完全耗尽CPU资源的问题,这对我们来说是极其出乎意料的。


我们一直在网络中不断部署软件,并且已经开发了用于运行测试和分阶段部署过程的自动化系统,以防止出现不愉快的情况。 不幸的是,WAF规则的全球部署是一个一次性的过程,这导致了今天的失败。


在世界标准时间14:02,我们意识到发生了什么,并决定完全禁用WAF规则集,该规则集立即使CPU负载正常化并恢复了流量。 我们在世界标准时间14:09做到了。


之后,我们分析了有问题的提取请求,回滚了相关规则中的更改,测试了我们的操作以确保100%确保正确找到了错误,然后在14:52恢复了WAF规则集。


我们知道这些事件给我们的用户造成了多大损失。 在这种情况下,我们的测试机制无法应对任务,并且我们已经在努力改进它并优化部署过程,以避免将来出现类似的错误。

Source: https://habr.com/ru/post/zh-CN458660/


All Articles