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