SGAxe新交所在实践中是如何失败的

2020-06-10 02:37:11

我们介绍了CacheOut,这是一种新的投机性执行攻击,能够跨越多个安全边界从英特尔CPU泄露数据。我们发现,尽管英特尔试图解决前几代投机性执行攻击,但CPU仍然易受攻击,允许攻击者利用这些漏洞泄露敏感数据。

此外,与以前的MDS问题不同,我们在我们的工作中展示了攻击者如何利用CPU的缓存机制来选择要泄露的数据,而不是等待数据可用。最后,我们通过经验证明CacheOut几乎可以违反所有基于硬件的安全域,从操作系统内核、共存的虚拟机甚至SGX包围区泄露数据。

@misc{cacheout,title={{cacheout}:通过缓存逐出泄露{英特尔}{https://cacheoutattack.com/}},}上的数据},作者={van Schaik,Stephan和Minkin,Marina和Kwong,Andrew和Genkin,Daniel和Yarom,Yuval},howPublished={\url{CPU Year={2020},}。

SGAxe是CacheOut的演变,专门针对SGX Enclaves。我们表明,尽管英特尔为缓解SGX侧通道做出了大量努力,但即使启用了所有侧通道对策,攻击者仍可能破坏SGX飞地的机密性。

然后,我们继续展示从由英特尔编译和签名的SGX报价飞地中提取SGX私有证明密钥的过程。有了这些密钥,我们就可以签署虚假的证明报价,就像这些报价是从可信的和真实的SGX飞地发起的一样。这侵蚀了对SGX生态系统的信任,因为使用这样的引语,攻击者可以将自己伪装成远程方的真正SGX飞地,而在现实中几乎没有提供什么保护。

@misc{sgaxe,title={{sgaxe}:{sgaxe}如何在实践中失败},作者={van Schaik,Stephan和Kwong,Andrew和Genkin,Daniel和Yarom,Yuval},howPublished={\url{https://sgaxeattack.com/}},Year={2020},}。

CacheOut可以使用其私钥从执行RSA解密的用户程序中提取RSA密钥。在本例中,对受害者的数据进行采样大约需要40秒,另外还要花费10秒从收集的数据中恢复密钥。

为了展示我们从英特尔SGX泄露数据的能力,我们将蒙娜丽莎(左边的图像)嵌入了一块飞地。然后我们使用CacheOut收集了一些痕迹。我们根据这些痕迹实时重建图片,如右图所示。

我们还使用CacheOut和SGAxe从完全更新的SGX计算机恢复私有证明密钥,英特尔认为该计算机处于受信任状态。有了这些私有证明密钥,我们可以签署任意的SGX证明报价,然后英特尔的证明服务认为这些报价是合法的(或者至少在他们撤销我们的密钥之前)。在下面的视频中,我们签署我们自己的报价,然后对照英特尔的认证服务进行验证。

我们知道远程询问很难通过。但是,由于我们已经完成了获得真正的证明密钥的所有艰苦工作,我们决定帮助您开发一个通过SGX认证的Twitter机器人。我们的机器人提供了认证即服务(AAAS),它允许您使用我们使用SGAxe提取的密钥对您自己的报价进行签名。这样,您甚至不需要拥有SGX机器就可以通过认证。如果您想使用我们的服务,您可以向我们的bot@SGAxe_aaas发送推文。如果你发推特,我们就签名!

在与英特尔更深入地讨论我们的论文后,我们发现我们是从一条新的、未记录的数据路径泄露的,该路径在L1-D逐出和LFB之间传递信息。

我们还遇到了新的攻击,泄露了AES和RSA密钥,以及跨进程和跨虚拟机的神经网络权重。我们还展示了如何攻击操作系统内核和虚拟机管理程序,提取堆栈金丝雀。此外,我们还违反了SGX飞地的保密性,从飞地的内存中读取数据。

最后,我们介绍了SGAxe,它是CacheOut的后续产品,它从Intel的报价飞地中提取SGX证明密钥。有了这些密钥,网络攻击者就能够冒充合法的SGX飞地,从而侵蚀对整个SGX生态系统的信任。

对于2018年第四季度之后发布的精选数量的处理器,英特尔在解决之前称为TSX异步中止的问题时,有意设法部分缓解了此问题。请参阅我们论文的第8节。

如果您在生产中使用英特尔SGX,或者如果您是正在使用英特尔SGX或计划使用英特尔SGX的开发人员,则如果您依赖远程证明,则很可能会受到影响。

英特尔将向OEM供应商提供CPU微码更新,并通过BIOS更新分发给最终用户。我们建议在它们可用时立即安装它们。此外,英特尔还为操作系统(和虚拟机管理程序)软件提供了缓解策略建议。有关更多信息,请参阅英特尔关于L1D逐出采样的软件指南和英特尔的安全建议(SA-00329)。我们建议您安装操作系统和/或虚拟机管理程序供应商提供的软件更新。

为了减轻SGAxe,英特尔必须首先向OEM供应商提供CPU微码更新,以修补CacheOut和L1DES背后的根本原因。然后,这些信息将通过BIOS更新提供给最终用户。英特尔还将执行可信计算库(TCB)恢复,使所有以前的证明密钥失效。此过程将确保您的系统处于安全状态,以便您的系统能够再次使用远程证明。

我们已知的第一个缓存清除泄漏的迹象可以在Rogue in-Flight Data Load(RIDL)论文中看到,该论文由Stephan van Schaik,Alyssa Milburn,SebastianÖsterlund,Pietro Frigo,Kaveh Razavi,Herbert Bos和Cristiano Giuffrida(VUSec)撰写。此外,英特尔还通知我们,莫里茨·利普、迈克尔·施瓦茨和丹尼尔·格拉斯(TU Graz)以及乔·范布尔克(KU鲁汶)也报道了这一问题。

Stephan van Schaik、Marina Minkin、Andrew Kwong、Daniel Genkin(密歇根大学)和Yuval Yarom(阿德莱德大学和Data61大学)对该漏洞如何工作以及攻击者如何利用该漏洞进行了广泛的分析。更多信息可以在我们的报纸上找到。

AMD不受CacheOut的影响,因为AMD在其当前的CPU产品上没有提供任何类似于英特尔TSX或英特尔SGX的功能。

ARM和IBM确实有类似英特尔TSX的功能,但我们目前不知道他们的产品是否受到影响。我们也不知道有任何其他攻击载体可以利用CacheOut。

就SGAxe而言,英特尔SGX目前仅在选定的英特尔平台上可用。因此,其他处理器供应商不受SGAxe的影响。

不,这些是处理器中的错误,攻击者可以利用它们。软件可以以功能和/或性能为代价来缓解这些问题。我们希望在未来的某个时候,英特尔将发布带有硅内修复程序的处理器来解决此问题。

虽然这在理论上是可能的,但在实践中目前不太可能。但是,您的反病毒软件可能会通过比较已知的二进制文件来检测使用此攻击的恶意软件。

可能性很小,因为CacheOut和SGAxe都不会在传统日志文件中留下任何痕迹。然而,由于SGAxe泄露了SGX证明密钥,人们应该厌倦可疑(但有效)的证明引用。

据我们所知,目前还没有恶意攻击者在野外滥用CacheOut或SGAxe的情况。

操作系统(OS)是负责通过公共接口抽象计算机硬件来管理计算机硬件的系统软件,在其上运行的软件可以使用该接口。

此外,操作系统决定您的软件如何共享此硬件,因此可以访问存储在您的计算机内存中的所有数据。因此,将操作系统与同一台计算机上运行的其他程序隔离是至关重要的。

CacheOut从操作系统中提取信息,为其他攻击(如缓冲区溢出攻击)提供便利,从而侵犯了操作系统的隐私。

更具体地说,现代操作系统采用内核地址空间布局随机化(KASLR)和堆栈金丝雀。KASLR将操作系统使用的数据结构和代码的位置随机化,从而使攻击者不知道该位置。堆栈金丝雀在堆栈上放置密码值,以检测攻击者是否篡改了堆栈。CacheOut从操作系统提取此信息,实质上通过其他软件攻击(如缓冲区溢出攻击)实现了全面攻击。

CacheOut可能会泄漏运行在同一线程上的其他进程的信息,或者跨同一CPU核心上的线程泄漏信息。例如,我们成功地泄漏了另一个执行AES解密的进程的解密输出和AES密钥。

虚拟化是现代CPU支持的一项功能,可实现计算机物理硬件的软件仿真。这基本上允许您实例化多台计算机(称为虚拟机),每台计算机都运行自己的操作系统和软件,同时共享相同的底层物理硬件。

云提供商使用虚拟化对物理硬件进行分区和隔离,以便客户可以租用硬件,而不必购买、设置和维护自己的基础设施。由于许多云实例共享相同的物理硬件,因此云供应商必须保持这些实例之间的隔离。

CacheOut利用处理器内部的硬件安全漏洞泄露来自虚拟机管理器(Hypervisor)和共存虚拟机的信息,然而,云提供商已经部署了针对CacheOut的对策。

Intel Security Guard Extensions(SGX)提供更强大的隔离保证,允许第三方在安全的飞地中运行其软件,并保护其免受受攻击的操作系统和/或虚拟机管理程序的攻击。

CacheOut利用我们发现的硬件漏洞转储SGX Enclaves的内容。因此,存储在飞地内的任何信息都可能被CacheOut泄露。SGAxe进一步扩展以恢复SGX证明密钥,从而允许网络攻击者冒充合法的SGX飞地。

英特尔SGX允许第三方在您的计算机上运行代码,并保证代码不会泄露。然而,如果飞地没有能力通过网络向远程各方证明其真实性,英特尔SGX将毫无用处。这就是远程攻击发挥作用的地方,因为它允许您的计算机以密码方式证明您的信息受到真正的英特尔计算机的保护。

英特尔SGX中的远程证明对于第三方希望在您的计算机上运行代码并保证代码不会泄露的多种应用程序都很有趣。开发人员正在慢慢采用英特尔SGX来开发这类应用,包括区块链、DRM以及联系人和指纹的安全数据存储。

使用SGAxe,我们能够泄露证明私钥,即SGX用来签署来自Enclave的报价的密钥。恢复证明密钥后,我们创建了我们自己的恶意报价Enclave,它将签署任意报价,就像这些报价来自真正的SGX Enclave一样。最后,由于在某些模式中,证明密钥以加密方式隐藏签名者的身份以提供匿名性,因此第三方开发人员可能无法跟踪是谁签署了这些虚构的报价。

不能,CacheOut和SGAxe都不能从Web浏览器中利用,因为Web浏览器目前不向JavaScript公开英特尔TSX功能。

CacheOut与之前的投机性执行工作有关,并受到其启发,包括“幽灵党”(Spectre)和“熔毁”(Meltdown)。此外,CacheOut绕过了英特尔为应对崩溃而发布的硬件缓解措施,因此需要额外的软件修复。

微体系结构数据采样(MDS)显示,攻击者可以从各种微体系结构缓冲区中采样动态数据。作为回应,英特尔建议操作系统供应商覆盖这些缓冲区的内容。然而,CacheOut证明了这种缓解是不完整的,因为我们可以在操作系统清除受害者的数据之后,将它们从L1-D缓存强制放入微体系结构缓冲区。然后,我们随后泄漏缓冲区的内容,并获得受害者的数据。

由于相声和SGAxe共享一个联合发行版本,您可能也听说过或正在听说过相声。与CacheOut和SGAxe类似,串扰是一种能够从微体系结构缓冲区泄漏数据的瞬时执行攻击。CacheOut和SGAxe关注的是行填充缓冲区,而串扰关注的是分段缓冲区,它是在不同CPU核心之间共享的缓冲区。因此,串扰是第一个跨核瞬时执行攻击。

原来,这个分段缓冲区在特定的x86指令之间共享,比如cpuid和rdrand。由于rdrand是Intel SGX信任的唯一随机数来源,因此泄露rdrand生成的随机数的能力非常有问题。特别是因为随机数对于某些密码算法是必不可少的。因此,与SGAxe一样,串扰也集中在英特尔SGX上。

Prehadow是一种投机性执行攻击,同时针对虚拟化环境和英特尔SGX。当Prehadow在2018年1月发布时,Prehadow允许攻击者提取SGX密封密钥,就像SGAxe一样。

然而,在这两年里,很多事情都发生了变化:机器已经打上了补丁,并针对Meltdown、Prehadow和MDS等攻击进行了加固。通过Prehadow提取的证明密钥早已被英特尔撤销。通过SGAxe,我们发现,尽管做了所有这些努力,攻击者仍有可能在英特尔SGX之外提取SGX证明密钥并签署伪造报价。

我们攻击背后的主要思想是迫使受害者的数据从CPU高速缓存进入泄漏的缓冲区,然后随后将其泄漏。·Cache和Cash恰好也是谐音,这意味着CacheOut的发音与Cash Out发音相同。这也解释了我们在标识中使用美元符号的原因。

这个标志象征着向芯片开刀,更确切地说,是向新交所开刀,因为它违反了新交所的安全保证。SGAxe也接近SGX的发音。

英特尔分配的CVE-2020-0549:";L1D逐出采样(L1DES)泄漏";CVSS分数为6.5的中等漏洞。

是的,通过CC0放弃权利。CacheOut的标识是由玛丽娜·明金(Marina Minkin)设计的。SGAxe标志由Stephan van Schaik设计。