This repository contains the programs used for the experimental evaluation of the paper Hunting the Haunter — Efficient RelationalSymbolic Execution for Spectre with Haunted RelSE published at NDSS’21.
The tool. Binsec/Haunted, can be found at https://github.com/binsec/haunted
To run the scripts, you need to setup a python3 virtual environment with the
following dependencies: numpy, pandas scipy.
Example using virtualenv:
virtualenv venv
source venv/bin/activate
pip3 install numpy pandas scipyTables found in the paper can be reconstructed by running python3 stats.py
Programs to analyze are located in src/[program_name]. The directory contains
a script to run the experiments, expes.py, and results can be found in the
stat subdirectory. Note that to run the script expes.py, you need
Binsec/Haunted and the solver (boolector by default) in you path.
If you only want to run the fastest (Haunted) exploration strategy, just
comment the line running Explicit in the script expes.py.
First, got to src/tests. Run the experiments with python3 expes.py. This
will run:
litmus tests for Spectre-PHTfor constant-time without speculation (NoSpec in the paper),litmus tests for Spectre-STLfor constant-time without speculation (NoSpec),litmus tests for Spectre-PHTwith the Haunted-PHT exploration strategy,litmus tests for Spectre-STLwith the Haunted-STL exploration strategy.
Finally, it will output a summary of the experiments (x86 instructions, paths, time, violations, timeouts, secure, insecure).
We had some issues with version 3.2.1 of boolector taking quickly a large
amount of memory so make sure not to use this version. We recommend using
boolector version 3.2.0.
If Binsec does not find the solver, it will crash silently so make sure the solver is in you path.
If Binsec/Haunted crashes for an unexpected reason, you can try to run it with
-relse-debug-level 10 to get more insight on the problem.
Similar to Paul Kockers’s set of litmus tests for Spectre-PHT, we propose a new set of litmus tests for Spectre-SLT in src/litmus-stl/programs/spectrev4.c