Topics in Software Security
|Meeting Time:||M: Mon 3:00-5:20|
|Offered This Year?||Yes|
|When Offered?||Most Years|
In this course, we will (collectively) investigate the state-of-the-art in software exploitation and defense. More specifically, the course is structured as a seminar where students jointly present (with the instructor) research papers to their peers. We will begin with a summary of the most prevalent software defects, such as stack and heap buffer overflows, NULL pointer and pointer arithmetic errors, use-after-free and format string bugs, memory disclosure vulnerabilities, signedness errors, integer overflows, race conditions, etc., which are typically found in applications written in type and memory unsafe languages, like C and C++. Next, we will survey what we are up against: traditional and modern exploitation techniques, ranging from classical code injection and code-reuse attacks (return-to-libc, return-oriented programming) up to the newest goodies (just-in-time code reuse, blind ROP). For the bulk part, we will focus on the latest advances in protection mechanisms, mitigation techniques, and tools against the previously-mentioned vulnerability classes and exploitation methods.
Familiarity with topics covered in 'Computer Systems Security' (CSCI1660), and 'Introduction to Computer Systems' (CSCI0330) or 'Operating Systems' (CSCI1670) is essential.