当地时间 2024 年 7 月 19 日,澳大利亚悉尼一家超市的自助结账终端,微软“蓝屏”致澳大利亚自助结账机“宕机”。视觉中国图
网络安全公司 CrowdStrike 造成的微软大规模蓝屏事件的余波仍在持续。
当地时间 7 月 21 日,CrowdStrike 发表最新声明称,该公司正在尽快恢复所有受此前技术故障影响的系统,大约 850 万台受影响的微软 Windows 设备中,已有相当数量的设备恢复正常运行。CrowdStrike 对技术故障造成的影响致歉,并称公司正在推动加速修复进程,并将持续提供更新信息。
根据微软此前的报告,因 CrowdStrike 公司升级安全软件而引发的大规模宕机事件影响了全球大约 850 万台安装微软 Windows 操作系统的设备,是所有 Windows 系统设备总数的不到1%。这一数字意味着,本次蓝屏事件可能是有史以来最大的 IT 故障。上一次出现这类大规模的全球性事件还是在 2017 年,当时,被称为“WannaCry”的“蠕虫式”勒索软件影响了总计 150 个国家内的约 30 万台计算机。
微软强调,这一事件突显出了 CrowdStrike 等网络安全公司在发送更新之前对其进行质量控制检查的重要性。微软网络安全主管戴维·韦斯顿(David Weston)表示:“这也提醒我们,对于整个科技生态系统中的所有人来说,利用现有机制优先进行安全部署和灾难恢复是多么重要。”
美国网络安全和基础设施安全局(CISA)局长珍·伊斯特利(Jen Easterly)于 20 日发表评论,将这起事件称为“一起严重影响全球关键基础设施运行的重大事件”,并称“这是一个严重的错误”。
对于该事故在中国造成的影响范围,网络安全公司奇安信 21 日发布的分析报告指出,估计国内的 CrowdStrike 软件装机量在万级,相关单位数在百级,用户主要集中在北上广深等发达地区,受影响的主要是外企、外企在华分支机构及合资企业。
另外,蓝屏事件对于全球航空的影响依然显著。在 19 日当天,航班追踪网站 FlightAware.com 发布的数据显示,在本次事件发生后的第三天,截至 21 日晚间,当天已有超过 1500 架次美国境内、飞往以及飞离美国的航班被取消,其中达美航空和联合航空被取消的航班最多,还有超过 7400 架次美国航班遭遇延误。
7 月 19 日,微软(Nasdaq:MSFT)收于每股 437.11 美元,跌 0.74%,总市值 3.25 万亿美元。CrowdStrike(Nasdaq:CRWD)收于每股 304.96 美元,跌 11.1%,总市值 742.2 亿美元。
故障起因是一个逻辑错误
在后续复盘中,人们才发现,引发如此大规模 IT 故障的起因仅是一次杀毒软件常规更新中的一段错误代码。
在故障发生的 7 月 19 日,CrowdStrike 于晚间发布了修复程序。随后,公司 CEO 乔治·库尔茨在一份道歉声明中称 CrowdStrike 已经“运行正常”。不过,尽管有一些受影响的计算机能够自动下载软件更新、运行修复程序,另一些还是需要 IT 人员手动重启并修复,意味着该故障的完全恢复仍需要一段时间。
奇安信安全专家汪列军对澎湃新闻记者表示,由于 CrowdStrike 本次更新属于检测规则更新,在驱动启动时就会默认下载,所以用户很难阻止系统崩溃。虽然该问题的修复措施很简单,但比较耗人工:“需要每台机器都进入安全模式,然后把相关的驱动删掉,启动文件名或者目录改名。”
一天后的 7 月 20 日,CrowdStrike 发布了事故的详细分析报告,称此事是由旗下网安产品 Falcon 平台更新中一个逻辑错误引起的:“特定的更新旨在检测恶意软件使用的新的恶意命名管道,命名管道是 Windows 系统中用于进程间通信的通信通道。然而,这次更新无意中含有一个逻辑错误,结果导致操作系统崩溃。”
专门研究操作系统威胁的网络安全研究员 Patrick Wardle 也指出,电脑病毒特征码中的错误代码或是一切背后的“罪魁祸首”:“对于网络安全产品来说,更新特征码是司空见惯的事。它们会持续监测新的恶意软件,以确保客户免于遭受最新威胁。”
谷歌原高级软件工程师扎克·沃瑞斯(Zach Vorhies)在X平台上给出了更详细的解释。沃瑞斯猜测,这起故障背后的技术细节应该是一个很典型的 Null Pointer Dereference,也就是空指针引用故障。在 C++ 语言中,地址 0x0 通常被用来表示一个无法被访问的空指针 Null。而当 CrowdStrike 的程序试图访问这个地址时,导致了系统崩溃:“C++程序员在传递对象时本应通过‘检查 null’来预防这个问题。”
全球损失或超 10 亿美元
虽然专家普遍认为现在要判断本次事件造成的具体损失还为时尚早,但美国研究机构安德森经济集团(Anderson Economic Group)的首席执行官帕特里克·安德森(Patrick Anderson)表示,这些损失可能轻易超过 10 亿美元。
安德森指出,今年 6 月,为美国汽车经销商提供软件的主要供应商 CDK Global 遭受了持续约三周的黑客攻击,导致数千家汽车经销商的业务陷入停滞,损失已经达到了 10 亿美元。与之相比,“(微软)这次停运影响了更多的消费者和企业,从暂时不便到严重中断,造成了一些无法轻易弥补的支出”。
安德森补充说,对于航空公司来说,损失可能特别显著,因为航班取消会导致大量收入损失,还有遇到重大延误的航班带来的超额劳动支出和燃料成本。
要弄清楚这些损失由谁来承担,可能需要很长的时间。尽管 CrowdStrike 在全球网络安全领域占据主导地位,其每年的收入仅略低于 40 亿美元。有专家指出,CrowdStrike 的客户合同中可能会有法律保护条件,以使其免于承担责任。
7 月 21 日,CrowdStrike 在官网上线了全新的“修复和指南中心(Remediation and Guidance Hub)”,收集了与本次错误更新相关的详细信息。同时,页面还提供了有关 Bitlocker 密钥恢复流程的链接,以及来自第三方厂商应对故障的应对指南。
对于本次事件带来的经验教训,汪列军认为,从微软的角度来看,以 Windows 操作系统的架构,这类故障确实比较难防范,但公司可以做的是加强各种驱动程序的安全性检查,以及增加修复机制:“比如说在几次启动失败后,让机器自动进入安全模式,至少在不加载其他外部驱动的情况下能先启动起来,这个是可以做的。”
而从 CrowdStrike 的角度来看,本次事件中最大的问题是在于推送更新的方式。汪列军表示,这体现出了灰度测试的重要性:“哪怕是对一个环境或是一类客户先推送,肯定能发现大量崩溃的问题。”