FetchBench: Systematic Identification and Characterization of Proprietary Prefetchers

本文介绍FetchBench框架,用于系统地分析和表征CPU预取器,发现ARMCortex-A72的新型预取器漏洞,展示利用预取器进行安全攻击的可能性。研究强调了预取器设计对系统性能和安全的影响,提出了后续的研究方向.
摘要由CSDN通过智能技术生成


FetchBench: Systematic Identification and Characterization of Proprietary Prefetchers
CCS 2023

在这里插入图片描述

笔记

本文解决了对常见CPU中的预取器进行系统研究的需求,以便进行进一步的安全评估。预取程序是 CPU 的组件,用于预测未来的内存访问,并在请求内存块之前将其引入缓存。但是,预取程序实现是专有的且未记录在案,因此很难识别漏洞。该文档介绍了 FetchBench 框架,该框架系统地分析了预取方法,设计了跨平台测试来识别和表征预取器,并展示了其在 19 种不同的 ARM 和 x86-64 CPU 上的有效性。该框架在 ARM Cortex-A72 CPU 上发现了一个以前未知的基于重放的预取器,并演示了两种利用该预取器作为泄露机密信息的侧信道的新型攻击。本文档提供了预取器设计的分类,讨论了 CPU 内存层次结构和预取的背景,并强调了解决时序攻击的重要性。该文档的主要贡献包括预取器设计的分类、FetchBench 框架的设计和实现,以及利用未记录的预取器的新型攻击的演示。

大意:

  • 预取器使用对应用程序未来内存使用的预测来推测性地获取内存。
  • 预取器实现是专有的且未记录在案,因此很难识别漏洞。
  • FetchBench 框架系统地分析了预取方法,并表征了不同 CPU 上的预取器。
  • FetchBench 在 ARM Cortex-A72 CPU 上发现了一个以前未知的基于重放的预取器。
  • 演示了两种新型攻击,它们利用此预取器作为侧信道来泄露机密信息。
  • 本文档提供了预取器设计的分类,并讨论了 CPU 内存层次结构和预取的背景。
  • 强调了定时攻击和解决侧信道的重要性。

后续的研究方向

  1. 进一步探索不同的预取器设计:研究可以侧重于识别和表征其他类型的预取器,例如混合预取器或尚未广泛研究的新设计。

  2. 预取器性能评估和优化:该研究可以研究不同预取器设计在各种场景和工作负载下的有效性和效率。这可能涉及分析预取程序对缓存利用率、内存访问延迟和整体系统性能的影响。

  3. 开发预取器缓解技术:该研究可以探索减轻与预取器相关的安全风险的技术,例如侧信道攻击或隐蔽信道。这可能涉及制定防止数据泄露的对策或设计具有内置安全功能的预取器。

  4. 预取器学习算法研究:该研究可以深入研究预取器使用的学习算法,以了解它们如何适应不同的内存访问模式。这可能涉及分析不同学习算法的准确性和效率,并探索潜在的改进或替代方案。

  5. 不同架构的预取器设计比较:该研究可以比较不同 CPU 架构(如 x86、ARM 或 RISC-V)的预取器的行为和性能。这可以深入了解预取器设计在不同计算环境中的优势和劣势。

  6. 探索预取器与其他硬件组件的交互:该研究可以研究预取器与其他硬件组件(如缓存、内存控制器或分支预测器)之间的交互。这有助于发现整个内存子系统中的潜在优化或瓶颈。

  7. 预取器感知编程技术的发展:该研究可以探索利用预取器优化内存访问模式的编程技术。这可能涉及设计与预取器行为一致的算法或数据结构,以最大限度地提高性能。

  8. 预取器能效研究:研究可以重点关注预取器的能耗,并探索优化其能效的技术。这可能涉及分析预取器性能和功耗之间的权衡,以及开发能耗感知型预取器设计。

这些方向可以进一步增强我们对预取器及其对系统性能、安全性和能效的影响的理解。

摘要

预取器通过预测应用程序未来使用的内存,推测性地获取内存。不同的CPU可能使用不同的预取器类型,并且同一预取器的两个实现在特性细节上可能不同,从而导致不同的运行时行为。在一些实现中,安全研究人员通过手动分析展示了如何利用特定的预取器来泄露数据。识别此类漏洞需要繁琐的反向工程,因为预取器实现是专有的且没有文档记录。到目前为止,还没有对普通CPU中的预取器进行系统研究,这阻碍了进一步的安全评估。

在这项工作中,我们解决了以下问题:我们如何系统地识别和表征专有处理器中指定不足的预取器?为了回答这个问题,我们系统地分析了预取方法,设计了跨平台测试来识别和表征给定CPU上的预取器,并证明了我们的实现FetchBench可以表征19个不同ARM和x86-64 CPU上的预取器。例如,FetchBench在ARM Cortex-A72 CPU上发现并表征了一个以前未知的基于重放的预取器。基于这些发现,我们展示了两种新的攻击,它们利用这个未经记录的预取器作为侧通道,将秘密信息泄露到正常世界,甚至从安全的TrustZone泄露到正常情况下。

引言

快速高效的CPU是我们数字基础设施的支柱。为了提供我们今天习惯的高水平性能,现代CPU配备了无数精心设计的、专有的、通常没有记录的优化机制。不幸的是,这些机制往往以破坏平台基本保证(如内存隔离)的安全漏洞为代价。例如,瞬态执行攻击利用CPU仅瞬态执行的代码,例如,在控制或数据流预测失误后推测性执行(Spectre型攻击),或在错误指令后无序执行(Meltdown型攻击)[6,21,24]。

虽然与瞬态执行相关的安全问题受到了很多关注,但对硬件预取器(简称预取器)预测性内存提取的关注较少。预取器是CPU的专有组件,它试图预测未来的内存访问,并在实际请求内存块之前将内存块放入缓存。由于检测和加速存储器访问模式的问题可以通过许多不同的方式来解决,因此芯片设计者可以使用多种预取器设计选项[11]。由于预取操作对软件应用程序是透明的,供应商通常不会透露有关其使用的预取器类型、这些预取器的特性及其实现的任何详细信息。例如,英特尔已经通过披露如何禁用某些类型的预取器的文档来确认它们的存在[37],但将其特性的公开文档限制为肤浅的建议用于软件开发人员[19]。ARM的限制更为严格:例如,ARM Cortex-A72的技术参考手册确认了数据预取器的存在,但甚至没有具体说明它检测到的内存访问模式[1]。

这种保密性尤其有问题,因为安全研究人员发现了特定预取器实现中出现的几个漏洞。例如,先前的工作描述了某些英特尔CPU中的步长预取器,并利用反向工程特性构建隐蔽通道[7,8]或从ECDH[32]或RSA[7]计算中泄漏私钥。研究人员还确定并表征了一种预取器,该预取器可以取消Apple M1上的指针引用[29]。他们利用这个预取器作为虚拟地址有效性的预言机,从而绕过地址空间布局随机化(ASLR)。这些示例表明,预取器是CPU中与安全相关的组件,需要进行系统的调查。然而,所有先前的工作都集中在一组狭窄的预取器设计和CPU上;到目前为止,还没有对广泛的预取器架构及其安全含义进行系统分析。

研究问题和挑战。

在这项工作中,我们通过回答以下三个研究问题来缩小这一差距:

RQ1:我们如何系统地识别和表征未指定架构上的预取机制?

RQ2:现代CPU中预取器的主要类型和特点是什么?

RQ3:到目前为止尚未探索的预取器类型的安全含义是什么?

在解决这些问题时,我们确定了以下三个主要的研究挑战:首先,我们需要收集CPU供应商可能使用的预取器设计并使其系统化,尽管现有的文档有限。此外,我们必须确定预取器的相关实现变量(特性)。其次,由于CPU不直接暴露预取器的内部,因此必须根据预取器在操作过程中的行为来识别和表征预取器。虽然之前的工作主要集中在表征特定类型的预取器[7,8,29,32],但我们需要能够识别多个预取器设计并适当表征每个预取器的解决方案。第三,我们想验证预取器设计的与安全相关的内部工作是否会产生新的漏洞。这样的演示还需要受害者和攻击者代码之间的同步方式。

建议的方法。我们首先对不同的预取器设计进行分类,并创建一个分类法(见图1),使我们能够将预取器的设计相互关联,并确定共同的属性和基本差异。
在这里插入图片描述

然后,我们设计并实现FetchBench,这是一个模块化框架,使用我们的分类法来识别给定CPU上的预取器设计。此外,我们的框架将预取器的特征描述为与此特定设计最相关的特征(如触发方法或预取深度)。我们将我们的框架应用于七个不同供应商的19个处理器和两种体系结构(ARMv8和x86-64)。

使用FetchBench,我们能够在三个ARM Cortex-a系列处理器中识别基于回放的空间内存流(SMS)预取器[35]的变体。我们研究了这种预取器的安全特性,迄今为止很少受到关注。

我们展示了选定漏洞的用例。特别是,我们利用SMS预取器跨进程边界泄漏一半AES密钥,并表明预取器的状态不受启用TrustZone的ARM CPU上安全和非安全世界之间的通常分离的影响。我们构建了一个隐蔽通道,其数据速率为1245字节/秒,错误率为5.02%。

贡献

我们基于一种新颖的分类法对七种硬件数据预取器设计进行了编译和分类。

我们设计并实现了FetchBench,这是一个模块化框架,用于识别和表征真实CPU上的预取器,并将这些测试应用于七家不同供应商和两种不同架构的19个CPU。FetchBench在一系列ARM Cortex-a处理器上发现并表征了一个以前未知的、基于重放的预取器。

我们对ARM Cortex-A72的基于重放的预取器提出了一种新的攻击,通过预取器泄漏了64位AES-128密钥。作为攻击的一部分,我们解决了将攻击者进程与受害者进程同步这一不平凡的问题,以便在有调度器的情况下在Linux上实现攻击。

我们展示了预取器的内部状态在正常和安全世界之间没有分离,元数据会跨越TrustZone权限边界泄漏。

披露ARM承认了我们在硬件环境中共享预取器状态的发现,并分配了CVE-2023-33936。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

粥粥粥少女的拧发条鸟

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值