Return-Oriented Programming
Goals
- Learn how ROP attacks work
- Be able to execute a ROP attack
- Analyze the implications of ROP for software defenses
ROP techniques
- How can we implement shellcode with semantically equivalent gadgets?
- How do we string together the execution of multiple gadgets?
- How does standard disassembly work?
- Compare/contrast intended vs. unintended gadgets
- How do unintended gadgets arise?
- How can we find them?
- What are some examples of useful gadgets?
- Stack pivots
- What is it?
- How does it work?
- Why is it useful?
- What do ROP attacks imply for the software defenses we’ve seen so far?
- E.g., canaries, DEP, ASLR, sanitizing library functions