lab 2 buffer overflows
play

Lab 2: Buffer Overflows Fengwei Zhang Wayne State University CSC - PowerPoint PPT Presentation

Lab 2: Buffer Overflows Fengwei Zhang Wayne State University CSC 5991 Cyber Security PracCce 1 Buffer Overflows One of the most common vulnerabiliCes in soGware Programming languages commonly associated with buffer overflows including


  1. Lab 2: Buffer Overflows Fengwei Zhang Wayne State University CSC 5991 Cyber Security PracCce 1

  2. Buffer Overflows • One of the most common vulnerabiliCes in soGware • Programming languages commonly associated with buffer overflows including C and C++ • OperaCng systems including Windows, Linux and Mac OS X are wriOen in C or C++ Wayne State University CSC 5991 Cyber Security PracCce 2

  3. How It Works • ApplicaCons define buffers in the memory – unsigned int char [10] • ApplicaCons use adjacent memory to store variables, arguments, and return address of a funcCon. • Buffer Overflows occurs when data wriOen to a buffer exceeds its size. Wayne State University CSC 5991 Cyber Security PracCce 3

  4. Overflowing A Buffer • Defining a buffer in C – char buf[10]; • Overflowing the buffer – Char buf [10] = ‘x’; – strcpy(buf, “AAAAAAAAAAAAAAAAAAAAAAA”) Wayne State University CSC 5991 Cyber Security PracCce 4

  5. Why We Care • Because adjacent memory stores program variables, parameters, and arguments • AOackers can change these values through overflowing a buffer • AOackers can gain control over the program flow to execute arbitrary code Wayne State University CSC 5991 Cyber Security PracCce 5

  6. Process Memory Layout High memory Stack Heap Data Segment Text Segment Low memory Wayne State University CSC 5991 Cyber Security PracCce 6

  7. Memory Layout for 32-bit Linux 1GB Kernel Space Local variable: int a Stack FuncCon malloc() Heap 3GB UniniCalized staCc variables: staCc char *u BSS Segment staCc char *s = “Hello world” Data Segment Text Segment (ELF) Binary of the program Wayne State University CSC 5991 Cyber Security PracCce 7

  8. Virtual Memory Layout Wayne State University CSC 5991 Cyber Security PracCce 8

  9. Stack Frame • The stack contains acCvaCon frames including local variables, funcCon parameters, and return address • StarCng at the highest memory address and growing downwards • Last in first out Wayne State University CSC 5991 Cyber Security PracCce 9

  10. A Simple Program Add (2,3) High memory 3 2 int add (int a, int b) { Ret Address int c; EBP c = 1+b; C return c; } Low memory ESP Wayne State University CSC 5991 Cyber Security PracCce 10

  11. Another Program int func (char * str) { char mybuff[512]; strcpy(myBuff, str); Draw the Stack Frame! return 1; } int main (int argc, char ** argv) { func (argv[1]); return 1; } Wayne State University CSC 5991 Cyber Security PracCce 11

  12. Overflowing “myBuff” High memory (A) str(A) Ret addr(A) EBP(A) A A A A A A Low memory ESP Wayne State University CSC 5991 Cyber Security PracCce 12

  13. Buffer Overflow Defenses • The aOack described is a classical stack smashing aOack which execute the code on the stack • It does not work today – NX – non-executable stack. Most compilers now default to a non-executable stack. Meaning a segmentaCon fault occurs if running code from the stack (i.e., Data ExecuCon PrevenCon - DEP) • Disable it with –zexecstack opCon • Check it with readelf –e <PROGRAM> | grep STACK – StackGuard: Cannaries • Disable it with –fno-stack-protector opCon • Enable it with –fstack-protector opCon Wayne State University CSC 5991 Cyber Security PracCce 13

  14. Stack Canaries • Stack smashing aOacks do two things – Overwrite the return address – Wait for algorithm to complete and call RET • Stack Canaries: Stack Smashing Protector (SSP) – Placing a integer value to stack just before the return address – To overwrite the return address, the canary value would also be modified – Checking this value before the funcCon returns Wayne State University CSC 5991 Cyber Security PracCce 14

  15. Stack Canaries (cont’d) High memory (A) str(A) Ret addr(A) EBP(A) Canary(A) A A A A A Low memory ESP Wayne State University CSC 5991 Cyber Security PracCce 15

  16. Bypassing NX and Canaries • NX - non-executable stack – ExecuCng code in the heap – Data ExecuCon PrevenCon (DEP) – Return Oriented Programming (ROP) • Stack Canaries – OverwriCng the Canary with the same value – Brute force aOack (e.g., DynaGuard in ACSAC’15) Wayne State University CSC 5991 Cyber Security PracCce 16

  17. Reminders • Lab 0 – Turn in the class agreement • Lab 1 – Due today at 11:59pm – Late assignment policy – Submit it via Blackboard • Lab 2 instrucCons Wayne State University CSC 5991 Cyber Security PracCce 17

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend