查看原文
其他

Meltdown和Foreshadow等补丁被指不完整,处理器易受新攻击

Ravie Lakshmanan 代码卫士 2022-12-20
 聚焦源代码安全,网罗国内外最新资讯!
编译:奇安信代码卫士团队
格拉茨工业大学和CISPA 亥姆霍兹中心的研究人员指出,现代处理器此前遭受的推断性攻击如 Meltdown Foreshadow 的根因被错误地归结为“预取影响”,导致硬件厂商发布的缓解措施和应对措施不完整。


研究人员披露了内核地址缓存的真正原因以及如何利用此前未识别出的底层问题嗅探敏感数据。研究人员表示,微架构攻击实际上是由内核中用户空间寄存器的推断性间接引用造成的,它不仅影响最新发布的具有最新硬件缓解措施的 Intel CPU,而且还影响此前曾认为不受影响的多款现代处理器,如 ARM、IBM 和 AMD 处理器。
研究人员指出,“我们发现4年来多份学术论文中提出的影响并未得到正确理解,从而导致不正确的应对措施假设。论文中提到的预取影响实际上和因内存访问引发的软件预取指令或硬件预取影响并不相关,而是由对内存中用户空间寄存器的推断性间接引用造成的。”
除了分析预取影响的根因之外,研究论文中的其它关键成果如下:
  • 发现利用该底层根因的多起新型攻击活动,包括在限制更多的上下文中的地址转换攻击、特定场景下直接泄露寄存器值以及针对非 L1 数据的端对端 Foreshadowexploit。

  • 新型跨核隐秘信道攻击:在某些实例中可导致攻击者观测到存储在寄存器中无需共享内存的地址(或值)缓存。

  • Spectre “预取”工具可直接泄露真实数据,不仅可导致在 Intel CPU 上有效地执行 ZombieLoad 攻击,泄露内部缓冲区的敏感数据或内存,还可影响非 Intel CPU。

推断性间接引用问题——在某些攻击中如 Rowhammer、缓存攻击和 DRAMA等,可导致攻击者恢复 JavaScript 变量的物理地址并通过经由 web 浏览器通过远程瞬时执行攻击提取信息。

另外,研究人员还演示表明,Intel CPU 中的 Foreshadow 漏洞甚至可以在启用推荐缓解措施的情况下遭利用。由于可以对在包含“预取”小工具的内核版本上不存在于 L1 缓存中的数据发起攻击,因此这种攻击活动也有可能发生。



从地址变换攻击到 Foreshadow 攻击


攻击背后的想法较为直接。系统软件依靠 CPU 的地址转换机制实现不同进程之间的隔离。每个进程都拥有自己的虚拟内存空间且无法访问该空间之外的任意物理内存地址。
因此,地址转换充当程序所使用的虚拟地址空间映射到物理地址的中介层。该虚拟地址空间还包括储存Linux 内核线程的内核地址空间,以便于底层硬件在内核模式下处理源自用户线程的权限指令。
虽然可使用如内核页表隔离(KPTI 或 KAISER)的技术保护操作系统内核免受预取侧信道攻击,但研究人员发现它无法保证完全防御地址转换攻击,攻击者试图查看两个不同的虚拟地址是否映射到同一个物理地址。
换句话说,“地址转换攻击可导致低权限应用将任意内核地址提取到缓存中,从而将虚拟地址解析到64位 Linux 系统的物理地址。”
虽然最初认为这类攻击和预取指令相关,但新的研究成果却得出相反的结论,因此验证了 KAISER 并非预防针对内核隔离的微架构侧信道攻击的正确应对措施。
相反,它利用 Spectre-BTB-SA-IP工具引发信息泄露,导致推断性执行后果并进一步通过绕过当前 L1TF 缓解措施的方法执行 Meltdown 和 Foreshadow 攻击。
Spectre-BTB-SA-IP 是 Spectre 漏洞的一个变体,它利用 Branch TargetBuffer(CPU 中的一个类似缓存的组件,用于分支预测)在同样的地址空间和同样的分支地址中执行攻击。
研究人员指出,“同样的预取影响也可用于执行 Foreshadow 攻击。如果 L3 缓存中出现了机密而间接物理映射地址在管理程序内核中间接引用,那么数据可被提取到 L1。这样,即使启用了 Foreshadow缓解措施而禁用了不相关的 Spectre-BTB 缓解措施,也会重新使Foreshadow 攻击成为可能。后果就是,我们能够在修复 Foreshadow 的且启用所有缓解措施的老旧内核上发动 Foreshadow 攻击,而且如仅禁用了 Spectre-v2 缓解措施,则可在完全修复的内核上执行攻击。”

启用 Spectre-BTB 缓解措施如 Retpoline


为了强调该侧信道攻击的影响,研究人员设置了一个基于缓存的隐秘信道,能够从运行Intel Corei7-6500U CPU 上的进程中将数据提取到另外一个隐秘进程,实现10位/秒的转换速度,将共128字节从发送者中继到接收者进程。
另外,研究人员发现还可以从使用推断间接应用的寄存器的 Intel CPU 的 SGX enclave 中泄露寄存器内容,在15分钟内恢复在64位寄存器中存储的一个32位值。
最后,目前可以通过使用 web 浏览器中 JavaScript 中的方法远程发动“某些攻击”,并使用 WebAssembly 通过受攻击者控制的值填充64位寄存器。
要缓解这些攻击,建议当前 CPU 启用 Spectre-BTB 缓解措施,包括 retpoline(意为“返回 trampoline”)。它的目的是通过隔离间接分支和推断性执行的方式阻止针对分支的注入攻击。



推荐阅读
比 Meltdown 和 Sepctre 更凶险:四个 CPU 新缺陷影响几乎所有英特尔处理器
Intel CPU 易受新型的 SGAxe 和 CrossTalk 侧信道攻击



原文链接

https://thehackernews.com/2020/08/foreshadow-processor-vulnerability.html




题图:Pixabay License


本文由奇安信代码卫士编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 www.codesafe.cn”。


奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的

产品线。

    觉得不错,就点个 “在看” 吧~



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

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