研究人员发现了一个新的漏洞,它会影响存储在计算机内存中的数据的机密性。使用它,他们成功地能够使用普通用户权限从OpenSSH服务器中提取签名密钥。
被称为RAMBleed的攻击基于Rowhammer漏洞,可用于破坏随机存取存储器(RAM)模块的安全存储承诺; 甚至那些集成了纠错码(ECC)机制的人。
Rowhammer最初是一项实验性研究,测试了RAM中加载的信息的隔离。随着内存模块体积变小,存储空间越来越大,内部单元之间的空间越来越短; 这造成了电子干扰的机会,可能会改变存储器位的电荷。
研究人员 在2014年发表的一篇论文中称,通过重复读取同一地址,相邻数据可能会被破坏,因为比特从1变为0,反之亦然 - 这一过程称为位翻转,从而改变了存储的数据。
阅读信息而不修改它
本质上,RAMBleed函数使用相同的原理,但与Rowhammer不同,它读取信息而不是修改它。这使它更适合窃取数据。另一个区别是内存ECC无法有效缓解,就像一些Rowhammer攻击一样。
“值得注意的是,RAMBleed可以打破ECC内存的内存机密性,即使ECC机制成功纠正了所有位翻转,”研究人员说。
来自密歇根大学,格拉茨科技大学和阿德莱德大学的学者们指出,在RAMBleed攻击中,位翻转取决于攻击者无法访问的目标位上下的位的方向和值。
为了使用新的攻击方法了解受害者秘密中某个位的值,攻击者必须映射内存并找到与内存页面中的相同偏移量的可翻转位。
双面RAMBleed
在上面的场景中,攻击者控制秘密旁边的两个激活页面,并且可以反复访问它们以锤击中间行。如果秘密位为0,则锤击使得采样页中的位翻转。在相反的情况下,该位为1。
使用不同存储器偏移处的可翻转位再次执行该过程会显示秘密数据中的所有位。该方法实现了大约每秒三或四比特的读取速度。
“我们在此注意到,受害者和攻击者都不会以任何方式访问秘密。相反,通过访问受攻击者控制的行激活页面,攻击者使用受害者的数据来影响Rowhammer在其私有页面中引发的位翻转。 ,攻击者直接检查采样页面的位翻转,从而推断出受害者的位数。因此,RAMBleed是一种跨地址空间攻击,“研究人员解释说。
窃取OpenSSH密钥
为了证明这种攻击的影响,研究人员能够从运行OpenSSH 7.9 的服务器读取RSA-2048密钥,这是测试时的最新版本。目前的版本是8.0,自4月18日起可用。
成功测量的速率为每秒0.3位,精度为82%。为了获得完整的数据,研究人员使用了Heninger-Shacham算法的变体,该算法可以从部分信息中恢复RSA密钥。
为了获得秘密信息,研究人员开发了一种方法,他们称之为Frame Feng Shui,允许他们将包含令人垂涎的数据的页面放置在攻击者选择的物理内存帧中的所需位置。
RAMBleed收到了跟踪号CVE-2019-0174(基本得分为3.8分,满分为10分),并在由i5-4570 CPU和两个Axiom DDR3 4 GiB 1333 MHz非ECC DIMM(51264Y3D3N13811)驱动的HP Prodesk 600机器上进行了测试,运行Ubuntu 18.04。
尽管该系统使用DDR3 RAM,但研究人员表示他们“并不怀疑DDR4是一个基本限制,假设DDR4内存保留了Rowhammer引发的位翻转与数据相关的特性。” 这一结论得到了以下事实的支持:基于Rowhammer的位翻转DDR4内存已在过去得到证实。
然而,英特尔告诉BleepingComputer,他们保持安全免受这种攻击的建议是使用“耐受Rowhammer式攻击的DRAM模块。这包括大多数DDR4 DRAM模块。” 有关该公司今天发布的问题的咨询,可获得更多信息。
防御可能性
在内存加密处于活动状态的系统上,可以防止RAMBleed攻击。当在处理器上启用可信执行环境(TEE)功能时,可以实现这一点。
英特尔的Software Guard Extensions(SGX),ARM的TrustZone或AMD的安全加密虚拟化(SEV)等TEE都是安全的飞地,可以在他们使用的内存上应用加密。
降低此类读取端攻击风险的方法是在使用后立即从内存中清除加密密钥。这降低了学习秘密数据的机会,因为RAMBleed需要它在内存中保留至少一个刷新间隔,默认为64ms。
原文始发于微信公众号(红数位):RAMBleed攻击可以窃取计算机内存中的敏感数据
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论