01:198:419 Lecture Notes - Lecture 9: Direct Memory Access, Buffer Overflow, Gnu C Library
Document Summary
Buffer overflow: caused by a programmer making an error in code. If page has write access, assume that it stores data and does not need executable rights (stack and heap have write, but not execute) Place a random nonce on the heap in a page that cannot be written when entering a function. Upon return from the function, compare the canary value on the read-only page to the canary value in the stack frame. Instrumented on all memory accesses, it works on relocatable object code: links to a modified version of malloc() that supports tracking tables. Special instructions inserted before each load and store instruction, detecting all runtime errors and memory leaks: violations of memory bounds (arrays), uninitialized variables, etc. Issues with encrypted pointers: must be fast as many pointers are dereferenced in a program, compiler issues, must encrypt and decrypt only pointers.