Skip to content

Prototype allocator for the prevention of use-after-free attacks, as described in the S&P 2020 Paper - "MarkUs: Drop-in use-after-free prevention for low-level languages" by S. Ainsworth and T. M. Jones

License

Notifications You must be signed in to change notification settings

SamAinsworth/MarkUs-sp2020

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Experimental Artefact for MarkUs: Drop-in use-after-free prevention for low-level languages

This is a prototype allocator for the prevention of use-after-free attacks, as described in the S&P 2020 Paper - "MarkUs: Drop-in use-after-free prevention for low-level languages" by S. Ainsworth and T. M. Jones.

It is implemented as a modification of the Boehm-Demers-Weiser garbage collector, and is distributed under the same license (license.txt).

Compiling and Installing the Allocator

This project depends on automake, autoconf and libtool, which should be installed before proceeding. The allocator should be configured using the settings given in setup.sh, which should be run from the root of this respository. To change where it is installed, alter "--prefix=~/markus-allocator" to your choice of folder.

Using the Allocator

To replace malloc for all dynamically linked binaries running within a shell, use

export LD_PRELOAD="$HOME/markus-allocator/lib/libgc.so $HOME/markus-allocator/lib/libgccpp.so"

For a single application, you can also define this variable within the execution command, e.g.

LD_PRELOAD="$HOME/markus-allocator/lib/libgc.so $HOME/markus-allocator/lib/libgccpp.so" vi README.md

Modifying the Allocator

Many of the features of MarkUs are implemented in freeing_list.c and include/private/freeing_list.h. To add or remove features from MarkUs, or reconfigure its memory overhead, alter the values in freeing_list.h, then clean and reinstall from the bdwgc-markus directory:

make clean
make install

allchblk.c also features modifications to support several of MarkUs' features, as does alloc.c.

About

Prototype allocator for the prevention of use-after-free attacks, as described in the S&P 2020 Paper - "MarkUs: Drop-in use-after-free prevention for low-level languages" by S. Ainsworth and T. M. Jones

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published