火星科技网您的位置:首页 >人工智能 >

新的推测性执行错误从英特尔芯片的内部缓冲区泄漏数据

导读 首次在2018年1月披露,Meltdown和Spectre的攻击打开了闸门,导致对现代处理器中的投机执行硬件进行了广泛的研究,并且在此后的几个月中发布

首次在2018年1月披露,Meltdown和Spectre的攻击打开了闸门,导致对现代处理器中的投机执行硬件进行了广泛的研究,并且在此后的几个月中发布了一些额外的攻击。

今天看到出版了一系列密切相关的缺陷,分别命名为RIDL,Fallout,ZombieLoad或Microarchitectural Data Sampling。许多名字是几个发现不同缺陷的群体的结果。来自阿姆斯特丹自由大学和亥姆霍兹信息安全中心的计算机科学系,我们有“流氓飞行数据加载”。来自格拉茨科技大学,密歇根大学,伍斯特理工学院和KU Leuven的团队,我们有“辐射”。来自格拉茨科技大学,伍斯特理工学院和KU Leuven,我们有“ZombieLoad”,来自格拉茨科技大学,我们有“Store-to-Leak Forwarding”。

英特尔正在使用“微架构数据采样”(MDS)这个名称,这个名称可以说是对问题的最深入了解。这些问题是英特尔和其他各个团体独立发现的,去年6月首次向芯片公司发出通知。

回顾:处理器猜测很多

所有攻击都遵循一套共同的原则。每个处理器都具有体系结构行为(描述指令如何工作以及程序员依赖于编写程序的文档化行为)和微体系结构行为(体系结构的实际实现方式)。这些可以以微妙的方式发散。例如,在架构上,处理器一个接一个地顺序执行每个指令,等待在执行该指令之前知道指令的所有操作数。从内存中的特定地址加载值的程序将等到地址已知,然后再尝试执行加载,然后在使用该值之前等待加载完成。

然而,在微体系结构上,处理器可能会尝试推测性地猜测地址,以便它可以开始从内存加载值(这很慢),或者可能猜测负载将检索特定值。它通常使用缓存或转换后备缓冲区中的值来形成此猜测。如果处理器猜错了,它将忽略猜测值并再次执行加载,这次使用正确的地址。因此保留了体系结构定义的行为,就好像处理器在使用它们之前总是等待值。

但那个错误的猜测会干扰处理器的其他部分;主要方法是以一种取决于猜测值的方式修改缓存。这种修改会导致细微的时序差异(因为读取已经在缓存中的数据比攻击者可以测量的数据更快)。从这些测量中,攻击者可以推断出猜测值,也就是说攻击者可以推断出缓存中的值。该值对攻击者而言可能是敏感且有价值的。

缓冲...

MDS大致相似,但它不是从缓存中泄漏值,而是从处理器内的各种缓冲区泄漏值。处理器有许多专用缓冲区,用于在内部移动数据。例如,行填充缓冲区(LFB)用于将数据加载到1级缓存中。当处理器从主存储器读取时,它首先检查1级数据高速缓存以查看它是否已知道该值。如果没有,它会向主内存发送请求以检索该值。在写入缓存之前,该值被放入LFB。类似地,当将值写入主存储器时,它们暂时放在存储缓冲区中。通过称为存储到加载转发的过程,存储缓冲区也可用于服务存储器读取。最后,有一些称为装载端口的结构,

所有三个缓冲区都可以保存过时数据:行填充缓冲区将保存来自先前从主内存中获取的数据,同时等待新的获取完成;存储缓冲区可以包含来自不同存储操作的混合数据(因此,可以将新旧数据的混合转发到加载缓冲区);类似地,加载端口可以在等待来自内存的新数据时包含旧数据。

正如先前的推测性执行攻击将在缓存中使用陈旧值一样,新的MDS攻击基于来自这些缓冲区之一的陈旧值执行推测。所有三种缓冲区类型都可以用于此类攻击,精确的缓冲区取决于精确的攻击代码。

名称中的“抽样”是因为这种攻击的复杂性。攻击者几乎无法控制这些缓冲区中的内容。例如,存储缓冲区可以包含来自不同存储操作的陈旧数据,因此虽然攻击者可能会对其中某些数据感兴趣,但它可能与其他不相关的数据混合在一起。为了获得可用的数据,必须在泄漏信息时进行许多尝试,因此必须多次采样。

另一方面,像Meltdown和Foreshadow攻击这样的攻击绕过了处理器的内部安全域。例如,用户模式进程可以看到从内核泄漏的数据,或者不安全的进程可以看到从安全的SGX区域内泄漏的数据。与之前的类似攻击一样,使用超线程,攻击者线程和受害者线程都在同一物理核心上运行,可以增加攻击的便利性。

适用范围有限

通常,攻击者很少或根本无法控制这些缓冲区;没有简单的方法来强制缓冲区包含敏感信息,因此不能保证泄漏的数据有用。阿姆斯特丹VU研究人员展示了一种概念验证攻击,其中浏览器能够读取Linux系统的阴影密码文件。但是,要使此攻击起作用,受害者系统会反复运行passwd命令,从而确保文件内容很可能位于其中一个缓冲区中。因此,英特尔认为这些攻击属于低风险或中等风险。

但这并不意味着它们已经不固定了。今天,将通过第一代Coffee Lake和Whiskey Lake芯片更新Sandy Bridge的微码。结合合适的软件支持,操作系统将能够强制刷新各种缓冲区,以确保它们没有敏感数据。第一代Coffee Lake和Whiskey Lake处理器已经使用负载填充缓冲区对MDS免疫,因为这恰好是作为1级终端故障和Meltdown攻击修复的一部分而修复的。此外,最新的Coffee Lake,Whiskey Lake和Cascade Lake处理器包括针对所有三种变体的完整硬件修复程序。

对于依赖于微代码修复的系统,英特尔表示性能开销通常低于3%,但在某些不利的工作负载下,可能会略高一些。该公司还提供了一份官方声明:

微架构数据采样(MDS)已在我们最近的第8代和第9代Intel®Core™处理器以及第2代Intel®Xeon®可扩展处理器系列的硬件级别上得到解决。对于其他受影响的产品,可通过微代码更新获得缓解,同时从今天开始提供对操作系统和管理程序软件的相应更新。我们在网站上提供了更多信息,并继续鼓励每个人保持系统最新,因为这是保持受保护的最佳方式之一。我们要感谢与我们及我们的行业合作伙伴合作的研究人员,他们为协调披露这些问题做出了贡献。

与Meltdown一样,此问题似乎确实是针对英特尔的。使用来自缓冲区的陈旧数据来执行推测性执行介于性能改进和易于实现的问题之间,AMD的芯片和ARM的设计都不会遭遇同样的问题。从架构上来说,英特尔处理器都做正确的事情 - 他们确实陷阱并回滚错误的推测,就像他们应该的那样,好像坏的数据从未使用过 - 但正如Meltdown和Spectre已经非常清楚,这还不足以确保处理器安全地运作。

标签:

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如有侵权行为,请第一时间联系我们修改或删除,多谢。