一个逻辑错误损失或超10亿美元,微软蓝屏事件带来哪些教训  第1张

  网络安全公司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的角度来看,本次事件中最大的问题是在于推送更新的方式。汪列军表示,这体现出了灰度测试的重要性:“哪怕是对一个环境或是一类客户先推送,肯定能发现大量崩溃的问题。”