根据最新发布的研究,从2011年至2019年,AMD处理器一直存在以前从未公开的漏洞,这些漏洞使它们容易受到两种新型的侧信道攻击。
这种新型的潜在攻击手段被称为“Take A Way”,利用AMD Bulldozer微体系结构中的L1数据(L1D)缓存预测变量,从处理器获取敏感数据,并在恢复加密过程中使用密钥,这对设备安全产生极大的威胁。
这项研究由格拉茨技术大学和计算机科学与随机系统研究所(IRISA)的一个研究团队发表,他们于2019年8月向AMD披露了这些漏洞。
AMD在其网站上发布的一份咨询报告中说: “我们注意到一份新的白皮书,该白皮书声称可以利用AMD CPU的潜在漏洞,恶意行为者借此可以操纵与缓存相关的功能,从而可能以意想不到的方式传输用户数据。”
“然后,研究人员将该数据路径与现有的恢复软件或推测的侧通道漏洞进行配对。AMD认为这些不是新型攻击。”
尽管该通知并未具体说明防范攻击的细节,但该论文的主要研究人员之一Vedad Hadžić表示,该漏洞利用活动仍然很活跃。
随着英特尔CPU审查出一系列漏洞问题,从Meltdown,Spectre,ZombieLoad到最近无法修补的CSME固件缺陷,该研究提醒人们,处理器架构要完全没有威胁是不可能的。值得注意的是,研究中列出的一些合作者也没有发现Meltdown,Spectre和ZombieLoad漏洞。
Collide+Probe和Load+Reload
与Intel Spectre攻击一样,这两种新型攻击被称为“Collide+Probe”和“Load+Reload”,利用上述提及的L1D缓存预测变量,可以访问原本不可访问的数据。
研究人员概述说:“借助Collide+Probe,攻击者可以在分时共享逻辑内核时监视受害者的内存访问,而无需了解物理地址或共享内存。通过Load+Reload,我们利用预测器的方式在同一物理内核上获得受害者的高精度内存访问跟踪。”
L1D缓存预测变量是一种优化机制,旨在减少与访问内存中缓存数据相关的功耗:
“预测变量使用虚拟地址上未记录的哈希函数来计算μTag。该μTag用于在预测表中查找L1D缓存方式。因此,CPU必须仅以一种方式比较缓存标记,而不是所有可能的方式,以此来降低功耗。” |
新发现的缓存攻击通过反向哈希函数工程来跟踪L1D缓存的内存访问而起作用。虽然Collide+Probe在AMD的L1D缓存预测变量中利用了μTag冲突,但Load + Reload却利用了预测变量处理内存中别名地址的方式。
换句话说,可以使用这两种攻击技术从另一个进程中窃取敏感数据,与攻击者或在CPU的不同逻辑内核上运行的同一进程,共享相同内存。
为了证明侧信道攻击的影响,研究人员建立了一个缓存隐式通道,从AMD CPU上运行的进程中提取数据到另一个隐蔽的进程中,利用80个通道实现最大传输速率588.9kB / s,同时,在AMD Ryzen Threadripper 1920X处理器上并行执行。
随着越来越多的主流云平台比如Amazon、Google和Microsoft采用AMD的EPYC处理器,在云环境中的攻击也引起了人们的极大关注。
此外,安全研究人员能够绕过浏览器中的地址空间布局随机化(ASLR),从而成功地在某些常见的浏览器(即Chrome和Firefox)上发起Collide + Probe攻击,减少了熵并找到了地址信息。
ASLR是一种安全性操作,用于随机化和屏蔽CPU内存中代码和关键数据区域的确切位置。换句话说,它阻止了潜在的攻击者猜测目标地址并跳转到内存中的特定区域。
研究人员指出:“在Firefox中,我们能够将熵降低15位,成功率为98%,平均运行时间为2.33 s(σ= 0.03s,n = 1000)。使用Chrome,我们可以减少数位,成功率为86.1%,平均运行时间为2.90秒(σ= 0.25秒,n = 1000)。”
随后,研究人员使用相同的Collide+Probe攻击来尝试泄露内核的内存数据,甚至从T表中恢复加密密钥,使用AES密码存储加密操作的中间数据。
防范此类攻击
目前已经可以通过各种纯硬件、硬件和软件的更改以及纯软件的解决方案来防范这两种攻击,其中包括以允许动态地暂时禁用预测变量的方式和清除状态的方式设计处理器。内核模式和用户模式之间切换时清除预测变量的模式状态。
这不是第一次发现AMD处理器容易受到包括Spectre在内的CPU攻击的影响,因此,该公司也发布了大量补丁程序。
AMD是否会修复研究中新揭露的漏洞目前尚不清楚。