一次配置更新瘫痪850万台电脑,CrowdStrike蓝屏事件全记录

2024年7月25日 · 行业动态

一个清晨,世界停摆

2024年7月19日,UTC时间凌晨4:09,CrowdStrike作为常规操作的一部分,向全球Windows版Falcon传感器推送了一次传感器配置更新。几分钟之内,灾难开始了——从澳大利亚的银行和航空公司开始,随后随着欧洲上班时间的到来迅速蔓延,全球数百万台Windows电脑同时显示蓝屏死机(BSOD),陷入无法恢复的启动循环 (CrowdStrike)

这不是一次网络攻击,也不是零日漏洞利用。导致全球瘫痪的,是CrowdStrike Falcon平台上一个单一的配置文件更新缺陷

CrowdStrike CEO George Kurtz在约90分钟后通过X平台公开回应,明确表示"这不是安全事件或网络攻击",问题已被识别和隔离,修复已部署 (Fortune) (CrowdStrike)

Channel File 291:从防护到崩溃

CrowdStrike Falcon平台通过内核级驱动程序(csagent.sys)运行,在Windows启动过程早期加载,实时拦截系统调用并监控恶意行为。正因为运行在内核最高权限层级,Falcon中的任何代码缺陷不会仅导致应用崩溃——它会让整个操作系统崩溃 (god.ad)

Falcon传感器接收名为Channel Files的快速内容更新——这些不是完整的软件更新,而是小型二进制配置文件,定义威胁检测规则和行为模式。Channel Files每天可能推送多次,旨在无需完整代理升级或系统重启的情况下更新传感器的检测逻辑。由于被当作配置而非代码处理,它们历史上绕过了完整传感器更新所需的分阶段部署和全面QA流程 (god.ad)

这次出问题的是Channel File 291(文件名以C-00000291开头,以.sys扩展名结尾)。该文件负责Falcon如何评估Windows系统上命名管道(Named Pipe)的执行——命名管道是Windows中常见的进程间通信机制,也是攻击者横向移动时常用的C2框架通信方式。04:09 UTC的更新针对新发现的恶意命名管道活动而设计 (CrowdStrike) (36氪)

越界读取:20与21的致命不匹配

7月24日,CrowdStrike发布了初步事后审查报告(PIR),揭示了更深层的技术根因。

问题出在IPC Template Type验证错误上。新的Channel File 291版本中定义了一个IPC模板类型,要求21个输入参数字段。然而,传感器代码在运行时仅提供了20个数据输入。当传感器接收并加载有问题的内容到内容解释器(Content Interpreter)中时,代码尝试访问第21个输入参数值,超出了输入数据数组的边界,触发了越界内存读取(Out-of-Bounds Memory Read)。由于无法优雅处理这一意外异常,Windows操作系统崩溃,触发PAGE_FAULT_IN_NONPAGED_AREA蓝屏错误 (CrowdStrike PIR) (环球网) (TechTarget)

受影响的系统包括运行Falcon传感器7.11及以上版本的Windows 10和Windows 11主机。Mac和Linux主机不受影响。在04:09 UTC至05:27 UTC之间在线并接收到更新的Windows主机受到影响。CrowdStrike在05:27 UTC修复了有问题的内容更新——但此时,全球数百万台设备已经蓝屏 (CrowdStrike)

手动修复的噩梦

与大多数软件故障不同,这次事件的修复无法通过远程推送补丁完成。受影响的设备陷入启动循环——每次开机都会加载有问题的Channel File并再次蓝屏。唯一的修复方式是手动操作

  1. 进入Windows安全模式
  2. 导航至C:\Windows\System32\drivers\CrowdStrike\目录
  3. 删除以C-00000291开头、匹配故障时间戳的.sys文件
  4. 重启计算机

对于管理数百或数千台设备的大型企业,这意味着IT团队需要逐台手动操作。CrowdStrike拥有约24,000家客户,其中大多数是大型企业——许多组织管理着数百万台端点,完全恢复可能需要数天甚至更长时间 (Hedgehog Security) (Forrester分析师)

CrowdStrike的响应时间线如下:约4小时内发布技术公告,约8小时内CEO发布视频声明,24小时内发布完整修复指南 (CrowdStrike) (CrowdStrike)

全球关键基础设施的瘫痪

这次事件的影响远超一般IT故障,直接冲击了全球多个关键行业:

航空业遭受重创。全球约4.1万个航班延误,超过4,600个航班取消。美国三大航——美国航空、达美航空和美联航——一度暂停所有航班起飞。澳大利亚悉尼机场陷入混乱,欧洲多国机场转为人工值机。达美航空(Delta)受影响最为严重,由于其机组排班系统老化,恢复速度远慢于竞争对手,五天内取消了约7,000个航班。达美航空估计其损失至少约5亿美元 (CBS News)

医疗系统被迫中断。多个国家的医院取消非紧急手术,911紧急服务在部分地区中断,医疗记录系统无法访问。

金融业陷入停摆。银行和金融交易平台离线,伦敦证券交易所受影响,客户无法访问账户和完成交易。

其他行业:零售商无法处理支付,政府服务中断,电视广播公司无法播出节目,巴黎奥运会部分系统也受到影响 (亚洲电视新闻)

全球经济损失初步估计超过100亿美元——这使其成为有记录以来最大规模的IT中断事件 (Hedgehog Security)

集中风险:当一个供应商的更新压垮全球经济

CrowdStrike事件暴露了一个深层的结构性问题——集中风险(Concentration Risk)

CrowdStrike Falcon被全球约24,000家组织部署,覆盖航空、金融、医疗、能源等关键基础设施领域。微软、亚马逊AWS等科技巨头也使用其软件。当一个安全产品的内核级驱动程序在全球关键系统中占据如此高的渗透率时,一次更新缺陷就等同于一次全球性基础设施故障 (Hedgehog Security)

此次事件的集中风险效应体现在两个层面:

横向集中:CrowdStrike Falcon在端点安全市场占据主导地位,同一行业的多家关键运营商使用同一产品。当所有航空公司的值机系统同时瘫痪时,没有替代方案可以切换。

纵向集中:Falcon的内核级架构意味着单一故障点的影响被放大到操作系统层面。与运行在用户空间的应用不同,内核驱动程序的缺陷不是崩溃一个进程,而是让整台机器无法启动。

CrowdStrike在初步审查报告中提出了多项改进措施,包括:改进快速响应内容测试流程、实施交错部署策略(而非同时向所有客户推送)、以及进行多个独立的第三方安全代码审查 (CrowdStrike PIR)

安全产品本身的安全悖论

CrowdStrike全球蓝屏事件提出了一个深刻的悖论:安全产品本身就成为了最大的攻击面

这不是安全产品第一次引发大规模故障——但CrowdStrike事件的规模是史无前例的。它超过了WannaCry、NotPetya等此前任何一次IT中断事件的影响范围,而且根本原因不是恶意攻击,而是一次质量控制失败 (Hedgehog Security)

此次事件带来的教训是多维的:

配置更新也需要完整的QA流程。Channel Files被当作配置而非代码处理,因此绕过了完整传感器更新所需的分阶段部署和全面测试。但配置文件同样可以导致内核级崩溃——它们应当被赋予与代码更新同等的测试严格度。

分阶段部署是必需品而非奢侈品。如果CrowdStrike采用交错部署策略——先推送给一小部分客户,观察结果后再逐步扩大——故障可能在影响数千台设备时就被发现,而不是850万台。

内核级软件需要多层级防护。在内核驱动程序中,越界读取不应导致不可恢复的系统崩溃。更健壮的错误处理机制——如将越界访问降级为日志告警而非系统崩溃——可以避免此类灾难。

企业需要业务连续性计划来应对安全产品故障。许多组织的安全架构对单一安全供应商形成了深度依赖,却没有针对安全产品本身故障的应急方案。

一个配置文件中20与21的不匹配,让全球经济停摆了一天。这不是一个关于攻击技术的故事——而是一个关于系统性脆弱的故事。当安全产品成为基础设施时,安全产品本身的安全,就是所有人的安全。


参考来源:CrowdStrike - Technical Details on Today's OutageCrowdStrike - Preliminary Post Incident ReportCrowdStrike - To Our Customers and PartnersCBS NewsFortuneTechTarget/SearchSecurity

← 返回文章列表