前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >蓝屏之囿-终端安全软件开发的困局与破局

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

作者头像
FB客服
发布2024-07-31 18:23:27
880
发布2024-07-31 18:23:27
举报
文章被收录于专栏:FreeBuf
一、星星之火可以燎原

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

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

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

二、猫鼠游戏诞生记

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

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

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

三、安全软件的难言之隐

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

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

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

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

2. 安全软件的终端架构

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

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

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

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

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

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

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

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

4. 难以平衡的攻守矛盾

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

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

四、腾讯iOA-EDR实践之路(压缩版)

发展到今天,安全类的产品百家争鸣,争奇斗艳,但万变不离其宗,延续上面的攻守矛盾来说,整体的发展犹如一个三岔口。第一条路是以攻为守,崇尚安全软件以对抗恶意程序的本职为第一目标。第二条路是全面防守,稳字当头的思路,整体架构完全不进入内核层,只使用系统本身的安全接口来与恶意程序对抗。第三条路,则是选择一种攻守兼顾的架构,既要保证拥有内核层的核心能力,又尽可能降低对核心层的依赖,让内核层功能尽可能纯净简单,把大部分功能逻辑放在应用层模块上。

(三种不同的防御策略)

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

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

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

腾讯EDR在进程注入采集上也是执行的最小化原则,首先范围层面最小化,只注入可疑的入侵进程,不影响系统和常用软件进程。第二采集层面纯异步化,采集数据后第一时间旁路,尽可能降低对原进程的影响。

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

架构只是稳定性和兼容性影响的一环,如何采集和执行策略逻辑也会对结果产生关键影响。逻辑的错误或者不适当也会造成一些系统性能层面的影响,比如CPU持续高起,导致系统使用上的不流畅等问题。

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

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

五、安全行业警钟长鸣

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-07-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档