Skip to content

dskarlatos/JamaisVu

Jamais Vu

This repository contains a gem5 reference implementation of Jamais Vu: Thwarting Microarchitectural Replay Attacks.

Please check our paper for details:

@inproceedings{Skarlatos:JamaisVu:ASPLOS21,
author = {Skarlatos, Dimitrios and Zhao, Zirui Neil and Paccagnella, Riccardo and Fletcher, Christopher W. and Torrellas, Josep},
title = {Jamais Vu: Thwarting Microarchitectural Replay Attacks},
year = {2021},
publisher = {Association for Computing Machinery},
booktitle = {Proceedings of the Twenty-Sixth International Conference on Architectural Support for Programming Languages and Operating Systems},
series = {ASPLOS ’21}
}

You can find the Jamais Vu paper here!

Environment

To build and run Jamais Vu, you will need all libraries that are required by gem5. Note that due to a bug in gem5, the simulator might crash on some benchmarks on systems that are newer than Ubuntu 16.04.

To run our epoch analyzer and experiment scripts, you will need Python >= 3.6 and Python libraries that are described in util/epoch/requirements.txt and scripts/requirements.txt. You also need radare2 installed to run epoch analyzer.

We also provide a Dockerfile under docker/, which captures all the dependencies. To build the docker image, execute

cd docker && docker build -t jamaisvu .

Since the building process will compile Jamais Vu, it may take about 5 to 30 minutes to build, depends on your machines specs. So, grab a cup of coffee or take a nap, it's your choice :)

Once the Docker image is built, execute

docker run -it jamaisvu

to launch a Docker container that comprises X86_MESI_Two_Level/gem5.fast and required Python environment.

For more advanced Docker usage, please refer to Docker's official documents.

Run Jamais Vu

We provide scripts that run Jamais Vu for all the schemes proposed in our paper. For more details, please refer to this README.

Reproducibility

All the results in the paper can be reproduced. For more information about re-running our experiments, please refer to this section in the README.

Epoch Analyzer

The Epoch scheme that we proposed leverages information provided by the compiler. The implementation of Epoch analyzer is under util/epoch. For more information about the static analyzer, please refer to this README.

Acknowledgement

We used bloom filter implementation from project ArashPartow/bloom and counting bloom filter implementation from project mavam/libbf. Special thanks to contributors of ArashPartow/bloom and mavam/libbf!

About

No description, website, or topics provided.

Resources

License

BSD-3-Clause and 2 other licenses found

Licenses found

BSD-3-Clause
LICENSE
Unknown
COPYING
MIT
LICENSE.JamaisVu

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Contributors 46