ARM Pointer Authentication based Forward-Edge and Backward-Edge Control Flow Integrity for Kernels

12/23/2019
by   Yutian Yang, et al.
0

Code reuse attacks are still big threats to software and system security. Control flow integrity is a promising technique to defend against such attacks. However, its effectiveness has been weakened due to the inaccurate control flow graph and practical strategy to trade security for performance. In recent years, CPU vendors have integrated hardware features as countermeasures. For instance, ARM Pointer Authentication (PA in short) was introduced in ARMV8-A architecture. It can efficiently generate an authentication code for an address, which is encoded in the unused bits of the address. When the address is de-referenced, the authentication code is checked to ensure its integrity. Though there exist systems that adopt PA to harden user programs, how to effectively use PA to protect OS kernels is still an open research question. In this paper, we shed lights on how to leverage PA to protect control flows, including function pointers and return addresses, of Linux kernel. Specifically, to protect function pointers, we embed authentication code into them, track their propagation and verify their values when loading from memory or branching to targets. To further defend against the pointer substitution attack, we use the function pointer address as its context, and take a clean design to propagate the address by piggybacking it into the pointer value. We have implemented a prototype system with LLVM to identify function pointers, add authentication code and verify function pointers by emitting new machine instructions. We applied this system to Linux kernel, and solved numerous practical issues, e.g., function pointer comparison and arithmetic operations. The security analysis shows that our system can protect all function pointers and return addresses in Linux kernel.

READ FULL TEXT

page 5

page 7

page 8

page 9

page 10

page 11

page 14

page 15

research
01/07/2023

SFP: Providing System Call Flow Protection against Software and Fault Attacks

With the improvements in computing technologies, edge devices in the Int...
research
03/28/2022

Tightly Seal Your Sensitive Pointers with PACTight

ARM is becoming more popular in desktops and data centers, opening a new...
research
10/20/2022

Towards cryptographically-authenticated in-memory data structures

Modern processors include high-performance cryptographic functionalities...
research
12/14/2021

In-Kernel Control-Flow Integrity on Commodity OSes using ARM Pointer Authentication

This paper presents an in-kernel, hardware-based control-flow integrity ...
research
04/18/2023

InversOS: Efficient Control-Flow Protection for AArch64 Applications with Privilege Inversion

With the increasing popularity of AArch64 processors in general-purpose ...
research
03/07/2021

Comparative Analysis and Enhancement of CFG-based Hardware-Assisted CFI Schemes

Subverting the flow of instructions (e.g., by use of code-reuse attacks)...
research
04/09/2021

Reversible Watermarking in Deep Convolutional Neural Networks for Integrity Authentication

Deep convolutional neural networks have made outstanding contributions i...

Please sign up or login with your details

Forgot password? Click here to reset