Foreshadow:麻烦的预兆?


当前的2018年很有趣,因为几乎每个月都有关于新硬件漏洞的信息: SpectreMeltdown


最近-几周前! -有关漏洞ForeshadowL1Terminal Fault的新闻备受关注 ,据报道,这些漏洞甚至绕过了SGX(Sofware Guard扩展)机制,而该机制以前被认为是坚不可摧的。


这些漏洞有多危险? 是否有可能对他们进行防御,如果可以,怎么做? 我们将在下面讨论所有这些。


快速参考


Foreshadow或L1TF是一整套漏洞,包括:


  • CVE-2018-3615-绕过SGX;
  • CVE-2018-3620-攻击操作系统的内核以及SMM(系统管理模式);
  • CVE-2018-3646-用于攻击虚拟机

许多出版物的作者都特别担心规避SGX保护的可能性:Spectre和Metldown不知道该怎么做,这使得任何敏感数据都无法防御。 要了解此警报的合理性,让我们分析SGX机制的操作原理。


什么是SGX,我该如何解决?


缩写SGX代表Software Guard Extensions。 这是用于Intel处理器的指令集的名称,该指令集用于突出显示代码和数据的私有区域。 2015年,新交所的一位创始人Matthew Hoykstra(Matthew Hoeskstra)发表了一篇文章 (另请参阅俄语翻译 ),其中他确定了创建该技术的以下目标:


  • 使应用程序开发人员能够保护关键数据免受未经授权的访问或通过具有更高特权的恶意软件的更改;
  • 允许应用程序确保敏感数据和代码的完整性和机密性,而不会影响特权系统的运行,也不会影响其对平台资源的计划和控制;
  • 使平台测量可信代码,并使用该应用程序生成签名证书和其他证书,以确认该代码已在可信环境中正确初始化;
  • 使用户能够控制应用程序,而不会限制安装和删除应用程序和服务的自由;
  • 允许开发人员使用他们已知的工具和流程来创建受信任的应用程序。
  • 为受信任的应用程序提供更高的生产率
  • 允许应用程序确定代码和数据的受信任区域,即使在攻击者物理控制平台并可以对内存进行直接攻击的情况下(请参见此处的一个示例)。

所引用的文章具有比技术细节更多的市场营销。 它概述了SGX技术可以执行的操作,但没有说明如何完成此操作。 我们将在下面对此进行详细描述。 在我们的演示中,我们将主要依靠国际密码学研究协会(IACR,国际密码学研究协会)发表的详细文章


SGX在内存中创建一个受保护的区域-PRM(处理器保留内存) ,也称为安全区。 处理器可保护隔离区免受任何访问尝试的侵害,包括从核心,虚拟机管理程序和SMM (系统管理模式)以及外围设备的访问尝试。


PRM具有一个特殊的高速缓存,即所谓的EPC(安全区页面高速缓存) ,它由四个KB的页面组成,用于存储安全区代码和数据。 当调用一个受信任的函数时,应用程序仅“查看”安全区域数据。 禁止任何外部访问,包括从OS进行的访问。


在尝试进入安全区时,会发生所谓的认证程序。 飞地请求硬件签名的报告,包括有关其值的信息。 该报告发送到认证服务器。 应用程序密钥的公共部分被发送到安全区。 然后根据安全区和平台生成私钥。 该密钥用签名密钥加密,并存储以备将来使用。


正如Intel官方出版物中所述,SGX可以防御数据和代码的各种攻击:系统和用户软件以及引导加载程序都可以。 但是新交所无法防范所谓的旁信道攻击。 新交所无法避开臭名昭著的幽灵和熔毁。


但是,最近发生了一些攻击(实际上,甚至在Foreshadow之前,例如, 在此处 ,请参阅此处 ),这些攻击使您可以绕过SGX保护。 而且,Foreshadow只是其中最响亮和轰动的。


SGX文档指出:“无论是在任何级别的特权,都无法从飞地读取,也不能向其中写入任何内容。” 但是,实际上,情况并非如此。


早在今年春天,就出现了有关名为SGX Spectre的攻击的信息,利用该攻击您可以从飞地提取数据。 正如俄亥俄州立大学的研究人员所表明的(例如,请参阅此处 ),这要归功于SDK中的“漏洞”,开发人员可以利用这些漏洞将SGX支持集成到他们的应用程序中。 受影响的SDK中包括Intel SGX SDK,Rust-SGX和Graphene-SGX。 在本文中可以找到对该攻击的详细分析; 在YouTube上也发布了一个视频,其中有一个很好的例子。



视频当然令人信服:进入飞地的事实并不意味着可以窃取重要数据。 但是,必须注意:SGX机制的完整性和机密性受到侵犯。


Foreshadow通过使用所谓的旁通道攻击来破坏隔离。


就像臭名昭著的Spectre and Meltdown中一样,该漏洞使用推测性执行命令的机制。 它基于以下几点:当由于PTE表(页面表条目)中缺少Present标志而访问导致终端页面错误的虚拟地址上的内存时,Intel处理器以推测方式计算物理地址并加载数据(如果它们)在L1缓存中可用。 在检查物理内存中的数据可用性之前以及在检查此数据以供读取之前,先进行推测性计算。 如果PTE中没有Present标志,则该操作被丢弃;否则,该操作将被丢弃。 但是数据被“存储”在缓存中并可以从中提取。 数据可以提取到绝对的任何物理地址; 这为攻击者带来了巨大的机会,并允许例如从来宾计算机中提取主机上的数据。 演示视频已经出现:



但是,坦率地说,该视频看起来并不令人信服,并且类似于今年早些时候在Internet上冲浪的Spectre和Meltdown漏洞的无数演示:看来我们设法克服了保护措施-但是接下来该怎么办? 当然,SGX绕过显然不是一个好用例。


为什么要害怕?


与广受好评的“幽灵与崩溃”不同,Foreshadow仅威胁英特尔处理器。 在描述中,请注意,借助此攻击,不仅可以从飞地中提取机密数据,还可以提取私有证书密钥,这会破坏对整个SGX生态系统的信任。


各种Foreshadow版本都威胁着所谓的系统管理模式(SMM),这是系统管理程序操作系统的核心。 一些专家指出,使用Foreshadow可以从第三方云中的虚拟机窃取数据。 在一些出版物中,要指出的是,新攻击甚至允许您绕过先前计算的补丁,以防止Spectre和Meltdown攻击。


但是,与Spectre和Meltdown一样,所有引人注目的陈述都应格外谨慎。 尚未记录使用耸人听闻的攻击盗窃重要和机密数据的案例。 漏洞利用的已发布原型(正如其作者自己警告的那样)仅是实验样本,已从实际实践中撕下,并且并不总是适用于所有人,尤其是在涉及虚拟机时。 因此,现在恐慌还为时过早:不仅要渗透到飞地,而且要从飞地中提取真正重要的信息,您需要真正尝试。


迄今为止,还没有真正的严重攻击。


补丁和性能


防范硬件漏洞(如果不加以保护,则可减轻其后果)的修补程序主题也非常重要。 回想一下《 Spectre and Meltdown》中的最新故事:火灾发生时采取了许多措施,导致的后果不是最好的:系统突然重启,性能急剧下降等。 微软甚至不得不发布禁用英特尔补丁的更新 。 在今年的前三个月中,仅对英特尔提起了32起诉讼


大型公司对有关Foreshadow漏洞的信息的发布迅速做出了回应: 英特尔红帽SUSEVMwareOracle发表了相关声明。 思科产品和Linux内核的更新发布得很快。


并非没有事件:英特尔迅速发布了微代码更新,但没有发生奇怪的事件:在更新前后突然宣布禁止发布性能测试结果(但是,该禁令被取消了 )。 很难说。 补丁对性能的影响这一主题无疑值得单独研究和单独撰写。 而且我们有可能在不久的将来发表这样的文章。


结论


在本文中,我们简要概述了Foreshadow类的漏洞。 自然,在一篇文章的框架内,不可能谈论Foreshadow组漏洞的所有方面。 因此,我们为那些希望了解更多信息的人提供了一系列有用的链接:



如果您有分析硬件漏洞及其后果的经验,请发表评论。

Source: https://habr.com/ru/post/zh-CN422137/


All Articles