We use cookies to improve your experience with our site.

IMPULP:一种通过用户级分区进行进程内内存保护的硬件方法

IMPULP: A Hardware Approach for In-Process Memory Protection via User-Level Partitioning

  • 摘要: 近年来,当恶意代码滥用进程内内存资源时,会产生很多安全攻击。随应用程序日益复杂,不可避免的会调用第三方代码,该代码无法由程序员控制,且可能包含安全漏洞,使用户有遭受信息泄漏和控制流劫持的风险。但是,诸如英特尔内存保护扩展之类的当前解决方案会严重降低性能,而诸如英特尔内存保护密钥之类的其他方法则缺乏划分安全域的灵活性。在本文中,我们提出了进程内用户级分区保护(IMPULP),一种用于进程内内存保护的有效且高效的硬件方法。IMPULP的基本原理是用户级分区,即根据用户的指令地址将用户代码段划分为不同的安全域。通过一组边界寄存器为每个域动态指定可访问的存储空间。根据其安全域和相应的边界检查与内存访问相关的每条指令,防止不受信任的代码段进行非法的进程内内存访问。IMPULP可以用来防止各种进程内内存滥用攻击,例如缓冲区溢出和内存泄漏。我们开发了基于RISC-V指令集架构的FPGA原型系统用于测试。我们测试了七个案例以验证IMPULP的有效性,包括五个内存保护功能测试,一个针对典型缓冲区溢出的防御测试以及一个针对名为Heartbleed的著名内存泄漏攻击的防御测试。我们执行SPEC CPU2006基准测试程序来评估IMPULP的效率。IMPULP的平均运行时间开销小于0.2%,可以忽略不计。IMPULP修改硬件的资源开销小于5.5%。

     

    Abstract: In recent years many security attacks occur when malicious codes abuse in-process memory resources. Due to the increasing complexity, an application program may call third-party code which cannot be controlled by programmers but may contain security vulnerabilities. As a result, the users have the risk of suffering information leakage and control flow hijacking. However, current solutions like Intel memory protection extensions (MPX) severely degrade performance, while other approaches like Intel memory protection keys (MPK) lack flexibility in dividing security domains. In this paper, we propose IMPULP, an effective and efficient hardware approach for in-process memory protection. The rationale of IMPULP is user-level partitioning that user code segments are divided into different security domains according to their instruction addresses, and accessible memory spaces are specified dynamically for each domain via a set of boundary registers. Each instruction related to memory access will be checked according to its security domain and the corresponding boundaries, and illegal in-process memory access of untrusted code segments will be prevented. IMPULP can be leveraged to prevent a wide range of in-process memory abuse attacks, such as buffer overflows and memory leakages. For verification, an FPGA prototype based on RISC-V instruction set architecture has been developed. We present eight tests to verify the effectiveness of IMPULP, including five memory protection function tests, a test to defense typical buffer overflow, a test to defense famous memory leakage attack named Heartbleed, and a test for security benchmark. We execute the SPEC CPU2006 benchmark programs to evaluate the efficiency of IMPULP. The performance overhead of IMPULP is less than 0.2% runtime on average, which is negligible. Moreover, the resource overhead is less than 5.5% for hardware modification of IMPULP.

     

/

返回文章
返回