Skip to main navigation Skip to search Skip to main content

Kernel protection against just-in-time code reuse

  • Columbia University
  • Georgia Institute of Technology
  • Brown University

Research output: Contribution to journalArticlepeer-review

9 Scopus citations

Abstract

The abundance of memory corruption and disclosure vulnerabilities in kernel code necessitates the deployment of hardening techniques to prevent privilege escalation attacks. As stricter memory isolation mechanisms between the kernel and user space become commonplace, attackers increasingly rely on code reuse techniques to exploit kernel vulnerabilities. Contrary to similar attacks in more restrictive settings, as in web browsers, in kernel exploitation, non-privileged local adversaries have great flexibility in abusing memory disclosure vulnerabilities to dynamically discover, or infer, the location of code snippets in order to construct code-reuse payloads. Recent studies have shown that the coupling of code diversification with the enforcement of a “read XOR execute” (R X) memory safety policy is an effective defense against the exploitation of userland software, but so far this approach has not been applied for the protection of the kernel itself. In this article, we fill this gap by presenting kR X: a kernel-hardening scheme based on execute-only memory and code diversification. We study a previously unexplored point in the design space, where a hypervisor or a super-privileged component is not required. Implemented mostly as a set of GCC plugins, kR X is readily applicable to x86 Linux kernels (both 32b and 64b) and can benefit from hardware support (segmentation on x86, MPX on x86-64) to optimize performance. In full protection mode, kR X incurs a low runtime overhead of 4.04%, which drops to 2.32% when MPX is available, and 1.32% when memory segmentation is in use.

Original languageEnglish
Article number5
JournalACM Transactions on Privacy and Security
Volume22
Issue number1
DOIs
StatePublished - Jan 2018

Keywords

  • Code diversification
  • Execute-only memory

Fingerprint

Dive into the research topics of 'Kernel protection against just-in-time code reuse'. Together they form a unique fingerprint.

Cite this