G.O.S.S.I.P 阅读推荐 2023-05-23 CETIS

admin 2023年5月25日09:05:15评论42 views字数 3409阅读11分21秒阅读模式

今天要给大家推荐的论文是来自中科院计算技术研究所内构安全实验室助理研究员谢梦瑶老师投稿的论文 CETIS: Retrofitting Intel CET for Generic and Efficient Intra-process Memory Isolation,该工作发表于CCS 2022

G.O.S.S.I.P 阅读推荐 2023-05-23 CETIS

进程内内存隔离机制

系统代码大多用底层语言实现,如C/C++等,攻击者利用这些底层语言的内存安全问题可以泄露进程内的关键信息,甚至可以劫持程序的控制流。为了抵御控制流劫持攻击,研究人员提出了一系列防御机制,如代码指针完整性机制(Code Pointer Integrity,CPI)、控制流完整性机制(Control Flow Integrity,CFI)、影子栈(Shadow Stack)机制等。进程内隔离机制可以用于保证元数据的完整性和机密性。进程内内存隔离的另一个重要的场景是保护即时编译器动态生成的代码。进程内内存隔离机制主要可以分为两种,分别是基于地址的隔离方法和基于域的隔离方法。

基于地址的隔离方法需要插桩每条访存指令,在每条访问指令执行之前检查访问的目的地址是否落在被隔离区域内。一些工作如MemSentry和CFIXX等利用Intel MPX实现地址隔离。基于域的隔离方法将被隔离区域单独划分为一个域,访问被隔离区域前打开其访问权限,访问完成后立即关闭访问权限。Intel EPT/VMFUNC、Intel MPK和Intel SMAP等硬件都可以用于实现域隔离。现有的进程内内存隔离机制不够高效,本文提出了一种新的进程内隔离机制CETIS。在本文中,攻击者能够利用内存破坏漏洞拥有任意地址读写的能力,CETIS的保护对象包括部署了内存破坏防御机制的服务器,浏览器等应用程序,以及即时编译器,这里的安全假设是所部署的内存破坏防御机制是安全的,打破内存隔离机制是进一步攻击内存破坏防御机制的先决条件。

Intel CET技术

Intel CET(Control-flow Enforcement Technology)机制是Intel第11代处理器新增的硬件特性,其中,SHSTK是硬件实现的影子栈机制,新增的影子栈指针寄存器(Shadow Stack Pointer,%SSP)指向影子栈的栈顶。CALL指令执行时,返回地址除了会被压入%RSP 寄存器指向的程序主栈中,还会被压入%SSP 寄存器指向的硬件影子栈。RET 指令执行时,硬件会检查%RSP寄存器指向的返回地址和%SSP寄存器指向的返回地址是否相同,如果不相同则会触发#CP异常,导致程序崩溃。

CETIS隔离框架

1)核心思想和挑战

Intel CET 的SHSTK 机制是硬件实现的影子栈机制,其本意是利用影子栈页存储程序的返回地址。CETIS 的核心思想是在访存请求处施加隔离,将访存请求分为可信访问请求和不可信访问请求,可信代码使用可信请求,即WRSS指令访问被隔离区域,普通的写指令无法修改其内容。CETIS 的隔离方法无需插桩所有的访存指令,也避免了在访问被隔离区域前后频繁开关访问权限。使用CET机制实现隔离之前,我们首先从以下几个方面对SHSTK 机制和WRSS 指令进行评测:

  • WRSS 指令的延迟。由于CETIS 隔离机制使用WRSS 指令将数据存储到被隔离的内存区域,我们需要测量WRSS 指令的延迟来估计频繁存储引入的性能开销。如图1所示,实验结果表明WRSS 指令的延迟大约是9.3 个时钟周期,比MOV 指令慢。WRSS指令的两个变体,即WRSSQ 指令和WRSSD 指令的延迟是相同的。

G.O.S.S.I.P 阅读推荐 2023-05-23 CETIS

图1 执行不同次数的MOVQ/MOVD 指令和WRSSQ/WRSSD 指令写入数据的延迟

  • 与Intel MPK 的比较。尽管提供了不同的隔离抽象,但CETIS 隔离机制在应用场景方面与基于Intel MPK 的隔离机制非常相似。我们需要将CETIS 与目前最高效的隔离方法MPK进行比较。如图2所示,实验结果表明使用WRSS 指令向任意地址写入任意长度的数据时需要数据拼接操作。WRSSQ 指令的性能好于WRSSD 指令。当写入的数据长度小于等于24字节时,WRSSQ 指令的性能好于MPK相关的访存指令序列。

G.O.S.S.I.P 阅读推荐 2023-05-23 CETIS

图2 缓存命中时,WRSSQ 和WRSSD 写不同字节数据的延迟

  • SHSTK 机制的其他属性。实验发现影子栈页可以具有执行权限,因此可以用来保护数据。此外,影子栈页上的读和执行操作与普通页面相比没有区别。

基于上述实验,我们发现SHSTK 机制是有效的,并且在一次写入少量数据的情况下,CETIS 可以比基于MPK 的隔离方法更高效。此外,CETIS 可用于保护更通用的数据,例如代码。然而,基于CET的隔离技术面临一些挑战。(1)使用WRSS 指令写入任意长度的数据时,需要进行数据拼接操作;(2)WRSS 指令的效率不如MOV 指令。

2)CETIS框架

为了解决上述挑战,CETIS提供了一个软件框架(如图3所示)。CETIS 为被隔离内存区域提供了一个内存文件的抽象。一个被隔离的内存区域被抽象为一个CETIS 内存文件结构,称为cmfile。隔离的内存区域和WRSS 复杂的使用细节对用户是完全透明的。用户可以直接操作cmfiles 以确保被隔离区域的完整性。CETIS 会把对cmfile 的操作转化为对相应的隔离内存区域的操作。cmfile 支持两种不同的访问模式– 读/写模式(Read/Write mode)和追加模式(Append mode)。读/写模式允许用户在cmfile 的任意位置读取和写入任意长度的数据。追加模式支持在cmfile 的连续位置写入小长度的数据。在这种模式下,CETIS 引入了一个写拼接缓冲区(Write-combine Buffer),只在需要时将缓冲区写回到隔离的内存区域中。CETIS 保留了一个64 位的通用寄存器%R14,它被用作缓冲区,因此在cmfile 中一个8 字节对齐的位置缓存最多8 字节的数据。通过使用CETIS 提供的一套API 对CETIS 内存文件进行读/写,可以相应地读/写被隔离的区域,不用应对复杂的WRSS指令使用。

G.O.S.S.I.P 阅读推荐 2023-05-23 CETIS

图3 CETIS框架

我们将CETIS应用在CPI、CFIXX等防御机制和浏览器引擎上。以CPI为例,CETIS 用SHSTK 机制替代安全栈保护程序中的返回地址不被篡改。安全指针存储区域中为每个敏感指针存储一组元数据,即(value、upper、lower)。每次更新这24 字节的元数据需要执行3 次WRSSQ 指令。为了降低开销,我们提出了一种无损压缩的方法,将24字节元数据压缩为16字节或者8字节。

实验与评估

我们首先测试了保护内存破坏防御机制的性能开销。我们在防御机制上部署了四种隔离机制,分别是信息隐藏(IH),基于SFI的地址隔离机制,基于MPK的域隔离机制和基于CETIS的隔离机制。如图5所示,在SPEC CPU2017 C/C++测试用例中,CETIS的几何平均性能开销低于其他隔离机制(低于5%)。CETIS在保护网络服务器Nginx上的性能开销也低于已有隔离机制。其次,我们测试了保护引擎的代码缓存的性能开销,如图6所示,CETIS的引入的性能开销低于已有的基于mprotect和MPK的性能开销。

G.O.S.S.I.P 阅读推荐 2023-05-23 CETIS

图5 CPI 在使用IH/SFI/MPK/CETIS 保护其敏感内存对象时在SPEC CPU2017 C/C++测试套件上产生的性能开销

G.O.S.S.I.P 阅读推荐 2023-05-23 CETIS

图6 使用mprotect/MPK/CETIS 保护ChakraCore 引擎的代码缓存时,给Octane 基准测试集引入的性能开销

总结

本文首次提出了一种能够部署在商用处理器上的新型进程内内存隔离方法CETIS,低开销地保证进程内内存的完整性。CETIS 扩展了Intel CET中的硬件影子栈机制,用于隔离保护关键数据和关键代码。CETIS 将被隔离区域所在的内存页设置为影子栈页,分离访存指令,低开销地保证被隔离区域的完整性。为了解决硬件影子栈机制中的专用访存指令执行效率低且受限的问题,CETIS 提供了一个全新的内存隔离抽象,并提供了一组API,使得用户可以高效、方便地使用隔离框架CETIS。CETIS 比现有的基于Intel MPX 的地址隔离方法和基于Intel MPK 的域隔离方法更高效。


论文下载:https://dl.acm.org/doi/pdf/10.1145/3548606.3559344


原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2023-05-23 CETIS

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年5月25日09:05:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   G.O.S.S.I.P 阅读推荐 2023-05-23 CETIShttps://cn-sec.com/archives/1758507.html

发表评论

匿名网友 填写信息