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.