中秋节假期结束的第一天我们为大家推荐来自浙大网安投稿的关于SGX中Enclave与宿主程序之间关系的最新工作SGXLock: Towards Efficiently Establishing Mutual Distrust Between Host Application and Enclave for SGX,该工作已被USENIX Security 2022录用。
背景介绍
SGX的编程模型将一个应用程序划分成两个部分:Enclave与宿主程序。Enclave是一段由SGX硬件保证隔离的地址空间区域,宿主程序、系统软件(包括OS,hypervisor)等都无法访问Enclave的内容。因此用户可以选择将敏感代码或数据存放在Enclave中来保证其机密性与完整性。宿主程序则用于运行应用程序的主要程序逻辑。
现有基于SGX的系统一般假设Enclave是可信的,而宿主程序是不可信的。然而这种假设忽略了现实场景中不可信Enclave对宿主程序所可能带来的威胁。一个具有代表性的场景是第三方Enclave。即服务提供商出于便利以Enclave的形式进行服务分发,使用者可以将服务Enclave嵌入在自己的应用程序中直接进行使用,如此大大简化了服务提供商与使用者之间的交互流程。而此时对于服务使用者来说,来自第三方的服务Enclave是不可信的。并且,SGX所提供的隔离特性使得对于第三方服务Enclave的审查尤为困难。此外,Enclave内潜在软件漏洞的存在也使得其对于宿主程序来说是不可信的。
在本文中,作者认为Enclave与宿主程序之间真实的威胁模型应该是互不信任的,并尝试建立起Enclave与宿主程序之间的互不信任关系。具体来说,本文首先归纳总结了Enclave与宿主程序之间存在的两类不对称问题:数据访问不对称与控制流不对称。数据访问不对称表示宿主程序由于SGX硬件隔离无法访问Enclave内存区域,而反之Enclave则可直接访问宿主程序的内存区域。控制流不对称表示宿主程序只能通过预定义入口进入Enclave,而Enclave在退出Enclave时可以选择跳转到宿主程序的任意地址。
基于此,为限制不可信Enclave利用这两类不对称问题对宿主程序造成威胁,本文提出SGXLock,一种针对不可信Enclave的沙盒方案。相比于已有的基于进程隔离的Enclave沙盒方案,SGXLock利用已有硬件特性实现针对Enclave的进程内隔离,具有高效性与高可扩展性。具体来说,SGXLock利用Intel MPK硬件特性来消除数据访问不对称,使得Enclave只能访问到有限宿主程序内存区域;利用单步模式来消除控制流不对称,确保Enclave退出只能跳转到宿主程序的特定位置。通过对数据访问与控制流不对称的消除,SGXLock实现将Enclave与宿主程序之间的交互约束到预定义接口。
下图展示了SGXLock系统的系统总览图。SGXLock系统由控制流不对称消除与数据访问不对称消除两个部分构成。
此外,SGXLock还采用了额外的安全加固技术来防止上述不对称消除技术被不可信Enclave绕过。首先,为防止不可信Enclave恶意篡改宿主程序的栈指针,SGXLock在进出Enclave前后会对宿主程序栈指针进行完整性检查。其次,由于WRPKRU与XRSTOR指令可用于在Enclave内更新当前CPU对于MPK key的访问权限,因此SGXLock需要防止不可信Enclave借助这两种指令的执行来绕过数据访问不对称消除技术。对于XRSTOR指令,SGXLock通过关闭特定Enclave属性位使得XRSTOR指令无法影响当前CPU对于MPK key的访问权限;对于WRPKRU指令,SGXLock借助于代码扫描技术来确保Enclave内不会有该指令的出现。
针对性能,作者将测试分为了微观跑分和宏观跑分。由于SGXLock主要作用于Enclave与宿主程序之间的交互过程,因此作者在微观跑分中主要关注ECALL/OCALL函数调用过程中SGXLock引入的性能开销(包括参数传递性能开销)。而对于宏观跑分,作者分别选取了3个具有代表性的现实场景(神经网络推理、数据库操作、HTTP服务器)进行测试,实验结果表明了SGXLock在现实场景中的高效性。
https://www.usenix.org/system/files/sec22_slides-chen_yuan.pdf
原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2022-09-13 SGXLock
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论