Skip to content

IAIK/halfdouble

Repository files navigation

Half-Double

This is the PoC implementation for the USENIX 2022 paper Half-Double: Hammering From the Next Row Over by Andreas Kogler, Jonas Juffinger, Salman Qazi, Yoongu Kim, Moritz Lipp, Nicolas Boichat, Eric Shiu, Mattias Nissler, and Daniel Gruss.

Preparations

Repository Initialization

After cloning this repository, use the following command to initialize the submodules.

make submodules

PTEditor

For page table modifications, we use the PTEditor. The kernel module needed for the experiments is built with:

make pteditor

Running on the Provided Hardware

If the PoCs are run on the provided hardware, the PTEditor module is precompiled with the kernel. Therefore, executing the following command is enough:

modprobe pteditor

Ubuntu Packages

To build the PoC for both Arm and x86, we need to install a cross-compiler and additional tools (we assume the host is x86):

sudo apt install cmake ninja-build build-essential git python3 python3-pip g++-aarch64-linux-gnu gcc-aarch64-linux-gnu python3 
sudo apt install linux-tools-$(uname -r)

Python packages

Please install the required python3 packages required via:

python3 -m pip install numpy z3-solver sklearn

The Artficats

Please follow each README.md in the subfolders:

Utility

C1 - Memory Allocation

C2 - Alternative to Memory Templating

C3 - Memory Preparation

C4 - Robust Bit-Flip Verification

End-to-End Exploit

Warnings

Warning #1: We are providing this code as-is. You are responsible for protecting yourself, your property and data, and others from any risks caused by this code. This code may cause unexpected and undesirable behavior to occur on your machine.

Warning #2: This code is only for testing purposes. Do not run it on any production systems. Do not run it on any system that might be used by another person or entity.