Mitigation tester for Spectre V1-V2
Go to file
2022-04-12 11:21:57 +02:00
uuid_obsd OpenBSD compatibility, except that GCC is not emiting valid SSE asm, so disable it on OpenBSD 2022-03-01 13:11:25 +01:00
.dockerignore Add support for Docker. New targets: docker,dockerbuild,dockerrun,dockerpoc and dockerclean. 2022-04-12 11:21:57 +02:00
.gitignore OpenBSD compatibility, except that GCC is not emiting valid SSE asm, so disable it on OpenBSD 2022-03-01 13:11:25 +01:00
Dockerfile Add support for Docker. New targets: docker,dockerbuild,dockerrun,dockerpoc and dockerclean. 2022-04-12 11:21:57 +02: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 Add support for Docker. New targets: docker,dockerbuild,dockerrun,dockerpoc and dockerclean. 2022-04-12 11:21:57 +02:00
octopus.h Fix latency for pre-SSE processors 2022-03-25 13:39:11 +01:00
octoupload Refactor spectre.c and add multiple targets to the Makefile: 2022-01-23 19:37:24 +01:00
README.md Update readme to include obsd 2022-04-07 12:05:25 +02:00
spectre_v1.c Final touch: style and tabulations. 2022-01-28 16:33:17 +01:00
spectre_v2.c Typos, change variable name for readability 2022-04-05 12:44:24 +02:00

OCTOPUS

Samuel AUBERTIN - EURECOM - 2022

SPECTRE Octopus Logo

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

It measures and uploads the success rate of the Spectre attacks on your CPU using different compilers:

And compilation/linking flags such as:

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

It is known to work on the following GNU/Linux distributions : Alpine, RHEL8, Fedora35. and OpenBSD.

Results

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

Dependencies

  • Compiler: clang and gcc
  • Linker: lld
  • For upload: openssh and uuid
  • The C library static symbols: glibc-static

Execution

Will build, execute and upload the results.

make

Build only

make build

To build using multiple processes:

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: