SafeLLVM: LLVM Without The ROP Gadgets!
Federico Cassano, Charles Bershatsky, Jacob Ginesin, Sasha Bashenko

TL;DR
SafeLLVM is a compiler-based approach that reduces ROP gadgets in x86-64 binaries, enhancing memory safety without altering program functionality, thereby preventing ROP attacks effectively.
Contribution
We developed LLVM compiler passes that minimize ROP gadgets in binaries, providing a practical solution to improve memory safety against ROP exploits.
Findings
Prevents ROP attacks in real-world applications
Maintains original program functionality
Reduces number of gadgets significantly
Abstract
Memory safety is a cornerstone of secure and robust software systems, as it prevents a wide range of vulnerabilities and exploitation techniques. Among these, we focus on Return-Oriented Programming (ROP). ROP works as such: the attacker takes control of the program's execution flow via a memory corruption attack, then takes advantages of code snippets already in the program's memory, dubbed "gadgets," to achieve the attacker's desired effect. In this paper, we introduce SafeLLVM, an approach to minimize the number of gadgets in x86-64 binaries compiled with the LLVM infrastructure. Building upon the techniques outlined in previous works, we implement a series of passes within the LLVM compiler's backend to minimize the number of gadgets present and thus prevent ROP attacks. We evaluated our approach by compiling a number of real-world applications, including cJSON, zlib, curl, and…
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.
Taxonomy
TopicsSecurity and Verification in Computing · Advanced Malware Detection Techniques · Cloud Data Security Solutions
