Vulnerability Development Syllabus
This course teaches students the fundamental technical skills required to identify, analyze, and exploit software vulnerabilities, focusing on application-level issues. The course is taught with the help of some very talented guest professors whose topics are listed below:
- Introduction, Dan Guido
- Code Auditing, Brandon Edwards
- Reversing, Aaron Portnoy and Alex Sotirov
- Memory Corruption, Dino Dai Zovi
- Web Hacking, Joe Hemler
- Post-Exploitation, Colin Ames
Previous guest lecturers have included:
- Reversing, Peter Silberman
- Fuzzing, Mike Zusman
- Reversing, Stephen A. Ridley
- Client-side attacks, Dean De Beer
- Web Hacking, Erik Cabetas
This course is unique in that different guest lecturers come to teach each semester, adding their individual specialization and experience to their lectures. We also collaborate with the cyber security club to offer lectures outside of this core set and we encourage our students to attend those meetings as well as their normal classes.
Prerequisites
Students are expected to have a strong technical background before taking this course. In particular, they should have at least two of the following:
- Knowledge of computer architecture and assembly (Intel x86 preferred)
- Knowledge of computer security basics (CS393/CS6823: Network Security preferred)
- Familiarity with operating system internals (Windows preferred)
- Familiarity with at least one scripting language (Ruby preferred)
- Familiarity with command line operation of Windows and Linux
Assignments
Each of the topics that we go over has at least one and sometimes two homeworks associated with them, leading to a total of about 10 homeworks through the semester. The homeworks are technically challenging and require self-study on the part of the student to complete. The homeworks count for 30% of your grade and it's not possible to pass the class without doing well on them.
There are six graded discussions related to the core topics covered in this class. These discussions take place on Blackboard and are worth 12% of the total grade for the class.
The only exam in this course is a midterm, which students take home and have one week to complete and is worth 18% of total grade for the class. The exam covers basic principals of security, architecture, source code auditing, and reverse engineering. During the Fall semester, I give out extra credit on this exam if the student participates in NYU:Poly CSAW.
Instead of a final exam, students work on self-directed research projects which are documented in more detail on the final project page. This project is worth 40% of a student's grade.
Textbook and Office Hours
The textbooks for this course are Gray Hat Hacking, Third Edition and A Bug Hunter's Diary. In addition to the textbooks, readings from the TAOSSA, The Myths of Security and other readings are regularly provided as the semester progresses.
The lecturers and TAs hold virtual office hours on the ISIS IRC server each week (the exact time is announced on Blackboard). Students can connect to this server with any modern chat client, like Pidgin or Adium, by connecting to isis.poly.edu on port 6697 (ssl-only) and joining the #security channel. Students are encouraged to use this chat server as a resource through the semester.
