Mitigation tester for Spectre V1-V2
Go to file
2022-01-29 14:00:20 +01:00
.gitignore Add Spectre v2 2022-01-27 15:04:48 +01:00
LICENSE Add BSD license 2022-01-24 13:57:24 +01:00
logo.png first 2022-01-22 15:04:17 +01:00
Makefile Remove taskset, monocore machines are failing with it 2022-01-29 14:00:20 +01:00
octopus.h Final touch: style and tabulations. 2022-01-28 16:33:17 +01:00
octoupload Refactor spectre.c and add multiple targets to the Makefile: 2022-01-23 19:37:24 +01:00
README.md Style, more doc in README 2022-01-28 16:42:43 +01:00
spectre_v1.c Final touch: style and tabulations. 2022-01-28 16:33:17 +01:00
spectre_v2.c Final touch: style and tabulations. 2022-01-28 16:33:17 +01:00

OCTOPUS

Samuel AUBERTIN - EURECOM - 2022

SPECTRE Octopus Logo

OCTOPUS is a Spectre V1 (Bounds Check Bypass) + V2 (Branch Target Injection) compiler flag tester.

It measures the success rate of the attacks using different compilers:

  • GCC
  • CLANG

And compilation/linking flags such as:

  • Optimisation levels (-O)
  • Static/dynamic linking
  • Masking and lfence as mitigation against Spectre V1
  • RETPOLINE as mitigation against Spectre V2

Results

Results are stored as JSON objects in an unique file for each run, following this pattern: result-$(UUID).json

Dependencies

  • clang and lld
  • gcc
  • sftp
  • uuid
  • The libC static symbols: glibc-static

Execution

Will build, execute and upload the results.

make

Build only

make [-j XXX] build where XXX is the number of parallel processes.

Results aggregation

Results are automatically uploaded to a server with a dedicated account using sftp.

Here is an exhaustive list of the data sent:

  • CPU model name and microcode version.
  • Kernel version and compilation date.
  • GCC and clang versions.
  • The list of mitigations enabled at runtime.
  • The cache timings of the processor computed by the calibrate_threshold() function.
  • Each spectre execution success rate.

NONE of this data will be used for anyhting else except this experiment.

References

Both implementations are heavily inspired by: