There is a newer version of the record available.

Published December 11, 2025 | Version v3

UncoreBleed

Authors/Creators

Description

This repository contains the artifact and reference implementation corresponding to the paper:

> **UncoreBleed: AEX-Free, High-Resolution, and Low-Noise Side-Channel Attacks on SGX Enclaved Execution**

Trusted execution environments such as Intel SGX provide strong confidentiality and integrity guarantees by isolating enclaves from privileged software, and prior works commonly assume that performance monitoring is disabled during enclave execution to mitigate side-channel attacks. This paper revisits that assumption on modern processors and shows that, while core PMCs are suppressed, uncore PMCs remain active and record events correlated with enclaved execution. We further identify and reverse engineer a critical event, *PKT_MATCH*, in the mesh-to-memory subsystem that supports fine-grained address-based monitoring, and use it to build UncoreBleed, an AEX-free, high-resolution, and low-noise side channel. Using UncoreBleed, we demonstrate attacks that recover pictures from enclaved Libjpeg and extract RSA private keys in the presence of TLBlur with AEX-Notify, a state-of-the-art defense on off-the-shelf SGX platforms.

The goal of this artifact evaluation is to enable reviewers to examine these findings end-to-end. In particular, the artifact provides: (1) the microbenchmark suite used to compare core and uncore PMCs inside a production-mode SGX enclave and in a non-enclave environment; (2) the test programs and analysis scripts used to study the *PKT_MATCH* behavior and the address-to-M2M mapping; and (3) implementations of the UncoreBleed-based attacks on SGX-based Libjpeg and TLBlur-protected RSA, together with data collection and offline analysis tooling. The software artifact is intended to support empirical scrutiny of the paper's claims.

This artifact contains the full code and scripts needed to implement and run the experiments described in the paper. The main source tree is organized as follows:

├── Demo  
├── EventAnalysis  
├── MicroBenchmark  
├── RecordAnalysis  
├── ReverseM2MMap  
└── tools  

Each directory includes its own `README.md` with detailed code and usage instructions. Below is a brief overview of the components:

- `MicroBenchmark/`  
  Contains the microbenchmarks used in Section 3 for comparing core PMCs and uncore PMCs. It exercises and illustrates the measured behavior of core vs. uncore PMCs when running benchmarks inside a production-mode SGX enclave and in a non-enclave environment.

- `EventAnalysis/`  
  Corresponds to Sections 4.1 and 4.2, and includes test programs and analysis scripts for studying the behavior of the *PKT_MATCH* event in M2M, including address filtering, masks, match windows, and threshold semantics.

- `ReverseM2MMap/`  
  Corresponds to Section 4.3 (address-to-M2M mapping). It contains bit-flip experiments, data processing scripts, and the final reverse-engineered mapping from physical addresses to M2M device IDs.

- `tools/`  
  Collects the low-level infrastructure required by the attacks, including VA→PA address translation, PA→M2M mapping tools, *PKT_MATCH* register configuration helpers, high-frequency sampling tools, and kernel modules to make target core uncachable. These components support all attack implementations in Sections 5 and 6.

- `Demo/` and `RecordAnalysis/`  
  `Demo/` provides the two end-to-end case studies in Section 6: SGX-based Libjpeg and TLBlur-protected RSA (with build and run scripts).  
  `RecordAnalysis/` contains offline analysis scripts that process the collected event counter traces.

Notes

Environment Setup

Hardware

- Intel Xeon Scalable CPU with SGX support (Ice Lake-SP or newer).
- Tested on:
  - Xeon Silver 4314 (Ice Lake-SP)
  - Xeon Bronze 3408U (Sapphire Rapids-SP)
  - Xeon Silver 4514Y (Emerald Rapids-SP)

Software

- Linux kernel 5.4+ with SGX enabled (≥5.15 recommended).
- Intel SGX SDK 2.17+ installed and configured.
- GCC ≥ 9.0, CMake ≥ 3.16.
- Root privileges (required for PCIe config, CR0.CD modification, and module loading).

Files

UncoreBleed.zip

Files (33.5 MB)

Name Size Download all
md5:da4f85850b3e8c2025123c7a0d85384a
33.5 MB Preview Download