一种名为 SLUBStick 的新型 Linux 内核跨缓存攻击,将有限的堆漏洞转化为任意内存读写能力的成功率高达 99%,让研究人员能够提升权限或逃离容器。
该发现来自奥地利格拉茨技术大学的一组研究人员,他们演示了使用 32 位和 64 位系统中的 9 个现有 CVE 对 Linux 内核版本 5.9 和 6.2(最新版本)进行攻击,显示出很高的通用性。
此外,此次攻击可与所有现代内核防御措施(如监控模式执行保护 (SMEP)、监控模式访问保护 (SMAP) 和内核地址空间布局随机化 (KASLR))配合使用。
研究人员将展示在启用了最先进防御功能的最新 Linux 中如何实现权限提升和容器逃逸。同时,发布的技术论文包含有关此次攻击和潜在利用场景的所有细节。
SLUBStick 详细信息
Linux 内核高效且安全地管理内存的一种方法是,为不同类型的数据结构分配和取消分配内存块(称为“slab”)。
此内存管理流程中的缺陷可能允许攻击者破坏或操纵数据结构,这称为跨缓存攻击。然而,这些攻击大约有 40% 的时间是有效的,并且通常迟早会导致系统崩溃。
SLUBStick 利用堆漏洞(例如双重释放、用户释放后或越界写入)来操纵内存分配过程。
研究人员实验中成功利用的 CVE,来源:stefangast.eu
接下来,它使用定时侧通道来确定内存块分配/释放的确切时刻,从而允许攻击者预测和控制内存重用。
使用这些时间信息可将跨更改利用的成功率提高到 99%,从而使 SLUBStick 非常实用。
测量成功率,来源:stefangast.eu
将堆漏洞转换为任意内存读写原语分为三个步骤:
- 释放特定的内存块并等待内核重新使用它们。
- 以可控的方式重新分配这些块,确保它们能够重新用于页表等关键数据结构。
- 一旦回收,攻击者就会覆盖页表条目,获得读取和写入任何内存位置的能力。
篡改数据,来源:stefangast.eu
想要深入研究 SLUBStick 并试验格拉茨大学研究人员使用的漏洞的人可以在研究人员的 GitHub 存储库中找到它们。
转自军哥网络安全读报,原文链接:https://mp.weixin.qq.com/s/PpXosWa7BfbqqcxYzcLwhA
暂无评论内容