首页   

新型侧信道攻击 KernelSnitch:瞄准数据结构的隐匿威胁

嘶吼专业版  · 互联网安全  · 2 天前

正文

格拉茨技术大学的研究人员发现了一种具有突破性的基于软件的旁道攻击方式 ——KernelSnitch,它利用的是 Linux 内核数据结构中的时间差异。

根据研究人员在 Github 上发布的报告,与依赖硬件的攻击不同,KernelSnitch 主要针对哈希表、基数树和红黑树。这使得非特权攻击者能够跨越隔离进程泄露敏感数据。

漏洞:内核数据结构是静默泄漏者

操作系统依靠哈希表和树等动态数据结构来管理用户空间锁、计时器和进程间通信 (IPC) 的元数据。

KernelSnitch 利用了一个关键的架构疏忽:访问这些结构所需的时间取决于它们的占用情况(元素的数量)。

通过测量系统调用执行时间,攻击者可以推断占用率并提取秘密。

KernelSnitch 的工作原理

1、时间测量:攻击者触发与内核结构交互的系统调用(例如,futex、msgget)。

2、占用率推断:系统调用持续时间越长,表示由于迭代搜索(例如,遍历哈希桶中的链接列表)导致的占用率越高。

3、放大:哪怕是极其微小的时间差异(低至 8 个 CPU 周期),也会通过缓存抖动(刷新 CPU 缓存以加剧内存延迟)或者结构操作(人为增加占用率)被放大。

KernelSnitch 利用哈希表中的可变访问时间。每个存储桶的链接列表长度会影响系统调用持续时间,通过时间戳比较泄露。

分析

1、隐蔽通道(580 kbit/s 传输):恶意进程通过调节哈希桶占用率来进行通信。在 Intel i7 - 1260P 上,KernelSnitch 利用 futex 子系统实现了 580 kbit/s 的传输速度,错误率为 2.8%。

2、内核堆指针泄漏:攻击者通过强制哈希碰撞,可以推断出哈希函数中使用的秘密内核地址(例如 mm_struct)。这能够实现精确的堆操作以提升特权,并且在 65 秒内就能泄露指针。

3、网站指纹识别(准确率 89%):在网页加载期间,监控 Firefox 的 futex 活动可以创建独特的时间指纹。卷积神经网络(CNN)能够从 Ahrefs Top 100 列表中识别出网站,F1 得分为 89.5%。

为什么 KernelSnitch 很重要

·与硬件无关:和 Spectre 或 Meltdown 不同,KernelSnitch 利用的是软件设计缺陷,能够绕过硬件缓解措施。

·广泛影响:所有使用动态内核结构的主流操作系统都存在这个漏洞。该漏洞已在 Linux 5.15 - 6.8 版本上进行了测试。

·隐身性:它不需要特权或共享内存,能够逃避现有的沙箱。

缓解与挑战

修复 KernelSnitch 需要进行根本性的变革:

· 恒定时间结构:消除与占用情况相关的操作(例如预先计算最坏情况下的遍历步骤)。

· 命名空间隔离:限制跨安全域的结构共享。

· 随机散列:在散列函数中混淆内核地址输入。

正如合著者 Lukas Maar 所说:“对于通用内核来说,恒定时间编码并不现实。我们需要的是架构转变,而不是简单打补丁。”

KernelSnitch 暴露了操作系统安全中一个普遍存在的盲点:性能优化在无意中创建了旁道。由于概念验证(PoC)代码已经公开,开发人员必须优先考虑强化结构,而不是进行增量修复。随着内核级攻击变得越来越复杂,重新思考核心设计范式已经刻不容缓,否则攻击威胁将会超过缓解措施的作用。

参考及来源:https://gbhackers.com/kernelsnitch-a-new-side-channel-attack/

© 2024 精读
删除内容请联系邮箱 2879853325@qq.com