libmpk: Software Abstraction for Intel Memory Protection Keys

11/18/2018
by   Soyeon Park, et al.
0

Intel memory protection keys (MPK) is a new hardware feature to support thread-local permission control on groups of pages without requiring modification of page tables. Unfortunately, its current hardware implementation and software supports suffer from security, scalability, and semantic-gap problems: (1) MPK is vulnerable to protection-key-use-after-free and protection-key corruption; (2) MPK does not scale due to hardware limitations; and (3) MPK is not perfectly compatible with mprotect() because it does not support permission synchronization across threads. In this paper, we propose libmpk, a software abstraction for MPK. libmpk virtualizes protection keys to eliminate the protection-key-use-after-free and protection-key corruption problems while supporting a tremendous number of memory page groups. libmpk also prevents unauthorized writes to its metadata and supports inter-thread key synchronization. We apply libmpk to three real-world applications: OpenSSL, JavaScript JIT compiler, and Memcached for memory protection and isolation. An evaluation shows that libmpk introduces negligible performance overhead (<1 improves their performance by 8.1x over secure equivalents using mprotect(). The source code of libmpk will be publicly available and maintained as an open source project.

READ FULL TEXT
research
12/04/2020

Efficient Sealable Protection Keys for RISC-V

With the continuous increase in the number of software-based attacks, th...
research
09/14/2020

Simplex: Repurposing Intel Memory Protection Extensions for Information Hiding

With the rapid increase in software exploits, the last few decades have ...
research
05/18/2021

HeapSafe: Securing Unprotected Heaps in RISC-V

RISC-V is a promising open-source architecture primarily targeted for em...
research
09/20/2023

Capacity: Cryptographically-Enforced In-Process Capabilities for Modern ARM Architectures (Extended Version)

In-process compartmentalization and access control have been actively ex...
research
02/27/2022

Out of Hypervisor (OoH): When Nested Virtualization Becomes Practical

This paper introduces Out of Hypervisor (OoH), a new research axis close...
research
12/31/2020

Managed Information: A New Abstraction Mechanism for Handling Information in Software-as-a-Service

Management of information is an important aspect of every application. T...
research
01/20/2022

Polytope: Practical Memory Access Control for C++ Applications

Designing and implementing secure software is inarguably more important ...

Please sign up or login with your details

Forgot password? Click here to reset