章
目
录
最近,ARMO研究团队有了一个重大发现,这个发现直接把Linux运行时安全工具的“短板”给暴露出来了。原来,Linux系统里的io_uring接口居然能让rootkit(也就是内核级恶意软件)躲过常规的监控方案。这可不是个小问题,经过测试发现,像Falco、Tetragon,甚至连Microsoft Defender for Endpoint这些大家常用的主流安全工具,在面对利用io_uring机制发起的攻击时,都“抓瞎”了,根本检测不出来。
一、io_uring机制
io_uring是在Linux 5.1版本引入的一个高性能异步I/O接口。简单来说,它的设计很巧妙,通过让用户空间和内核空间共享一个环形缓冲区,大大降低了数据传输的开销,能让程序运行得更快。但是,这个看似“优秀”的设计却带来了安全隐患。
ARMO研究团队解释道:“这个机制允许用户态应用程序在不触发系统调用的情况下执行各类操作。”大多数Linux安全工具在检测恶意行为的时候,主要靠监控系统调用。打个比方,系统调用就像是程序和内核之间的“正规通道”,安全工具守在这个通道上检查过往的“人员”(操作)有没有问题。可io_uring却能让恶意程序不通过这个“正规通道”,直接和内核“偷偷联系”,这样一来,那些依赖系统调用监控的安全工具自然就发现不了异常了。
二、概念验证
为了让大家更清楚这个威胁到底有多严重,ARMO研究团队专门开发了一个功能齐全的rootkit工具,叫Curing。这个工具很“狡猾”,它在和C2服务器通信的时候,只通过io_uring操作,整个过程中一次系统调用都没有。
通过实验发现,攻击者利用这个工具能做很多危险的事。比如,悄无声息地窃取数据,就像小偷进屋把重要文件偷走,主人却毫无察觉;还能在远程执行命令,就好像黑客在千里之外操控你的电脑,让它干啥就干啥;甚至能进行网络横向渗透,从一台电脑跳到另一台电脑,扩大攻击范围。而传统的监控工具对这些攻击行为完全没有反应,就像没看到一样。
三、多款安全产品的“漏洞大曝光”
ARMO研究团队对多款开源和商业的Linux安全产品进行了测试,结果让人担忧,这些产品都暴露出了严重的缺陷。
- Falco:在面对基于io_uring的操作时,Falco就像个“睁眼瞎”,完全没有任何感知,恶意操作在它眼皮子底下进行,它却浑然不知。
- Tetragon:Tetragon的默认策略也不太靠谱,会遗漏io_uring相关的活动。要想提高对这类活动的监测能力,得手动去配置Kprobes和LSM钩子,这对普通用户来说可太麻烦了,而且很多人可能根本不知道要这么做。
- Microsoft Defender for Endpoint:就算io_uring被攻击者滥用,它也只能通过Fanotify监控到文件变更这一项,其他的恶意行为还是发现不了,就像只看到了冰山一角,大部分危险都被忽略了。
四、行业现状反思
现在市面上的Linux EDR(终端检测与响应)工具,大多依赖eBPF代理。为了实现起来更方便,这些工具优先选择监控系统调用。ARMO研究团队指出,这其实存在根本性的架构缺陷。他们表示:“多数安全厂商仍未解决该问题……他们一直依赖简单直接的方案,但是现在应用和内核的特性越来越多样化,这些老办法根本应付不来。”简单来说,就是安全厂商的技术跟不上系统发展的脚步,还在用老一套方法来解决新出现的问题,自然就漏洞百出了。
五、缓解建议
针对这些问题,ARMO研究团队给出了三条改进策略。
- 异常io_uring使用监控:就像在路口安排交警,专门盯着那些行为异常的车辆一样,要标记应用程序中不常见的io_uring调用。一旦发现有程序用io_uring做一些奇怪的操作,就及时发出警报。
- 采用KRSI(内核运行时安全检测):KRSI可以和Linux LSM框架集成在一起。这就好比给系统内核请了一个“贴身保镖”,它能获取到结构化的内核事件,及时发现内核里的异常情况,保护内核安全。ARMO特别强调KRSI的优势:“与直接挂钩系统调用不同,LSM钩子能为安全相关操作提供更一致可靠的覆盖。”也就是说,LSM钩子能更全面、更稳定地保护系统安全。
- 超越系统调用的钩子技术:不能只把目光放在系统调用上,要利用稳定的Kprobes等钩子点,扩大对内核的监控范围。就像在城市里多设几个监控点,让恶意行为无处遁形。
这次ARMO研究团队的发现,给整个Linux安全生态敲响了警钟。它让大家意识到,现代内核的新特性和现有的安全防护之间存在着严重的滞后问题。如果不尽快解决,Linux系统的安全将一直处于危险之中。