[2022.12.30][CCS 2022] CETIS: Retrofitting Intel CET for Generic and Efficient Intra-process Memory Isolation

Source: https://dl.acm.org/doi/pdf/10.1145/3548606.3559344 Authors: Mengyao Xie Chenggang Wu Yinqian Zhang Download Note: https://jbox.sjtu.edu.cn/l/x1tMOM Contributor: ydh Overview 进程内隔离是一种经典的控制错误和恶意代码的方法,可以阻止控制流劫持攻击包括,代码注入攻击、代码重用攻击、data-only攻击。已有研究具体提出了code-pointer integrity(CPI),shadow stacks,CFIXX这些保护方案。这些技术保护进程中隔离区域中的敏感指针、返回地址或虚指针,并只允许可信代码访问这些区域。 已有的进程内隔离的方法可以分为两大类:一类是基于地址的隔离,这类方法通常对不可信代码的每个内存访问都会进行边界检查,如SFI。这类方法通常是基于软件实现会导致服务代码的体积增大,并且大量的插桩会导致巨大的性能开销;第二类也是近期研究关注的基于域的隔离,这类方法通过控制内存访 问权限隔离内存。当可信代码访问就开启访问权限,结束后关闭权限。为了提高效率研究者利用了很多硬件特性,VMFUNC,MPK,SMAP,其中基于MPK的方案被广泛研究,因为它不依赖于虚拟化技术。但是当权限需要频繁切换时会导致这种方案也会有高性能开销,如CPI和shadow stack。 本文提出了一种新的内存隔离机制CETIS,利用了Intel新引入的Control-flow Enforcement Technology(CET)中的shadow stack(SHSTK)机制。目前SHSTK仅仅是用来保护返回地址的完整性,并不支持通用的内存隔离,CETIS拓展了它的功能使其支持一般的内存隔离。

[2022.09.30][USENIX Security 2022] A Hardware-Software Co-design for Efficient IntraEnclave Isolation

Source: https://www.usenix.org/system/files/sec22-gu-jinyu.pdf Authors: Jinyu Gu, Bojun Zhu, Mingyu Li, Wentai Li, Yubin Xia, Haibo Chen Download Note: https://jbox.sjtu.edu.cn/l/X19mia Contributor: ydh Overview 现在的SGX程序为了最大程度地减少代码重构的工作量,避免应用程序分块带来的性能损失,现在流行的编程趋势是在单个SGX Enclave中使用第三方库或者是LibOSes运行整个应用程序。但这会使得TCB膨胀并危及敏感代码/数据。一旦三方库或是LibOS中存在漏洞,都会威胁到整个enclave的安全性。 为了解决这个问题,现在存在几种解决方法: 将一个程序拆分并放到不同的相互独立的enclaves中(Ryoan,Panoply),这种方式利用了不同enclave之间的隔离性,但是很明显在enclave交互过程中有很大的overhead。 于是就有了在enclave内部的隔离(CHANCEL,Spons & shields,Occlum,Nested Enclave)。但是这些方案都在灵活性和效率上存在限制。前三种是通过对enclave内存访问指令插桩的方法(软件方法)来做强制性的边界检查来实现的。插桩的方式会带来在运行时不可忽略的开销,并且 也会增大代码的体积。Nested Enclave使用了硬件拓展的方式,将它分为inner和outer enclave,但是inner和outer之间的交互边界的overhead依然很大。 本文的工作是设计一个有效率且安全的intra-enclave隔离方案。使用Intel MPK这个硬件特性对enclave内部的地址空间做细粒度的划分以完成隔离。