https://github.com/0xade1a1de/slice-slice-baby

Slice+Slice Baby: Generating Last-Level Cache Eviction Sets in the Blink of an Eye

https://github.com/0xade1a1de/slice-slice-baby

Science Score: 36.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
    Links to: arxiv.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.1%) to scientific vocabulary
Last synced: 6 months ago · JSON representation

Repository

Slice+Slice Baby: Generating Last-Level Cache Eviction Sets in the Blink of an Eye

Basic Info
  • Host: GitHub
  • Owner: 0xADE1A1DE
  • License: apache-2.0
  • Language: C
  • Default Branch: main
  • Homepage:
  • Size: 136 KB
Statistics
  • Stars: 4
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created 11 months ago · Last pushed 11 months ago
Metadata Files
Readme License

README.md

Slice+Slice Baby: Generating Last-Level Cache Eviction Sets in the Blink of an Eye

The code in this repository accelerates state-of-the-art cache side-channel approaches such as Prime+Probe to be slice-aware.

The Intel LLC is split into several distinct slices, each a separate cache in their own right. From the perspective of an attacker, they must generate eviction sets for each slice to successfully contend with victim memory, however, the sliced design of the LLC hinders this process as it distributes memory (roughly) evenly across each slice. This makes it harder to find addresses, and therefore eviction sets, which all belongs to the same slice.

We incorporate a slice-detection mechanism using microarchitectural weird gates to measure and determine which slice a memory address maps, and use this to partition the memory into bins by slice. Please refer to the paper published on arxiv or IEEE (Accepted to the 46th IEEE Symposium on Security and Privacy, IEEE SP 2025) for further details. Otherwise, feel free to get in touch via email!

Table of Contents

Project Structure

The project directory contains an include directory containing header files organised into modules such as evsets, slice_partitioning, and util, along with corresponding source files in src, executables sources for various experiments in tests, post-processing of generated experiment data in experiments and external libraries in lib.

The auxiliary folder contains two tools, the first our memory bypass kernel module in, auxiliary/memory-bypass, required by our slice function recovery tool in auxiliary/slice-recovery.

Dependencies

The only dependency for the top-level codebase is 0xADE1A1DE/AssemblyLine in the lib/AssemblyLine directory as well as a standard C build system. Our install.sh script takes care of its install, please see below.

Install

To install the project, follow these steps:

  1. Navigate to the scripts directory: bash cd scripts

  2. Run the install.sh script: bash ./install.sh

This script performs the following actions:

  • Initialises and updates Git submodules required for the project.
  • Installs essential build tools and dependencies using apt.
  • Builds and installs the AssemblyLine library: ```bash pushd ../lib/AssemblyLine ./autogen.sh ./configure make -j sudo make install popd

    sudo ldconfig ```

Running

This codebase was built and experimented with using Ubuntu 24.04.

To run locally on a machine, ensure there is a certain config available and do: bash cd scripts/ ./run.sh $CONFIG_PATH E.g. bash ./run.sh ../config/config_12900k.h

This will run tests/l3_fs.c which will generate LLC eviction sets using our slice-aware technique.

The script retrieves cache information for the CPU: - Retrieves and sets variables for CPU cache levels (L1, L2, L3) sizes and associativity using getconf. - Although a little clunky, this was a conscious choice to make sure these values were hardcoded at compile time to simplify the management of certain aspects of the eviction set code.

Finally, it builds the project with the retrieved CPU cache information.

Running Specific Experiments

To run a specific experiment, please use the following lookup:

| Experiment in Paper | Run Script (scripts/) | Post-Processing (experiments/) | Notes | | --------- | --------- | --------- | --------- | | Figure 3 | run_experiment_llc_slice_timings.sh | llc_slice_timings/process.py | | | Figure 4 | run_experiment_llc_rdtscp_NOT_gate_quiet_predictions.sh | llc_rdtscp_NOT_gate_quiet_predictions/process.py | | | Figure 5 | run_experiment_llc_NOT_gate_probabilities.sh | llc_NOT_gate_probabilities/process.py | | | Figure 6 | run_experiment_llc_rdtscp_NOT_gate_busy_predictions.sh | llc_rdtscp_NOT_gate_busy_predictions/process.py | | | Figure 8 | run_experiment_llc_COMPARATOR_gate_timings.sh | llc_COMPARATOR_gate_timings/process.py | Use config/config_6700k_llc_timings.h | | Figure 9 | run_experiment_llc_COMPARATOR_gate_predictions.sh | llc_COMPARATOR_gate_predictions/process.py | Use config/config_6700k_llc_timings.h | | Table 2 | run_experiment_per_core_llc_COMPARATOR_gate_predictions.sh | per_core_llc_COMPARATOR_gate_predictions/process.py | | | Table 3 | run_experiment_per_core_llc_*_predictions.sh | compile_table_3.py | | | Table 5 | run_experiment_llc_evsets_*.sh | compile_table_5.py | |

License

Please see LICENSE file in the top directory.

The code in the lib/AssemblyLine submodule is licensed under the Apache License 2.0. See AssemblyLine/LICENSE for more details.

Authors

Acknowledgements

This work was supported by: * The Air Force Office of Scientific Research (AFOSR) under award number FA9550-24-1-0079 * The Alfred P. Sloan Research Fellowship * An ARC Discovery Project number DP210102670 * The Defense Advanced Research Projects Agency (DARPA) under contract numbers W912CG-23-C-0022 * Defence Science and Technology Group (DSTG), Australia under Agreement No. 11965 * The Deutsche Forschungsgemeinschaft (DFG German Research Foundation) under Germany’s Excellence Strategy - EXC 2092 CASA - 390781972 * ISF grant no. 1807/23; Len Blavatnik and the Blavatnik Family Foundation * Stellar Development Foundation * and gifts from Cisco and Qualcomm.

The views and conclusions contained in this document are those of the authors and should not be interpreted as representing the official policies, either expressed or implied, of the U.S. Government.

Owner

  • Name: 0xADE1A1DE
  • Login: 0xADE1A1DE
  • Kind: organization

GitHub Events

Total
  • Watch event: 4
  • Public event: 1
  • Push event: 4
  • Fork event: 1
Last Year
  • Watch event: 4
  • Public event: 1
  • Push event: 4
  • Fork event: 1

Issues and Pull Requests

Last synced: 10 months ago