[2023.04.28][ISCA 2023] ISA-grid: Architecture of Fine-grained Privilege Control for Instructions and Registers

Authors: Shulin Fan Institute of Parallel and Distributed Systems (IPADS), Shanghai Jiao Tong University Download Note: https://jbox.sjtu.edu.cn/l/M0kend Contributor: ydh 目前存在的隔离系统大多数都关注于内存隔离而忽略指令和寄存器隔离(ISA resources)。已有的一些工作表明滥用这些ISA资源会导致严重的安全问题,例如滥用x86的CR3寄存器会打破内存隔离的特性。目前的硬件对ISA的隔离的粒度非常的粗糙,如ARM Cortex A53只提供4个异常级别(EL0 – EL3),EL1(kernel mode)中控制了上百个指令和寄存器。这篇文章提出了ISA-grid,一个硬件扩展,允许软件创建多个ISA域,每个域访问指令和寄存器有不同的权限。

[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内部的地址空间做细粒度的划分以完成隔离。