蓝屏之囿-终端安全软件开发的困局与破局

互联网
2024
07/25
16:05
分享
评论

本文是iOA-EDR技术系列主打文章的第二篇

作者:腾讯安全专家工程师 聂子潇

一、星星之火可以燎原

2024年7月19日中午,一台台Windows终端悄然染成蓝色。随即,如“蓝色焰海”一般的IT故障在各个国家蔓延开来,迅速席卷全球。无数航班晚点,银行、医疗、金融等行业的IT系统相继出现异常,受到影响的用户们纷纷在X、脸书、微博等社交媒体上报告求助。

image.png

(一位小红书博主在旅途中遇到航司系统宕机,被迫领取了手写登机牌)

起初人们迅速向微软发出问询,但很快就有了进一步进展:事件并非出自系统本身的故障,而是由部分企业安装的一款安全软件功能故障引发。为啥日常电脑上使用的一款软件,竟然有如此的能量和威力去造成这场引起全球关注的IT故障呢?让我们从安全软件的底层工作原理出发,挖掘这次事件背后的“主角”,搞清楚它为什么会有如此广泛的破坏力,以及背后的症结到底是什么。

二、猫鼠游戏诞生记

1971 年,研究员鲍勃·托马斯 (Bob Thomas) 开发出了第一个病毒,称为 Creeper。该病毒通过 ARPANET(第一个计算机网络)传播,感染设备后会显示一条消息:“我是 Creeper,有本事来抓我呀”。随后,电子邮件的发明者雷·汤姆林森 (Ray Tomlinson) 开发了一个名为 Reaper 的程序,试图追踪并消灭 Creeper,这个程序则被视为杀毒软件的起源。 

从这个杀软诞生的故事中不难看出,杀毒软件的工作模式本质是一场猫鼠游戏,恶意程序就好比要偷吃的老鼠,而杀毒软件就是看守的猫,双方你追我赶,老鼠为了逃避猫的追捕,会不断演变自身的伪装和隐匿手段,而猫则需要不断提升自己的火眼金睛,透过层层伪装,抓住躲藏的老鼠。 

双方从定位上来说是敌人,从进化角度来说却亦师亦友,从对抗中相互促进学习成长,仿佛宿命中的相互纠缠的螺旋不断前进。

三、安全软件的难言之隐

1.来自系统内核层的监视之眼

伴随着攻守双方的不断进化,安全软件发展到今天,早已与操作系统紧密结合。只有掌握操作系统最高权限的尚方宝剑,安全软件才能与手段层出不穷的恶意程序斗争。操作系统一般会对运行权限做层次划分:内核代码一般工作在内核层(Ring0),而我们常说的应用程序工作在应用层(Ring3)。内核层享有最高的执行权限,能够访问操作系统上所有的设备和信息,同时一旦内核层发生异常崩溃,整个系统就无法继续运转,进而会出现经典的蓝屏提示。而应用层则只能访问应用本身的一些常规权限资源,即使出现崩溃也只会影响自身软件进程,对操作系统不会产生影响。

现代的安全软件往往都会在内核层安装自己的安全模块(也有部分低级别的安全软件没有内核模块),从而基于内核层的最高权限,实现“上帝之眼”的效果,监视整个操作系统上每时每刻发生的不同类型的事件。安全软件24小时不间断地分析和比对这些事件,进而过滤出潜在威胁,将事件及时的阻断和扼杀,通过审核模式的工作原理,来实现保卫操作系统的安全。

image.png

(操作系统不同层次的运行权限)

2、安全软件的终端架构

一个完整安全软件的终端架构,从核心功能角度来划分,大部分都具备以下一些安全模块:首先,工作在系统最高权限层的内核模块,一般负责与系统内核接口打交道,获取系统第一手的实时日志信息,类似于情报收集部门的职能。

同时,由于该模块在内核层有最高权限,可以在系统执行层面第一时间阻断恶意攻击,因而也会承担一部分阻断恶意攻击的职能,实现恶意攻击的事前阻断能力。

其次,应用层的策略审核模块,类似安全指挥部门,负责审核内核模块采集到的实时日志,将日志上报到云端后台,同时对于一些审核有威胁的日志,按策略配置进行响应处置。

image.png

(内核模块与策略审核模块的职能划分)

3、如履薄冰的系统审核员

从上述安全软件的终端架构中,不难看出,安全软件已经演变为操作系统上的一切行为审核员,拥有行为的最终解释权。

但所谓权力越大责任也就越大,安全软件拥有操作系统的核心审核权,一旦权力使用不当就会带来难以预期的后果。例如审核错误阻止了合法的行为,可能导致系统软件异常失败;审核速度过慢,可能导致系统和软件运行卡顿;审核过程中错误修改或影响了合法行为的属性,也可能导致系统异常或软件错误。在此之上,即使审核员的操作完全合规正确,但动作本身如果出现编程错误,还是会造成系统蓝屏的严重风险。如果故障发生在内核启动阶段,还会造成重启后继续蓝屏,也就是我们常说的无限循环蓝屏的更严重问题。

可以说,安全软件借助系统的最高权限来防范攻击,但也因为最高权限的便利性带来了重大的责任风险。安全软件扮演的系统审核员,必须对每一步都要做到战战兢兢,如临深渊,如履薄冰。

image.png

4、难以平衡的攻守矛盾

正因为这份如履薄冰的责任,安全软件与恶意程序的对抗才会如此周而复始持续这么多年。安全软件需要恪守不影响系统稳定性的底线,导致在与恶意程序的对抗中畏首畏尾。这也是安全软件无法创造出一个大杀器来彻底结束这场攻防对抗“猫鼠游戏”的核心原因。

其背后的本质,是安全软件既要保证系统上的合法行为不受到影响,又要避免不法威胁行为潜藏在合法行为中偷偷潜入,这是一场解不开的天然矛盾。任何对伪装者的检查和判定,都必然导致对合法行为进行相同的盘问,从而产生产生额外的执行开销。要求安全软件既做到铁面无私(对待恶意攻击),又做到柔情似水(对待合法行为),恰恰是安全软件当前面临最大的难点和矛盾,也是安全软件安身立命的根本。

四、腾讯iOA-EDR实践之路

1.防守之路上三岔口发展到今天,安全类产品百家争鸣,争奇斗艳,但万变不离其宗,延续上面的攻守矛盾观点,安全软件整体的发展犹如一个三岔口。

第一条路是以攻为守,以极客精神的思路主导,崇尚以对抗恶意程序的本职为第一目标,整体架构优先围绕对抗恶意程序来设计。这种架构在海外的安全产品中较为常见,将安全软件的功能模块更多集成到系统的内核层,优势在于能够在第一现场快速响应和对抗恶意攻击,并且整体对抗更加集中和高效、简洁。

第二条路是全面防守,稳字当头的思路主导,整体架构完全不进入内核层,只使用系统本身的安全接口来与恶意程序对抗。这类架构一般出现在辅助采集类的安全产品上,架构的优势很明显,极大降低了对系统稳定性和兼容性的影响,但随之而来的问题是在与恶意程序的对抗上捉襟见肘。

第三条路,是选择一种攻守兼顾的架构,既要保证拥有内核层的核心能力,又尽可能降低对核心层的依赖,让内核层功能纯净简单,把大部分功能逻辑放在应用层模块上。这种架构的优势则比较平衡,既保证安全能力能够对抗恶意程序,又一定程度上兼顾了系统的稳定性和兼容性。如何在三岔口进行权衡,是这个架构最为混沌和复杂的地方。

image.png

(三种不同的防御策略)

2、千里之行始于“踩坑

腾讯EDR以腾讯二十多年的深研发展为基石,经历过C端海量用户,也在B端市场摸爬滚打,踩坑和挨打的经验难能可贵。一个成熟的产品背后往往是无数个填坑的日日夜夜,系统蓝屏、兼容性故障、电脑卡顿、软件异常、抢修大大小小的事故,这些都是安全软件的必修课。我们意识到,安全软件的第一道坎不是安全能力,而是保障用户的使用体验和避免故障。我们不断累积兼容性处理方案库,是因为通杀型解决方案虽然可以极大降低故障的影响范围,但依然需要大量长尾的针对性解决方案,只能靠时间和量级的沉淀来收获最终的稳定。

3、最小化原则架构

安全软件的稳定性保障一直是我们的重中之重。因此,腾讯安全EDR没有采用海外产品偏好的强内核功能架构,而是采取攻守兼顾的架构原则。整体架构的设计原则,是在满足恶意程序对抗的前提下,最小化使用系统底层权限,最大化保证系统的稳定性和兼容性。

整体架构依旧分内核和应用层两层,在内核层中的模块以最小化原则来设计,只做系统底层接口能力的扩展封装,不做逻辑和策略的执行。整个产品功能的策略逻辑的实现,则都放在应用层来指挥,内核层完全融合为系统底层的接口扩展,不承担业务的策略逻辑执行。这样的架构在内核层面极致简洁,不需要因为功能迭代经常变更,更容易打磨稳定后持续提供能力,能够最大限度保障稳定性的要求。而与安全对抗的变更部分都在应用层的策略模块,这样产生故障的时候,不容易出现蓝屏或者系统层面的故障,以及和软件产生兼容性问题。

内核模块层面也尽可能极致降低权限依赖,采取纯异步采集模式(旁路模式),接受到系统通知的第一时间就发送旁路日志消息到工作队列中,后续功能流程即可避免对系统和软件产生影响。该架构准则同样也应用到了应用层的进程注入采集功能上。

另外一种影响安全软件兼容性的功能是进程注入类的采集功能。该功能往往应对一些高级复杂威胁,需要采集系统的API调用序列来识别恶意风险。腾讯EDR在进程注入采集上也是执行的最小化原则,首先范围层面最小化,只注入可疑的入侵进程,不影响系统和常用软件进程。第二采集层面纯异步化,采集数据后第一时间旁路,尽可能降低对原进程的影响。

image.png

(腾讯安全EDR和在系统中的设计原则)

4、更进一步智能采集

采用最小化安全架构,腾讯安全EDR从根本上降低了对系统稳定性和兼容性的影响。但架构只是影响稳定性和兼容性的一环,如何采集和执行策略逻辑也会对结果产生关键影响。逻辑的错误或者不适当可能造成CPU持续高企、使用不流畅等系统层问题。

因为终端采集会被动采集系统上所有的行为,一旦系统上某些服务软件在进行极其频繁的操作,就有可能导致安全软件的采集模块突然高频工作,继而诱发一些性能层面的卡顿。这时需要采集的策略模块足够智能和自适应去规避这些场景的发生。

腾讯安全EDR在采集策略层面,使用的是基于行为可疑度过滤方案,即在终端架构中内置了腾讯自研的行为链关联引擎,能够将终端上发生的多个同源行为串成一个执行链。通过对完整的同源执行链进行可疑度判定,依据执行链的来源渠道、文件的云鉴定信息、文件的签名信息,以及是否关联脚本、压缩包信息等等加强判断的准确度。

举个例子,两个行为链,一条是从浏览器下载压缩包,解压释放文件,进而启动脚本进行网络访问,那么该链上的所有文件都会被追踪标记来增强采集策略,而对于系统进程或常用软件进程释放和执行的一些行为链,则减弱采集策略。这样可以极大降低对合法系统和软件的采集力度,降低CPU和性能开销。而当有真正可疑威胁进入的时候,安全软件会开足马力重点监控采集数据,犹如在终端拥有一个经验老道的安全专家做指挥,做到指哪打哪,有的放矢的智能安全架构。

image.png

(腾讯安全EDR的智能采集路径与决策)

五、安全行业警钟长鸣

水能载舟亦能覆舟,这场影响全球的IT故障,也给安全行业敲响了警钟:安全软件的基石是与恶意程序对抗。当安全厂商肩负着安全这一至高责任的时候,每一位用户的使用体验才是基石下的土壤。如果盲目追求技术的极致而忽略了体验,那么下一次IT事故的倒计时就会再度开始。

image.png

THE END
广告、内容合作请点击这里 寻求合作
免责声明:本文系转载,版权归原作者所有;旨在传递信息,不代表金沙手机网投app 的观点和立场。

相关热点

相关推荐

1
3