CrowdStrike导致大规模系统崩溃事件的技术分析
科技
科技 > 互联网 > 正文

CrowdStrike导致大规模系统崩溃事件的技术分析

01 事件的基本情况和影响

北京时间2024年7月19日中午开始,全球多地用户在X(原推特)、脸书、微博等社交平台反映使用微软系统的电脑出现蓝屏现象,至少20多个国家的交通、金融、医疗、零售等行业或公共服务的业务系统受到影响。其原因是使用CrowdStrike公司终端安全产品的Windows操作系统的主机大面积发生系统崩溃故障,即“蓝屏死机”(Blue Screen of Death,BSOD),导致计算机系统无法正常运行。出现故障的终端并不止限于桌面终端,而是覆盖了大量的服务器和云节点,包括导致了多个重要的微软和AWS的云服务和租户服务中断。而且相关主机重新启动后依然会自动进入蓝屏状态,形成了反复崩溃闭环。

此事件是今年以来全球波及范围最广的信息系统灾难性事件,也是由安全产品自身导致的最大规模的安全灾难事件,其事件带来的后果影响远远超过了2007 年的赛门铁客误杀中文版Windows导致系统蓝屏事件等历史上由安全产品带来的安全事件。北京时间7月19日19时,安天由云安全中心、安全研究与应急处理中心、攻防实验室人员组成混合分析小组,进行了跟进分析,及时将分析研判进展上报管理和应急部门,开发了CrowdStrike_Crash_Fix应急处理小工具,协助求助用户处理威胁,并发布了本分析报告。

CrowdStrike是美国主要的云、终端安全厂商之一,成立于2011年,2024年6月其市值一度接近千亿美元,是全球市值最大的网络安全上市公司之一。其开发的云本地端点保护平台CrowdStrike Falcon,开启了多租户、云原生、智能安全解决方案的先河,结合了下一代杀毒软件、威胁情报、端点检测和响应(EDR)、设备控制、威胁情报搜索和IT安全运营、事件响应和主动服务。平台设置了独立模块用于管理系统漏洞和移动终端检测和响应,还通过跨越多个大型安全市场的SaaS模型提供19个云模块,包括企业端点安全、云安全、托管安全服务、安全和IT运营、威胁情报、身份保护和日志管理等。

就本次事件,CrowdStrike给出的解释是,该公司的终端安全软件“Falcon Sensor”推送的错误的配置更新与Windows系统发生了兼容性问题,导致安装了该安全软件的计算机出现蓝屏情况。后续该公司代表在其客户支持平台回复称公司工程部已确定该问题与其产品的“内容部署(Content deployment)”功能有关,目前已经撤销了错误更新,并在积极调查此事。

这是一起因广泛使用的安全产品故障,导致大量主机系统兵溃,并连带导致大量基础设施系统无法提供服务导致了多米诺效应的事件。该事件造成了美国、英国、澳大利亚、加拿大、日本等至少20多个国家和地区的组织机构的业务系统服务中断,全球多地的航空运输、医疗服务、媒体、银行与金融服务、零售、餐饮等行业或公共服务受到了影响。

表1 受到影响的行业领域、国家地区与相关机构

涉及领域

相关机构

航空运输

美国、澳大利亚、英国、荷兰、印度、捷克、匈牙利、西班牙、中国香港、瑞士等部分航空公司出现航班延误或机场服务中断。美国达美航空、美国航空和忠实航空宣布停飞所有航班。

媒体通信

以色列邮政、法国电视频道TF1、TFX、LCI和Canal+Group网络、爱尔兰国家广播公司RTÉ、加拿大广播公司、沃丰达集团、电话和互联网服务提供商Bouygues Telecom等。

交通运输

澳大利亚货运列车运营商Aurizon、西日本旅客铁道公司、马来西亚铁路运营商KTMB、英国铁路公司、澳大利亚猎人线和南部高地线的区域列车等。

银行与

金融服务

加拿大皇家银行、加拿大道明银行、印度储备银行、印度国家银行、新加坡星展银行、巴西布拉德斯科银行、西太平洋银行、澳新银行、联邦银行、本迪戈银行等。

零售

德国连锁超市Tegut、部分麦当劳和星巴克、迪克体育用品公司、英国杂货连锁店Waitrose、新西兰的Foodstuffs和Woolworths超市等。

医疗服务

纪念斯隆凯特琳癌症中心、英国国家医疗服务体系、德国吕贝克和基尔的两家医院、北美部分医院等。

……

……

主要受到影响的领域,更多详情见 附录二:受到影响的组织机构清单 。

本次事件对国内政企机构影响较小,主要由于CrowdStrike是对中国大陆禁售产品,国内主要相关外资企业和部分使用微软数据中心的企业部分受到此次故障影响了相关业务。如国内希尔顿酒店集团旗下的上海康莱德酒店,其入住和退房服务受到了影响。

当然,这也给小组的分析工作造成了障碍。

02 应急解决方案

2.1 手动删除带有问题的文件(原厂方案)

CrowdStrike公司的业务支撑体系是高度在线化的,其在仅由注册客户可见的网页发布了解决方案,非其客户无法访问,但有受影响的用户公开分享了该官方解决方案:

1.将Windows重启至安全模式或恢复模式,或用WinPE启动;

2.打开

“%systemroot%\System32\drivers\CrowdStrike”文件夹;

3.删除其中文件名为“C-00000291*.sys”(*表示任意字符)的文件;

4.正常重启系统。

以下为更完整的事件说明及解决方案,对于公有云等类似环境的用户可通过下图中“备份并挂载磁盘到临时虚拟系统”的方法对错误文件进行处理。

同时,对于使用了BitLocker卷加密的用户,需要准备好恢复密钥,再进入安全模式进行操作。

图2‑1 事件说明及解决方案

2.2 小工具CrowdStrike_Crash_Fix(安天发布)

安天CERT在7月19日晚发布了临时处置小工具CrowdStrike_Crash_Fix,已经上传至安天垂直响应平台(https://vs2.antiy.cn/)。可将Windows重启至安全模式或恢复模式后,使用该工具一键处理异常文件。根据受影响用户的反馈,该工具可以显著节省处置所需时间。(当前工具更新至V0.5版本,已经支持基于WinPE介质启动后的处置)。

图 2‑2 安天临时处置工具CrowdStrike_Crash_Fix

03 事件的技术分析

3.1 CrowdStrike 的工作机理解析

CrowdStrike Falcon Sensor 是非常典型的具有内核(驱动)级主防的EDR产品,其在Windows平台下安装/预装后,将对应程序文件安装到%ProgramFiles% \CrowdStrike指向的目录下,而将其驱动程序和重要的数据文件安装到%SystemRoot%\System32\ drivers\CrowdStrike 目录下。其主要的防御能力来自于多个系统内核驱动模块。其中CSBoot.sys是Windows 操作系统的提前启动反恶意软件(ELAM)功能模块(利用微软接口实现安全软件要比恶意代码先行加载以保证引导链安全的机制);CSFirmwareAnalysis.sys是固件安全模块;CSAgent.sys是主防护的核心功能模块;cspcm4.sys为策略解析模块。加载的先后顺序依次为CSBoot.sys、CSFirmwareAnalysis.sys、CSDeviceControl.sys、CSAgent.sys、cspcm4.sys。

表3-1 CrowdStrike的主要驱动程序模块列表

分类

文件名

描述

应用程序

CSFalconService.exe

主要的服务进程

CSFalconController.exe

后台控制程序

CSFirmwareAnalysisSupportTool.exe

固件分析工具

CSDeviceControlSupportTool.exe

外部设备管控

驱动和内核模块

CSBoot.sys

操作系统的早期启动反恶意软件(ELAM)功能模块,用于保护驱动程序加载

csfirmwareanaltsis.sys

固件安全模块

cspcm4.sys

内核注册回调接口模块,为CSAgent.sys提供回调接口

Config.sys

管理策略配置的模块

CSAgent.sys

主要的功能模块,它包含文件过滤、网络过滤、进程管控

CSDeviceControl.sys

USB设备过滤驱动

发生蓝屏的模块CSAgent.sys是其主要的功能模块,该模块带有CrowdStrike和微软的双重数字签名。根据安天攻防实验室的初步分析,它包含文件监测、运行监测、网络过滤等功能,是其主动防御和主机防火墙的核心驱动。基本的运行原理是:驱动程序加载后首先读取策略配置,根据策略对文件读写、进程加载、内存执行、API调用、网络访问等动作,做出放行与阻止操作;优秀的主机安全软件为了快速敏捷的对抗威胁,即时更新防护能力,往往都支持在线分发、可动态接收、即时解析生效下发的策略,这样可以灵活变更配置处理突发事件而不用重启系统,CrowdStrike就使用了这种机制。但由于驱动程序直接调用系统内核接口,模块的稳定性对系统内核会有直接影响,可能是由于某个不当的策略配置,在解析执行策略时,未能正确处理好和系统间的同步机制或者是系统资源分配不当,造成系统死锁问题,引发蓝屏保护。

3.2 对相关文件格式和机理的分析猜测

该事件中“蓝屏”故障的错误代码为“PAGE_FAULT_IN_NONPAGED_AREA”,蓝屏信息中出现错误的驱动程序为“CSAgent.sys”。结合官方处置建议中删除“C-00000291*.sys”文件的处置方案,可以明确判断本次事件直接原因是由于“CSAgent.sys”加载和解析使用存在错误设定的“C-00000291*.sys”文件所致。

与CSAgent.sys 等驱动程序相同目录下(%Windows%\%System32%\drivers\CrowdStrike),存在多个文件名前两个字母为“C-”,且均以sys为拓展名的文件,我们需要严肃指出:这些C-*.sys命名的文件并不是驱动程序文件,网上对本事件一些分析中,将这些也称为系统文件或驱动程序文件,有望扩展名生义的错误。Windows中sys为扩展名的系统文件(或称为驱动文件),格式上是以|4D 5A|为文件头的PE可执行文件,例如发生崩溃的CSAgent.sys就是一个PE文件,而在对应目录下以“C-“为统一开头的“sys”为扩展名的文件,应是一类自定义格式的数据文件。这些文件均以|AA AA AA AA|为文件头,并不具备执行能力,或者至少不具备在系统下直接执行的能力。在CrowdStrike所公布的信息中,将这些文件称为“通道文件”(Channel Files),声明其是 Falcon Sensor的配置文件,用于CrowdStrike防御机制的日常更新。因此可以基本判断相关文件主要类似规则/策略/基线的数据文件。

这些“通道文件”以C-xxxxxxxx-00000000-xxxxxxxx.sys格式进行命名,其文件第一个字符C,含义推测为CrowdStrike的首字母。随后有三个阿拉伯数字节,每节长度均为8位,其中第一节数字为通道号,转换为16进制后与文件中的固定偏移0x6处数值对应;采集到的全部文件的第二节数字值都固定为0,故只能猜测其与固定偏移0xC处数值(所有数值亦均为零)对应;第三节数字值转换为16进制后与文件中固定偏移0x10处数值相对应。

图3-1 事故对应的通道文件的文件头与其中的值和文件名的对应关系

由于相关产品机理复杂,尚未能判断这些通道文件具体的功能。对文件内容观测,判断文件经过了一定的编码变换,但似乎未使用分组算法进行加密。我们分析了文件的命名规律,含义猜测如下:第一节数字即通道号,是为其规则/配置库编号,而且设定了对应的值域范围对应的规则/配置分类,第二节为保留段,第三节为对用的规则/配置库更新的次数(即版本)。

图3-2 C-系列文件的类型序号(猜测)和更新次数(猜测)关系分布

图3-3 C-系列文件的更新次数(猜测)与文件大小的关系

基于以上两个统计分析,我们可以看到管道号是按照值域部分连续分布的,而相对大的文件,我们猜测为更新次数的数值越大,基本验证我们对于文件命名规则的猜测是有依据的。

CrowdStrike对于相关漏洞的官方解释为:

此次涉及到的 以“C-00000291”作为文件名开头、 “.sys”作为扩展名的文件属于配置文件,也被称作“Channel Files”。这些文件是Falcon Sensor行为防护机理的一部分。这些文件在日常运营中根据CrowdStrike 监测到的每日威胁技战术情况,一天会更新若干次。

文件以C开头,每个“通道文件”被分配了唯一的编号作为标识。此次造成影响的是291,相关文件以“C-00000291-”开头,用“.sys”作为扩展名。虽然使用驱动文件的扩展名,但这些文件不是驱动程序。

291通道文件,控制Falcon对Windows上的“命名管道(Named Pipe)”执行动作进行评估。“命名管道”是常用技术,通常在Windows环境中用于进程间通信或系统间通信。

该文件的更新发生在UTC 时间 04:09,由新监测到的网络攻击C2框架中使用的恶意命名管道触发。但由于更新中触发了一个逻辑错误,导致了操作系统崩溃。

安天分析小组对此进一步推测291文件中包含了关于命名管道相关的攻击的检测和拒止规则,其针对的攻击可能包括命名管道枚举、命名管道提权、命名管道伪造等攻击。我们也在分析微软本月补丁中与管道漏洞是否有关,以及近期公开的漏洞是否是这次“失败的更新”的肇始。

3.3 复现分析相关问题的努力

由于CrowdStrike公司禁止中国大陆的地区下载相关产品,因此在出现事件后,分析小组只有相关软件的早期版本。安天攻防实验室依托较为有限的资源,将获取到出现问题的sys文件进行组合进行分析。但由于分析环境的限制,目前并未实现稳定的漏洞复现。

图3-4 安天攻防实验室复现CrowdStrike驱动未正确处理系统同步导致蓝屏

图3-5 安天工程师对CSAgent模块的双机调试分析

3.4 技术判断

该事件的直接原因已经比较清晰,是广泛安装于大量Windows主机的CrowdStrike产品的CSAgent.sys模块所加载利用数据配置文件C-00000291*.sys存在问题,导致的系统崩溃。

此前也有声音怀疑问题是否由微软的补丁发布导致,但根据目前的各方公开的信息梳理。CrowdStrike已经承认问题来自于UTC时间7月19日 04:09其发布了用于管控命名管道的配置更新即C-*291.sys,立即导致了,微软Azure云上的Windows虚拟机开始发生此类重启和崩溃问题。至UTC 时间 05:27 CrowdStrike撤销了此更新,此后启动的主机将不受影响。基于上述时间过程,整体可以认为CrowdStrike方面已经确认了事件来自自身。

从长期的外部印象来看,CrowdStrike长期面对复杂的主机和工作负载场景、有广泛的客户部署、产品需要面对西方军政机构客户、国际大型企业客户的严格品控要求,因此起测试和品管体系因该是比较完善的,而与操作系统的兼容性测试必然是其重点。但无法验证其测试体系是否能细粒度到达每一次规则策略更新,并能坚持灰度分发和监测/回滚等策略。这起事件究竟是“黑天鹅”,还是“灰犀牛”。究竟是其检测发布机制依然存在重大流程问题,还是因为特定原因出现了一个“黑洞式”的时间差,还需要等待更多信息公开判断。同时我们也需要继续关注分析这是否是一次巧妙的供应链预制攻击事件。

04 对“猎鹰折羽”事件的反思

1、事件源自供应链攻击的可能性依然不能排除,且至少昭示了一种新的威胁样板:虽然CrowdStrike给出了对本事件的官方解释是这不是一起网络安全事件,而是一起质量事故。但我们依然认为仅凭现有信息不能排除这是一严重的安全软件供应链攻击事件。由于安全产品在防御体系中往往处于关键位置,如:网络边界(如安全网关)、实时监测(如主机杀毒和防护软件)或业务流程之上(如身份认证),因此攻击安全软件,特别是攻击安全软件的供应链体系,有可能产生比攻击应用软件或应用软件供应链更为严重的后果,SolarWinds的供应链攻击让我们看到了入侵开发环境大范围建立下游横向移动桥头堡的可能,而本次事件从后果上昭示出了利用安全软件供应链达成大范围崩溃瘫痪的风险。而这种构造可以完全不依赖于注入代码,而是可以利用安全产品对配置、库、数据的解析机理,通过解析错误或者流程异常,导致崩溃或DoS的后果。

2、正视主机和工作负载的安全是网络安全的基石型需求:此次事件是CrowdStrike在全球庞大的装机规模与Windows系统作用耦合的结果。但我们不应只将目光聚集在事故本身。更需要看到主机系统侧威胁检测防御能力是必须强化建设的刚需环节。CrowdStrike飞速发展的基础,正源自先进计算架构的崛起导致的源自传统安全边界的失效,安全对抗从聚焦于网络检测和拦截的御敌于城门之外,转入必须全面应对主机系统侧的恶意代码、混合执行体攻击、漏洞组合利用和社工钓鱼的深水区。

随着数字化转型、资产云化、泛在接入和加密协议的普遍使用,防火墙、网闸等传统访问控制边界或数据交换边界已经全面塌陷,安全的基石正在重回主机系统一侧,系统安全能力即需要跟随现代计算结构的延展在云主机、虚拟化、容器中延展,也需要进一步强化传统终端、工业和专用场景工作站、移动设备等提供安全防护。现代防御体系既要构建出防御纵深,也必须构建网状的联动体系。让每一个主机和工作负载系统的单点防护能力形成组织和弹性,实现攻击者攻击一点即被感知,其载荷、战术将快速被捕获转化为情报共享,快速形成其他节点的防御能力。正是在这个大趋势下,国际传统的Big AV企业依托在恶意代码检测和内核主防的深刻积累,继续保持自己的强势存在。更使CrowdStrike实现了快速的发展崛起。

而本次事件的关注点,不应仅仅放在安全产品自身安全性这一视角上。而更要关注我国长期存在的,不够重视主机系统侧安全能力建设、缺乏投入而带来的低效防护问题才是我们面对的显示问题。一些场景下,现实场景下是终端系统感染式病毒、蠕虫、宏病毒事件此起彼伏,而规划中却又在讨论着未知检测、APT防护和人工智能。部分主机安全产品缺少可靠的恶意代码检测能力,为降低成本,普遍采用检测能力严重不足的开源反病毒引擎ClamAV;甚至忽视供应链风险,在没有商业授权下,直接二进制嵌入国外反病毒引擎。部分产品缺少有效的驱动防护和阻断机制,只能通过少数Ring3 HOOK采集信息,基本无法看到隐蔽攻击行为。在主机配置加固方面,很多产品只能管理几十个配置点,而相比之下,美方STIG的安全规范,平均每种操作系统的安全配置点已达600多个。

面对这种差距,对CrowdStrike开启嘲讽模式是没有意义的,反而应该正视在主机安全侧普遍存在的防护缺失问题。安全防护能力必须在系统侧持续强化,必须构建最小化的安全边界,堆砌盒子的方式越来越难以达成防御价值,伴随先进计算架构,将系统安全和威胁检测能力深度融合才是安全的未来。

3、安全产品,包括安全产品的研发环境和全生命周期需要被高度重视:由于应用软件和平台具有更高的用户可见性,关系用户业务连续性,因此网络管理者往往更关注应用软件特别是平台系统的更新测试和部署流程。而安全软件为对抗威胁,对抗部署后的能力衰减,需要更高频度的升级,类似病毒库需要高频的升级,策略库、漏洞库也需要更新迭代。由于这些升级,基本上都在后台自动化运行,往往容易成为自身测试的盲点,客户侧场景下的黑箱。由于安全产品具备安全功能,容易给用户带来信任感,但安全产品的安全功能和安全产品本身的安全的并不等价,如果安全厂商不重视自身的产品的安全性,越多的功能则会带来更大的不安全。但与此同时,也建议用户,不因为本事件对能力升级带来过度恐慌,从而拒绝升级。安全软件如果不能及时升级,会导致相对威胁演进,监测防护能力快速衰减。这就给攻击突防带来了更大的机会窗口,全面提升攻击者的成功率,导致用户在规避偶然性风险的同时,导致了必然性风险。

4、驱动级主防是必须的,但需要更加可靠健壮安全:从物理主机到虚拟化的防护来看,尽管出现了这样重大的安全事件,我们依然坚信驱动级主防是必须的。基于驱动和内核模块进行安全防护虽然确实有更大的导致系统可靠性的风险,但内核级防护的安全稳定性,应通过更自动和全面的测试等来保障,而非因噎废食。如果没有内核级的主防,仅靠Ring3层面的HOOK和采集点,不但几乎很难拦截和阻断威胁,甚至无法实现有效的威胁感知,并可能很容易被攻击者删除或卸载。这种防护虽然一定程度上降低了系统出现底层故障的风险,但却将客户场景带入到随时可能被攻击者击穿的状态中。系统安全产品的Agent应实现更好的积木化,可以根据用户的防御能力和资源利用情况,让用户在底层防护、或轻量监测中可以选择,而不是借此放大用户对驱动级主防的恐惧感,而将用户引入弱防御的风险境地。当然我们也同样认为驱动级主防的设计、实现和规则运营,必须高度谨慎,要将尽可能多的威胁拦截在运行之前,而尽量避免进入到内存对决状态,这也是我们执行体治理理念的重要导向。

5、现代计算结构有可能进一步从虚拟化向容器前移:在工作负载的解决方案中,虚拟化方案是相对较重载的,一旦出现底层安全问题,则难以修复。例如本次事故中的公有云虚拟机即使重启后,也会再次蓝屏,因无法连接远程桌面,也自然无法采取进入安全模式的方式恢复。相比来看,容器+金丝雀发布的组合,则相对能减少更新/部署故障。预测在本次事件后,除数据中心和边缘云外,独立工作负载使用容器技术的进程,会大幅提速。而虚拟化支持相对不够理想的信创架构来说,是一个利好。但与此同时,简单的依托物理主机安全平移到虚拟化中来支撑云解决方案的传统端点安全厂商,则面临难以满足容器安全需求的新挑战。始终跟随先进计算架构的演进、防护先进计算架构,是安全厂商基业长青的重要保障。

6、我们没有心存侥幸的资本:美国寡头资本和政客竭力在网络安全问题上反复抹黑中国,推动中美脱钩,持续在中美网信产业间制造裂痕,这使网络安全产业已经不可逆的在走向阵营化。特别是CrowdStrike反复参与抹黑中国的活动,在面对本次重大全球事件中也显示出冷漠和傲慢,让我们对其有很大的反感情绪。但我们依然认为,虽然发生了如此严重的事件,不能掩盖CrowdStrike在产品研发和运营层面有着超强实力,其依然是国际最优秀的安全企业之一。安天作为同样以恶意代码检测分析为能力基本面、以平台+AI赋能为运行支撑、以主机系统侧安全为基石场景的安全企业,面对国际同行的发生重大事件,我们没有幸灾乐祸的资本,而必须将本次事件视为产业的共同教训。系统安全是一种和保护对象深度耦合的产品形态,我们将保持对用户场景更深的敬畏。而对中国网络安全产业来说,这一次灾难发生于身外,并非说明我们通过了“大考”,只能说:真正需要我们应对的风险,还潜伏在不远的未来。也相信投身系统安全的同仁们都勇于积极应对系统安全面临的巨大挑战,致力于研发创造和运营先进安全能力。我们不应因高水平驱动和内核模块防御有极高稳定性、可靠性要求而退缩,转而炒作轻量级Agent等概念;不应因强化自身防御环境和全声明周期的代码安全需要巨大投入而躲避必须的建设成本。更不应事不关己、自我标榜,甚至兴灾乐祸;对我们自己来说,从别人的事件中找到我们自己的改进点,在继续提升系统侧安全能力和防护效果的同时,持续强化自身的安全左移、协助客户完善能力分发运行流程,才是负责任的网安企业必须担当的责任!

而从另一个角度看,国内政企机构有庞大的Windows主机用户基数,能在这样的大规模事件中几乎未受到波及,正说明中国网络安全产业和技术自立自强的重大意义。虽然中国网安产业体系在市场尚未充分发育时,陷入了低水平、过饱和竞争的焦灼状态,但在发展新质生产力征程中,我们必将成长为具有决定性的强大产业力量。

亲爱的凤凰网用户:

您当前使用的浏览器版本过低,导致网站不能正常访问,建议升级浏览器

第三方浏览器推荐:

谷歌(Chrome)浏览器 下载

360安全浏览器 下载