安全研究员发现一个芯片漏洞,此漏洞影响到数以百万计的设备,不管设备上安装的是什么操作系统或是应用程序,这个漏洞都能让设备的防黑保护无效化。更糟糕的是,这个漏洞不会因为任何的软件升级而被彻底修复。
该漏洞存在于内存管理单元(MMU)(许多CPU的组件)的工作方式中,利用此漏洞就能绕过地址空间布局随机化(ASLR)保护。
ASLR是现代操作系统重要的安全防御手段,无论是Windows和Linux还是macOS,Android,BSD都已采用了该技术。
一般来说,ASLR是一种内存保护机制,它使程序在设备内存中运行的位置随机化。攻击者难以通过利用缓冲区溢出或类似bug而在内存的特定地址执行恶意的有效载荷。可以说,有了ASLR的存在,攻击者的每次尝试都是摸瞎的状态下进行的。
但就是有那么一群来自荷兰Vrije大学的研究者,他们开发出了一种攻击脚本,它能够绕过至少22个处理器微架构的ASLR保护,这些处理器来自英特尔,AMD,ARM,Allwinner,Nvidia和其他厂商。
这个名为ASLR Cache或AnC的攻击影响尤为恶劣,因为它使用的是简单的JavaScript代码来识别执行系统和应用程序组件的内存中的基址。这种攻击可以仅通过访问恶意站点就能触发,能够让攻击者进行更多针对内存的相同区域的攻击,以窃取存储在PC内存中的敏感信息。
这种攻击利用了微处理器和内存彼此交互的方式。
内存管理单元(MMU)存在于桌面、移动和服务器芯片和任务中以映射计算机在其内存中存储程序的位置,不断地检查称为页表的目录以跟踪这些地址。而设备通常将页表存储在CPU的高速缓存中,使得芯片更快速和更高效。 但是这个组件还会与一些不可信的应用程序(包括浏览器)共享一些缓存。
一段运行在恶意网站上的JavaScript代码也可以写入该缓存(侧信道攻击),攻击者可以借此来找到位于虚拟内存中的软件组件(如库和RAM映射文件)
有了这些位置数据,任何攻击者都可以读取计算机内存的一部分,然后他们可以利用这些数据来启动更复杂的攻击,获取对完整操作系统的访问权限,并劫持计算机系统。
研究人员通过最新的Chrome和Firefox浏览器在90秒内成功对在22种不同的CPU微架构施展了AnC JavaScript攻击,即便这些浏览器内存在ASLR保护。
VUSec研究团队发表了两篇研究论文[1,2],详细介绍了AnC攻击,包括两个视频演示,展示了如何在64位Linux机器上的Firefox浏览器中完成的攻击。
在他们的攻击中,研究人员将他们的AnC JavaScript与攻击代码结合使用,利用了Firefox中现在修补的免漏洞漏洞(CVE-2013-0753)。 AnC攻击的问题通过几个CVE标识符跟踪,包括:
- CVE-2017-5925 for 英特尔处理器
- CVE-2017-5926 for AMD 处理器
- CVE-2017-5927 for ARM 处理器
- CVE-2017-5928 for 影响多个浏览器的时序问题
VUSec团队在三个多月前就已经告知了所有受影响的芯片制造商和软件公司,包括英特尔,AMD,三星,Nvidia,微软,苹果,谷歌和Mozilla,显然这些厂商没有理睬VUSec团队,因此VUSec将他们的“发现”公之于众。
“总而言之这样的缓存行为和强地址空间随机化是相互排斥的。由于缓存层次结构对于整个系统性能的重要性,因此任何修复工作的代价和工作量都太大,不是一个可取的做法。”
“此外,即使在硬件中存有缓存,比如页表的单独缓存,这种问题也可能在软件中出现。因此,我们建议不再将ASLR信任为防止内存错误攻击和未来防御的第一道防线,不要将它作为防御工作关键的一环。
VUSec团队提醒,保护自己免受AnC攻击的唯一方法是启用插件,比如Firefox的NoScript或Chrome的ScriptSafe,阻止网页上的不受信任的JavaScript代码在浏览器中运行。