周五发生的 Windows 全球蓝屏故障也把这次事件的始作俑者 CrowdStrike 带到了聚光灯下。CrowdStrike 可以说是近 10 年来在软件安全领域最成功的公司。公司于 2011 年成立,总部在美国德州奥斯汀,2019 年 6 月在纳斯达克上市,IPO 当日上涨 71%,是近几年来上市首日表现最好的科技股之一(仅此于云数仓公司 Snowflake 的 111%)。从投资回报率来说,CrowdStrike 在和其它安全公司的横向对比中也是一枝独秀。
即使因为周五造成的故障,股价大跌 11%。市值依然有 742 亿美金。这是什么概念呢,软件领域其它赛道的头部公司,前面提到的 Snowflake 目前的市值是 430 亿美金,监控领域的 DataDog 是 400 亿美金,做支付的 PayPal 是 620 亿美金。不得不说,做安全真是暴利能创造价值呀。
至于故障原因,根据官方的恢复指南,是 Windows System32 目录下 CrowdStrike 的一个系统文件导致的。
稍微折腾过 Windows 的同学都知道,System32 是一个系统目录,里面的文件不能乱动。但这次的文件是通过自动更新机制,从 CrowdStrike 服务器下发到全球 Windows 机器上的。至于为什么采用自动更新机制,按照官方描述,这个文件包含的是最新的安全策略。所以从实时性角度讲,确实最好是在第一时间进行更新。
这是一次典型的由配置文件变更引发的全球故障,和之前「从公告分析阿里云 11.12 全球故障的原因」类似。引发故障的根因,首先是配置没有做好灰度,直接发布到了全球的 Windows 机器上。另一方面从能导致 Windows 蓝屏来说,也不是简单的配置项错误,而是文件本身被毁坏了 (corrupted)。网上有人提到是在发布配置文件的过程中,出现了意外,导致 Windows 接收到了不完整的文件。而本地的 CrowdStrike 程序并没有验证文件的完整性,就直接去覆盖了本来正常的系统文件。
但这次的修复要比阿里云故障要复杂的多,阿里云的故障是出在中心化的服务上,所以回滚掉出问题的变更,重启服务后就能解决了。但这次 CrowdStrike 的配置文件导致成千上万的 Windows 都无法正常启动,所以也就无法自动进行修复,要通过人肉非常规的方式在一台台机器上进行修复。要说不幸中的万幸,可能是还好这个错误是发生在 Windows 上而不是 IoT 设备上,否则亿级的设备同时下线,根本就修复不过来,也不知道会引发怎样的灾难。
Crowd 翻译成人群,Strike 则有罢工的意思。想不到这次一语成谶, CrowdStrike 带领全球 Windows 来了场集体罢工。