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拓展了它的功能使其支持一般的内存隔离。