查看原文
其他

新研究:英特尔Haswell CPU的ASLR保护可被绕过

代码卫士 2022-04-06



两所美国大学的一组科学家团队发现利用BTB(Branch Target Buffer,分支目标缓冲器)绕过ASLR(Address Space Layout Randomization,地址空间布局随机化)保护的方法。BTB是很多现代CPU架构中包含的组件,这次科学家实验所用的处理器是英特尔Haswell CPU。


ASLR是当今所有主流操作系统中包含的一个安全功能,适用于Windows、Linux、macOS、iOS和Android。


ASLR的工作原理是,将发送到CPU的数据对象进行处理,并给它们分配一个随机的地址空间,在计算机的内存(RAM)中运行。


由于多数“接管”漏洞通过缓冲区溢出破坏内存数据,为了欺骗电脑执行恶意代码,攻击者必须知道如何制作自己的恶意代码。要做到这点,攻击者必须知道应用程序在电脑内存中执行的地址空间。通过分析应用程序的源代码就可轻易获取。


如果ASLR起了保护作用,恶意软件或者恶意代码会在错误的内存地址中执行,对电脑构不成危害。


漏洞存在于BTB组件中


在本周发布的一篇论文中,一组计算机科学专家表示发现BTB中存在问题。BTB是一个缓存系统,用于跟踪之前运行过的数据的内存位置。CPU使用BTB加快操作,BTB类似一个浏览器缓存,加快经常访问网页的访问速度。


研究人员表示BTB很容易受到冲击攻击,即使用随机数据轰击BTB,直到找到与已经存储在缓冲区中相同的数据。


研究人员利用这项技术从CPU的内核中恢复出了包括ASLR索引表的数据,从而得知了指定app代码运行的地址。


ASLR绕过攻击只需60毫秒


研究人员所发表的论文中表示,仅需60毫秒即可收集到所需的样本数。


虽然研究人员仅在具有英特尔 Haswell CPU的Linux机器上进行了测试,但从理论上讲,同样的攻击在其他操作系统甚至KVM(Kernel Virtual Machine,内核虚拟机)也可以成功。


三名研究人员的论文中还提到了一系列硬件和基于软件的减轻攻击的解决方案。最简单的解决方法是基于软件,操作系统厂商应将ASLR保护设置为代码功能级别而不是数据对象级别。


这篇研究论文题目为《Jump Over ASLR: Attacking Branch Predictors to Bypass ASLR》,作者为纽约州立大学宾汉姆顿分校Dmitry Evtyushkin和 Dmitry Ponomarev,以及加州大学河滨分校Nael Abu-Ghazaleh。


代码卫士

codesafe.cn

长按二维码,关注“代码卫士

您的专属代码体检专家

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存