Giter Site home page Giter Site logo

tsxcfi's Introduction

##Introduction##

This repository contains the prototye implementation of TSX-based CFI enforcement, as described in [1].

##Getting Started - The Easy Way## 0. cd tsxcfi && docker build -t=tsxcfi .

  1. docker run -ti tsxcfi

##Getting Started - The Hard Way## 0. Install the following packages: cmake ninja-build clang git patch build-essential nasm wget bison texinfo gawk

  1. Run bash install.sh. This automatically fetches, patches and build llvm/clang, ld from glibc, musl-libc and libtsxcfifb. This can take a while.
  2. Run source switch.sh inside your shell. This setups the required environment variables for compiling and executing tsxcfied binaries.
  3. Go in the test folder and run bash test.sh. This compiles and run bzip2 and sqlite in 6 different flavors: native, hle, rtm, native-relro, hle-relro and rtm-relro.
  4. Switch to the desired mode with switch-native, switch-rtm or switch-hle and compile your program with clang-tsx or clang-tsx-relro.

##Folders & Files##

  • /: Contains the main install script, the scripts for compiling and a script for setting up the required environment variables.
  • build: Contains the install scripts and build folders for llvm/clang, glibc, musl-libc and libtsxcfifb
  • patches: Contains minor patch-files which are applied to the LLVM-backend and to glibc
  • src: Contains the source code for tsxcfi - mainly assembly-code for fallback-paths, the LLVM-Backend passes and the pre- and postprocessing scripts.
  • test: Contains the test-programs instrumented in the paper.

[1] Muench, M., Pagani, F., Shoshitaishvili, Y., Kruegel, C., Vigna, G., Balzarotti, D.: "Taming Transactions: Towards Hardware-Assisted Control Flow Integrity Using Transactional Memory", 19th Symposium on Research in Attacks, Intrusions and Defenses (RAID), Lecture Notes in Computer Science, Springer Verlag. France, September 2016.

tsxcfi's People

Contributors

mariusmue avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

chubbymaggie

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.