Survey of Methods for Automated Code-Reuse Exploit Generation

11/16/2020
by   Alexey Vishnyakov, et al.
0

This paper provides a survey of methods and tools for automated code-reuse exploit generation. Such exploits use code that is already contained in a vulnerable program. The code-reuse approach allows one to exploit vulnerabilities in the presence of operating system protection that prohibits data memory execution. This paper contains a description of various code-reuse methods: return-to-libc attack, return-oriented programming, jump-oriented programming, and others. We define fundamental terms: gadget, gadget frame, gadget catalog. Moreover, we show that, in fact, a gadget is an instruction, and a set of gadgets defines a virtual machine. We can reduce an exploit creation problem to code generation for this virtual machine. Each particular executable file defines a virtual machine instruction set. We provide a survey of methods for gadgets searching and determining their semantics (creating a gadget catalog). These methods allow one to get the virtual machine instruction set. If a set of gadgets is Turing-complete, then a compiler can use a gadget catalog as a target architecture. However, some instructions can be absent. Hence we discuss several approaches to replace missing instructions with multiple gadgets. An exploit generation tool can chain gadgets by pattern searching (regular expressions) or considering gadgets semantics. Furthermore, some chaining methods use genetic algorithms, while others use SMT-solvers. We compare existing open-source tools and propose a testing system rop-benchmark that can be used to verify whether a generated chain successfully opens a shell.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
11/10/2021

MAJORCA: Multi-Architecture JOP and ROP Chain Assembler

Nowadays, exploits often rely on a code-reuse approach. Short pieces of ...
research
03/15/2021

Return-Oriented Programming on RISC-V

This paper provides the first analysis on the feasibility of Return-Orie...
research
07/29/2020

Return-Oriented Programming in RISC-V

RISC-V is an open-source hardware ISA based on the RISC design principle...
research
11/05/2019

Using Name Confusion to Enhance Security

Virtual memory is an abstraction that assigns references, or names, to d...
research
08/25/2023

COCO: Testing Code Generation Systems via Concretized Instructions

Code generation systems have been extensively developed in recent years ...
research
11/26/2022

Control-Flow Integrity at RISC: Attacking RISC-V by Jump-Oriented Programming

RISC-V is an open instruction set architecture recently developed for em...
research
09/03/2013

Understanding Evolutionary Potential in Virtual CPU Instruction Set Architectures

We investigate fundamental decisions in the design of instruction set ar...

Please sign up or login with your details

Forgot password? Click here to reset