L1TF漏洞对Intel SGX的影响及防御方法

2019-01-03 13:43 栏目:经验之谈 来源: 查看()
L1TF漏洞(Foreshadow)是一个严重的安全漏洞,已在英特尔平台上爆炸。该漏洞极具影响力,范围广泛且难以使用,特别是对于英特尔SGX的安全扩展,这使得许多系统依赖于此安全功能。面对巨大的挑战。 TEEX团队首先分析了漏洞的技术原理和英特尔的官方响应计划,并在此基础上,提出了“虚拟化+ SGX”安全增强设计,可以有效抵御L1TF漏洞,以及如何将SGX应用于区块链。该系统进行了初步讨论。

什么是英特尔L1TF漏洞?

L1TF漏洞允许低权限攻击者窃取加载到L1缓存并属于特权软件的私有数据。此漏洞有三种变体:


L1终端故障 - SGX:用户模式攻击者可以窃取属于1级缓存中的Enclave的数据;

L1终端故障 - OS/SMM:低权限攻击者可以窃取属于1级缓存中属于更高权限(OS或SMM)的数据;
L1终端故障 - VMM:恶意来宾虚拟机可以窃取属于虚拟机监视器或位于主高速缓存中的其他来宾虚拟机的数据。

L1TF几乎影响所有具有预测执行技术和页表转换功能的英特尔处理器。官方发布的受影响处理器列表包含了近年来英特尔发布的几乎所有CPU型号。

1.背景:页面表,缓存,预测执行和隐蔽通道

页表:页表是CPU管理内存的核心机制。当启用页表机制时,CPU指令使用虚拟地址(也称为线性地址)访问存储器。随后,CPU使用页表将虚拟地址转换为物理地址,从而从物理存储器读取/写入数据。在页表中,每个虚拟地址页面(通常为4KB粒度)都有自己的页表条目。页表条目包含与虚拟地址页对应的物理地址页,以及相应的许可位和控制位。有两个特殊位,即当前位和保留位,它们与此攻击有关。 P位表示当前页表项是否有效(P位置0表示当前页表项无效),对保留位的相同检查也表示当前页表项无效;

缓存:缓存是CPU内部的高速存储区域。 CPU将物理内存中的数据加载到内部缓存中,然后对物理内存的访问直接在缓存中,从而提高CPU访问内存的速度。当前的处理器高速缓存通常分为多个级别,1级高速缓存,2级高速缓存和3级高速缓存(也称为LLC:最后级高速缓存)。在多核处理器中,每个CPU核心都有自己的1级和2级缓存。第三级缓存通常由所有CPU内核共享;

预测执行:预测执行是当前CPU加速指令处理的主要技术。当CPU执行某些控制流跳转(间接跳转,函数调用,中断)并且不立即获得下一条指令时,CPU将预测性地继续执行。如果预测正确,则可以有效地提高指令处理速度。如果预测错误,由于预测执行,CPU将回滚所有结果;

隐蔽通道:转换通道是间接的数据传输方法。两个隔离的程序可以通过控制某些系统状态的变化和间接传递数据来绕过隔离机制。如果A想要将私有数据传递给B,则A首先根据数据的内容改变系统状态(例如,根据不同的值填充缓存中的不同区域)。然后,B可以通过观察系统的状态变化间接获得A传递的私有数据。这种间接的数据传输方法称为隐蔽通道。

2. L1TF漏洞的详细原则

当CPU访问虚拟地址时,虚拟地址通过页表转换为物理地址。此时,如果页表中的P位设置为0,或者设置了保留位,则表示页表项无效,即对应的虚拟地址未映射到物理地址。此时,负责CPU中地址转换的模块将立即停止地址转换过程并抛出Page Fault。这种特殊的页面错误也称为终端错误。

但是,当发生终端故障时,具有预测执行特性的CPU不会立即跳转到错误处理程序,而是预测触发错误的指令。此时,CPU基于页表条目的内容预测性地将目标虚拟地址转换为物理地址(即使页表条目被标记为无效)并继续访问存储器。具体地,CPU从发生故障的页表条目中读取物理页面的起始地址,并从所访问的虚拟地址获得页面内的地址偏移,最终形成物理地址。如果物理地址中的数据已加载到当前CPU内核的1级高速缓存中,则将读取数据并将其传递给后续预测的执行指令。

虽然这些预测执行的结果将由CPU回滚,但CPU无法恢复这些指令对缓存状态的影响。因此,这些预测执行指令可以使用高速缓存状态来建立Confudant Channel(转换通道)并将读取的目标数据传递给攻击者。

由于预计CPU访问的物理地址是在终端故障发生后生成的,而不是由页表转换,物理地址访问将能够绕过许多内存访问检查,特别是三种类型:

忽略英特尔SGX Enclave内存保护检查。 Enclave是英特尔SGX提供的可信执行环境。 Enclave的数据在内存中加密,只有在加载到缓存中时才会解密。在完成将虚拟地址转换为物理地址后,CPU会检查目标地址是否属于Enclave并且当前是否在Enclave中运行;

绕过SMM的内存保护检查。 SMM模式是英特尔的高权限操作模式。页表转换完成后,CPU检查目标物理地址是否属于SMM模式的内存,并检查当前操作模式是否可以访问它;

绕过了英特尔虚拟化技术系统的扩展页表(EPT)。在虚拟化环境中,在完成页表转换之后,由扩展页表(EPT)第二次转换得到的物理地址,以获得最终用于存储器访问的物理地址。扩展页表广泛用于确保不同虚拟机之间的内存隔离。

L1TF漏洞可以分为三种不同类型的检查,因此漏洞也分为三种不同的变体:L1TF-SGX,L1TF-OS/SMM和L1TF-VMM。

3. L1TF漏洞的依赖性是什么?

L1TF漏洞要求目标CPU位于攻击代码所在的CPU核心和缓存中。目标数据可以是任何当前特权级别或用户无法访问的数据。同时,L1TF要求攻击者能够在目标计算机上运行攻击代码。

具体来说,L1TF依赖于以下三种攻击条件,只有在满足这些条件时,才能进行攻击:

1.目标数据必须加载到攻击者CPU核心的1级缓存中; 1级缓存的大小非常有限,内容经常被替换,因此攻击窗口非常小;

2.攻击代码必须在CPU核心中运行,目标数据存储在1级缓存中。同时,攻击代码中使用的页表必须具有可用的页表条目,以构造目标数据的物理地址;

3.攻击代码只能通过预测执行读取目标数据,并且必须通过转换通道才能最终获得目标数据。

条件1表示攻击者必须实施某些技术以确保目标数据已加载到第一级存储中。条件2和3要求攻击代码必须在目标数据缓存的CPU核心中运行。在具有Hyperthead技术的Intel CPU中,CPU内核具有两个物理线程(物理线程),可以同时执行并共享一级缓存,因此攻击代码只需要在目标CPU核心中的任何物理线程中运行。 。

L1TF对英特尔SGX有什么影响?

英特尔SGX是英特尔CPU提供的硬件安全功能。 SGX提供了一个受信任的执行环境Enclave,它允许用户使用安全性在Enclave中运行关键代码和数据,并提供一组创建,管理和销毁Enclave的指令。 Enclave中的代码和数据存储在专用的物理内存区域EPC(Enclave Page Cache)中,EPC中的数据将以密文形式存储在物理内存中,只有在它加载到CPU后,才能在EPC数据中将被解密并保存在缓存中。因此,除了防止高权限级别的软件攻击外,Enclave还可以抵御诸如冷启动攻击和总线检测攻击等物理攻击。

1.如何使用L1TF读取Enclave中的加密内存?

虽然Enclave中的数据在内存中加密,但它以明文形式存储在CPU缓存中。 L1TF漏洞绕过了CPU对Enclave内存访问的检查,允许攻击者窃取加载到1级缓存中的Enclave数据。在今年的USENIX Security 2018会议上,L1TF创建者发表了论文“FORESHADOW:通过瞬态无序执行提取英特尔SGX王国的密钥”[1],解释了如何利用L1TF-SGX漏洞。 Enclave中的隐私数据。

如本文所述,攻击Enclave时可以更轻松地实现L1TF漏洞。英特尔SGX提供了一个特殊的命令* eldu *来帮助不受信任的操作系统安全地加载Enca高仿lve内存。攻击者发现当Elcad命令加载Enclave内存时,它会将其加载到当前CPU和缓存中。

也就是说,攻击者不必猜测何时将目标数据加载到1级缓存中。它可以直接通过eldu指令将任何Enclave内存直接加载到当前CPU内核的1级缓存中,并使用L1TF-SGX漏洞进行读取。

2.英特尔提供的L1TF漏洞补丁和防御机制

对于L1TF漏洞,英特尔正式提供微码补丁。为了保护SGX,该补丁主要提供了两项安全增强功能:

进入和离开Enclave时清除当前CPU核心的1级缓存。确保Enclave中的数据在退出Enclave后不会保留在1级缓存中并且不会被盗;

将Envirve的远程身份验证信息添加到当前启用Hyperthread的报告中,并建议用户拒绝信任在Hyperthread平台上运行的Enclave。

对于上面提到的eldu命令,英特尔的官方文档[2]没有提到是否修补命令以防止它被用于L1TF攻击。如果未修改指令的行为,攻击者仍可使用L1TF漏洞读取Enclave内的数据。

此方法要求用户拒绝在启用了Hyperthread的平台上运行Enclave。但是,Hyperthread的控制主要由BIOS完成,无法在运行时动态打开/关闭。这意味着用户必须完全放弃Hyperthread技术才能使用SGX。与此同时,一些硬件供应商的BIOS不支持关闭Hyperthreads,这使得用户无法在这些平台上安全地使用SGX技术。

TEEX团队的“虚拟化+ SGX”安全增强计划

考虑到eldu命令是否被修补的未知威胁,以及某些机器可能无法使用英特尔的微码修补,并且为了控制未来SGX可能的侧通道攻击的安全风险,TEEX团队提出了基于虚拟化的SGX安全性技术。增强程序:TXVisor。该解决方案利用虚拟化技术隔离不同的Enclave环境,以及Enclave和非Enclave环境,以确保用户数据和代码逻辑不受L1TF等攻击的影响。该计划包括以下技术要点:

L1缓存隔离:每次退出Enclave时,TXVisor都会清除当前CPU内核的L1缓存,从而防止攻击者使用L1缓存并在Enclave内外构建一个隐蔽通道,从根本上消除了L1TF攻击,甚至如果没有这同样适用于使用英特尔补丁的硬件平台;

ELDU命令安全性增强:对于官方Intel补丁中未提及的eldu命令,TXVisor将通过“Trap-and-emulate”方法动态捕获指令的执行,并在确保其原始功能的同时添加额外的安全检查。防止它破坏1级缓存的隔离;

超线程模式下的安全增强功能:TXVisor可防止攻击者利用超线程技术利用L1TF漏洞在运行时攻击目标Enclave。通过将Enclave环境与非Enclave环境隔离,该解决方案可以确保Enclave安全性,同时允许用户在Enclave外部使用Hyperthread技术来提高系统性能,进一步降低安全保护带来的性能损失;

受信任的运行时环境验证:TXVisor提出了一种结合了硬件和软件的双远程验证方法,使用户能够安全地验证应用程序是否在受SGX和TXVisor保护的平台上运行。

该解决方案可以在没有Intel硬件补丁的平台上完全抵御诸如L1TF之类的攻击。同时,我们提出了几种系统优化方法,以减少安全性增强带来的性能损失。此项工作之后是CHAOS [IS'07],CloudVisor [SOSP'],HyperCoffer [HPCA'],TxIntro [HPCA](年度最佳论文提名奖),CrossOver [ISCA'],SeCage [CCS] ,AdAttester [MobiSys],Nexen [NDSS],SGX Migration [DSN],vTZ [USENIX Security],VButton [MobiSys],Fidelius [HPCA],EPTI [USENIX ATC],关于虚拟化的一系列工作和可靠的隔离环境一。

新交所和区块链

如何确保数据隐私一直是区块链领域的问题之一。目前,许多领域的技术团队正在探索如何使用英特尔SGX等硬件安全技术来为区块链提供隐私保障。虽然没有成熟的方法来解决英特尔SGX的区块链隐私问题,但研究人员已经证明SGX技术可以有效地提高区块链中数据和操作的隐私性。

然而,新交所技术并非“不错的黄金机构”。无论是这个L1TF-SGX漏洞还是之前的频道攻击(如Spectre),它都表明SGX存在安全隐患。因此,对于区块链系统,合理的SGX使用计划不仅应该使用SGX技术来提高区块链的安全性,还应该限制SGX漏洞情况下漏洞的影响。

一些现有的解决方案存在过多依赖SGX的问题,例如设计完全依赖于SGX隐私的区块链一致性协议。一旦SGX的安全性易受攻击,安全风险将立即蔓延到整个区块链,导致整个链条崩溃。 TEEX团队可以使用SGX来确保用户数据和计算逻辑安全。通过结合虚拟化技术和区块链本身的特性,它可以有效地控制漏洞后SGX的范围。虽然使用SGX来增强区块链的隐私性,但它并不像整个系统那样依赖其安全根。

总之,我们认为TEE将成为区块链的重要支持技术之一,就像密码学一样。 TEEX团队希望通过多年积累的TEE安全技术为现有和未来的区块链系统提供安全可靠的基础设施服务,从而促进整体生态繁荣。在后续工作中,TEEX将对TEE和区块链的组合进行更多讨论,敬请期待。

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发