Defenses and Return-Oriented Programming (ROP)
Goals
  - Defenses and Limitations:
    
      - Explain how commonly deployed defenses work
- Identify and exploit their limitations
 
- ROP
    
      - Learn how ROP attacks work
- Be able to execute a ROP attack
- Analyze the implications of ROP for software defenses
 
Control-Flow Defenses
  - Stack Canaries/Cookies
    
      - How do they work?
- What makes a good canary/cookie?
- How can they be bypassed?
 
- Data Execution Prevention (DEP) / No eXecute (NX)
    
      - How does it work?
- How can it be bypassed?
 
- ASLR
    
      - What does it do and why does it break standard attacks?
- What are four classes of ASLR bypass?
        
          - Why would you choose one over the other?
 
- Why is ASLR an incomplete defense in practice?
 
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?
- What do ROP attacks imply for the software defenses we’ve seen so far?
    
      - E.g., canaries, DEP, ASLR, sanitizing library functions