CrowdStrike官网
从早期的防毒软体到现在的EDR软体,这些防护端点设备的资安软体,早成为个人电脑使用者与骇客对峙的第一线战场。日前资安软体CrowdStrike因为EDR软体更新出包,引发全球约850万台微软电脑,出现蓝色当机画面(BSOD)的资安事件。
事件爆发初期,因为不确定是什么原因引发的蓝色当机画面,微软第一时间出面致歉后,也才追查出应该与CrowdStrike的EDR更新出包有关。在调研公司IDC针对EDR产品市占中,CrowdStrike更是经常位居第一,加上美国重要财星前五百大公司都安装该产品,这也使得CrowdStrike因更新出包造成蓝色当机画面一出现后,瞬间成为全世界的头条新闻。
真正的原因,还是必须等CrowdStrike完整调查并公布后,才可能有进一步的了解,不过,根据对微软作业系统安全有研究的匿名资安专家的推测,CrowdStrike之所以更新出错,原因在于挂载设计不良的特征码包,导致作业系统核心的驱动逻辑出现问题(Parser解析逻辑不良),所以会误用不存在记忆体的指标null-pointer读取内容,造成BSOD蓝色当机画面。
这次事故发生之后,也引发其他的讨论,例如,作业系统是否应该允许资安产品拿到高权限?有台湾资安业者对此持肯定态度,他们认为,若要侦测到恶意程式的运作,这类端点防护产品就必须对作业系统拥有更高的权限,才可以更早拦截到恶意程式的运作。
CrowdStrike的病毒特征码设计不良
对微软作业系统安全有研究的匿名资安专家表示,若用户安装CrowdStrike Falcon EDR,会在作业系统核心(Kernel)层级,挂载执行核心驱动程式csagent.sys模组,负责做地端恶意程式的监控。他指出,这个模组为了有效监控用户模式下恶意行为,因此,在电脑的磁碟会有病毒特征码。
他进一步解释,在Falcon EDR的架构下,CrowdStrike把病毒特征码称做「Channel Files通道档案」,其文件部署于System32driversCrowdStrike的资料夹;其中,通道文件(即病毒特征码包)习惯以C-00000[ID]-[xxxxx].sys的格式存放在CrowdStrike资料夹内。
他以这次出包的病毒特征码包「C-00000291*.sys」为例,便是Falcon用于侦测恶意程式Named-Pipe滥用行为的特征码包——常见像是骇客工具C&C(命令与控制伺服器)对骇客伺服器通讯使用的domain,或者其他命名管道名称,都由这个特征码库进行匹配与查杀。
类似的部分在于,csagent.sys挂载此结构异常设计不良的291特征码包,导致核心驱动逻辑出现问题(Parser解析逻辑不良),所以误用不存在记忆体指标null-pointer读取内容,导致蓝色当机画面(BSOD)。
端点防护产品跟作业系统深度结合才能提早侦测
台湾资安公司杜浦数位执行长蔡松廷(TT)坦言,类似CrowdStrike更新出包的意外,是所有端点防护公司都可能发生的,以前大家用防毒软体来保护端点时,也都有类似情况,像是更新后元件造成系统当机不稳定,也可能因为资安系统耗掉所有的电脑资源。
蔡松廷说,不管是防毒软体或是EDR产品,要做到端点的防护,必须进入核心的运作,才可以做到即时阻挡恶意程式的运作,这些通常会有一个到多个的核心驱动程式,「一旦核心不稳定或有问题,最直接的反应就是当机,而每次只要电脑一开机,就会启动防护功能,如果不清楚驱动程式不稳定的原因,最有可能、最差的状况是:启动所有端点防护功能时,都会出现当机状态。
他也解释,这些端点安全防护软体必须和作业系统有很深的捆绑,有其必要性,因为如果这些端点防护软体与作业系统核心底层能有更深的连结,有足够高的权限,就可以更早拦截到恶意程式;假使无法进入作业系统的核心,就等于跟恶意程式运作在同样的层级,而且,端点防护系统倘若无法侦测到恶意程式,就会被恶意程式制约。
从这起事件中,蔡松廷更意识到,这类端点防护系统的核心程式开发,一定必须小心再小心,重复经过各种验证程序后,才能避免发生类似的意外。他也说,这次CrowdStrike造成的EDR更新出包,必须要手动进入安全模式后才能处理,倘若公司有成千上万的个人电脑端必须手动处理,将可能会影响到公司的营运,不得不慎重。