Git Product home page Git Product logo

clayne / selfrando Goto Github PK

View Code? Open in Web Editor NEW

This project forked from akiraaisha/selfrando

0.0 1.0 0.0 1.68 MB

Function order shuffling to defend against ROP and other types of code reuse

Home Page: http://runsafesecurity.com

License: Other

C++ 54.71% Python 7.24% Assembly 17.25% C 14.57% Shell 1.79% Ruby 0.05% JavaScript 0.58% CSS 0.02% CMake 2.91% Mako 0.27% PowerShell 0.18% BitBake 0.26% PHP 0.05% Dockerfile 0.11% Makefile 0.01%

selfrando's Introduction

Travis build status Appveyor build status

RunSafe Security selfrando

Software written in C and C++ is exposed to exploitation of memory corruption. Compilers and operating systems include various exploit mitigation mechanisms that prevent certain offensive techniques. Unfortunately, standard mitigations lag behind the offensive techniques used in exploits against browsers, servers, and other frequently targeted software and do not stop a well-resourced adversary.

selfrando can be used to harden your software beyond what is possible with current mitigations. Inspired by biodiversity in nature and existing randomizing defenses, selfrando varies the attack surface, i.e., the code layout, by randomizing each function separately. This makes exploit writing harder and increases resilience to information leakage relative to traditional address space layout randomization (ASLR) techniques.

Comparing selfrando to ASLR

Features

  • Low-overhead selfrando has an imperceptible effect on program initialization and runtime performance. When using the SPEC CPU2006 suite suite, selfrando adds less than a 1% overhead to most of the benchmark running times.
  • Load-time randomization. Binaries built with selfrando are all identical on-disk because the code layout is not randomized until it is loaded into main memory. This means that protected programs can be distributed just like traditional programs and can use the same cheksumming and signature tools too.
  • Easy to use No changes to build tools or processes are required. In most cases, using selfrando is as easy as adding a new compiler and linker flags to your existing build scripts.

Build instructions

License

The Linux-compatible version of selfrando is offered under the Affero General Public License version 1.

Visit http://runsafesecurity.com if you are interested in a commercial support to protect your software with selfrando on Windows, Android, and Linux.

Acknowledgements

Researchers from University of California, Irvine, Technische Universität Darmstadt (Germany), and the Tor Project contributed to the development of selfrando.

This work is based upon work partially supported by the Defense Advanced Research Projects Agency (DARPA) under contracts FA8750-15-C-0124, FA8750-15-C-0085, and FA8750-10-C-0237 and by the National Science Foundation under award number IIP-1520552.

This work was supported in part by the German Science Foundation (project S2, CRC 1119 CROSSING), the European Union's Seventh Framework Programme (609611, PRACTICE), and the German Federal Ministry of Education and Research within CRISP.

selfrando's People

Contributors

ahomescu avatar thedataking avatar rinon avatar tomfox91 avatar shane-runsafe avatar 0t1st avatar

Watchers

James Cloos avatar

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.