GithubHelp home page GithubHelp logo

mmxsrup / cve-2019-5489 Goto Github PK

View Code? Open in Web Editor NEW
9.0 2.0 3.0 10 KB

Page Cache Side Channel Attacks (CVE-2019-5489) proof of concept for Linux

License: MIT License

Makefile 9.84% C 90.16%
vulnaribility poc linux

cve-2019-5489's Introduction

CVE 2019-5489

This repository contains Page Cache Side Channel Attacks (CVE-2019-5489) proof of concept for Linux.

In order to evaluate page cache side channel, I have implemented covert channel between two processes. The sender process send confidential data to a receiver process via the page cache side channel. Page cache attacks has been mitigated in Linux Kenrel 5.0 and later, so this PoC will only work before Linux Kernel 5.0.

NOTE: I've tested works on Ubuntu 18.04, Linux 4.15.0-70.

Building

Run the following command.

git clone https://github.com/mmxsrup/CVE-2019-5489
cd CVE-2019-5489
make

Running

Disable swap space to make attack easier.

swapoff -a

Terminal 1

At first, run the following command on terminal 1.

make run-sender

Terminal 2

After sending 1th character ... is output on the terminal 1, run the following command.

make run-receiver

Output

If the execution is successful, the following will be output.
This shows that the key was sent from the Sender process to the Reciver process via page cache side channel.

Terminal 1

LD_LIBRARY_PATH=. ./sender
Sender process
ecicting page cache ...
sending 1th character ...
ecicting page cache ...
sending 2th character ...
ecicting page cache ...
sending 3th character ...
ecicting page cache ...
sending 4th character ...
ecicting page cache ...
sending 5th character ...
ecicting page cache ...
sending 6th character ...
ecicting page cache ...
sending 7th character ...
ecicting page cache ...
sending 8th character ...
ecicting page cache ...
sending 9th character ...

Terminal 2

LD_LIBRARY_PATH=. ./receiver
Sender process
waiting ...
recved caracter(P)
waiting ...
recved caracter(a)
waiting ...
recved caracter(s)
waiting ...
recved caracter(s)
waiting ...
recved caracter(W)
waiting ...
recved caracter(o)
waiting ...
recved caracter(r)
waiting ...
recved caracter(d)
waiting ...
recved caracter()
Received key: PassWord

References

  • Daniel Gruss et al. Page cache attacks [CCS 19]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.