TL;DR
This survey reviews methods and tools for automated code-reuse exploit generation, highlighting techniques for gadget discovery, chaining, and virtual machine modeling to bypass OS protections.
Contribution
It provides a comprehensive overview of code-reuse exploit methods, introduces a virtual machine perspective, and compares tools and approaches for gadget search and chaining.
Findings
Gadget sets can be modeled as virtual machines for exploit generation.
Various methods exist for gadget search and semantics determination.
A new testing system, rop-benchmark, is proposed for verifying exploit chains.
Abstract
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…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
