G.O.S.S.I.P 阅读推荐 2022-09-13 SGXLock

admin 2022年9月14日01:01:10评论67 views字数 2608阅读8分41秒阅读模式

中秋节假期结束的第一天我们为大家推荐来自浙大网安投稿的关于SGX中Enclave与宿主程序之间关系的最新工作SGXLock: Towards Efficiently Establishing Mutual Distrust Between Host Application and Enclave for SGX,该工作已被USENIX Security 2022录用。

G.O.S.S.I.P 阅读推荐 2022-09-13 SGXLock


背景介绍

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系统由控制流不对称消除与数据访问不对称消除两个部分构成。

G.O.S.S.I.P 阅读推荐 2022-09-13 SGXLock

控制流不对称消除。根据Intel软件开发者手册,单步模式会将Enclave内的执行过程当作单条指令处理。换言之,如果在进入Enclave之前使能单步模式,那么在Enclave退出时CPU将会立刻触发单步异常。SGXLock便利用这一点在单步异常处理函数中检查Enclave退出的目标跳转地址是否为预定义地址。如此一来,SGXLock实现对控制流不对称的消除。
数据访问不对称消除。SGXLock利用Intel MPK来消除数据访问不对称。具体来说,SGXLock将Enclave与宿主程序分别归属于不同的MPK key(即E与H)。当执行宿主程序时,当前CPU将同时拥有对key E与H的访问权限。而在进入Enclave时,SGXLock会移除当前CPU对于key H的访问权限,限制 Enclave对于宿主程序内存的访问。此外,为支持Enclave与宿主程序之间的参数传递,SGXLock从宿主程序内存中分配一块区域作为传参缓存(赋予key E)。如此一来,SGXLock便实现对数据访问不对称的消除,使得Enclave无法访问除传参缓存之外的宿主程序内存。

此外,SGXLock还采用了额外的安全加固技术来防止上述不对称消除技术被不可信Enclave绕过。首先,为防止不可信Enclave恶意篡改宿主程序的栈指针,SGXLock在进出Enclave前后会对宿主程序栈指针进行完整性检查。其次,由于WRPKRU与XRSTOR指令可用于在Enclave内更新当前CPU对于MPK key的访问权限,因此SGXLock需要防止不可信Enclave借助这两种指令的执行来绕过数据访问不对称消除技术。对于XRSTOR指令,SGXLock通过关闭特定Enclave属性位使得XRSTOR指令无法影响当前CPU对于MPK key的访问权限;对于WRPKRU指令,SGXLock借助于代码扫描技术来确保Enclave内不会有该指令的出现。

兼容性与性能评估
SGXLock的实现被集成于Intel SGX SDK中,对Enclave开发者来说是无感知的。仅有的限制在于移除了对ECALL/OCALL接口参数中user_check属性的支持。值得注意的是,user_check属性本身是不被鼓励使用的,因为其容易为Enclave带来安全漏洞问题(比如Time-of-Check-Time-of-Use攻击)。

针对性能,作者将测试分为了微观跑分和宏观跑分。由于SGXLock主要作用于Enclave与宿主程序之间的交互过程,因此作者在微观跑分中主要关注ECALL/OCALL函数调用过程中SGXLock引入的性能开销(包括参数传递性能开销)。而对于宏观跑分,作者分别选取了3个具有代表性的现实场景(神经网络推理、数据库操作、HTTP服务器)进行测试,实验结果表明了SGXLock在现实场景中的高效性。

G.O.S.S.I.P 阅读推荐 2022-09-13 SGXLock


论文下载:https://www.usenix.org/system/files/sec22-chen-yuan.pdf
论文slides:

https://www.usenix.org/system/files/sec22_slides-chen_yuan.pdf

原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2022-09-13 SGXLock

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年9月14日01:01:10
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   G.O.S.S.I.P 阅读推荐 2022-09-13 SGXLockhttp://cn-sec.com/archives/1295387.html

发表评论

匿名网友 填写信息