Syllabus
Topics
Memory Safety
This course focuses on memory safety because memory safety bugs account for around 70% of software vulnerabilities. We will talk about the root causes, exploitation techniques, and defenses.
- Causes
- Buffer overflows
- Use-After-Free
- Format string vulnerabilities
- Exploitations
- ret2libc
- Return-oriented Programming (ROP)
- Defenses
- Run-time mitigations
- Retrofitting memory safety into C/C++
- Fuzz testing
- Safe languages
Type Safety
Besides being memory-unsafe, the two mainstream systems programming languages, C and C++, are also weakly-typed, thus allowing type conversion/confusion bugs that lead to security vulnerabilities. We will discuss common type safety errors and their countermeasures.
Least Privilege Principle
Privilege escalation is a buggy program exercising more power (privilege) than it should. We will discuss how to mitigate this problem, even when the victim program is already compromised.
AI for Software Security
As in many other domains, AI LLMs bring both opportunities and challenges to software security. We will discuss how LLMs affect security tasks, such as vulnerability detection and bug triage.
Learning Materials
Readings
This course uses online articles, research papers, and Mathias Payer's free textbook Software Security: Principles, Policies, and Protection.
In addition, the following books are good references:
- Hacking: The Art of Exploitation 2/e, by Jon Erickson
- Software Security: Building Security In , by Gary McGraw
- Computer Security: A Hands-on Approach 2/e, by Wenliang Du
- Low-Level Software Security for Compiler Developers
Tools
One core technique you need and you will learn in this course is how to examine programs in memory. To this end, the most common tool is a debugger, and one of the most common debuggers for low-level software is GDB. You need to be familiar with it for solving machine problems. Below are good resources for learning GDB. In addition, the Hacking book by Erickson mentioned above also offers useful materials.
More on Memory Safety
Since memory safety is the focus of this course, curious students are strongly encouraged to explore this topic further. See this compilation of classic memory safety publications.
Grading
| Machine Problems | 40% |
|---|---|
| Paper Readings | 20% |
| Paper Presentation | 10% |
| Exam | 25% |
| Class Participation | 5% + 5% (bonus) |
Machine Problems (40%)
There are three machine problems, for which you are given buggy programs and expected to identify the bugs and exploit two of them. All machine problems are individual work.
Paper Readings (20%)
In addition to the required readings for lectures, you will read two more research papers, one assigned to you and one chosen by you from a list (see more on this task below). You will answer questions based on your understanding of the papers.
Paper Presentation (10%)
This is group work. You and your teammates will select one research paper, as mentioned above, and present its main findings to the class.
Exam (25%)
There is one in-class exam. It covers lectures 1–11, i.e., all topics excluding AI for Security.
If you need accommodations, you should notify the instructor as soon as possible with your DSS accommodation approval so that you can schedule your exam with DSS.
Class Participation (5% + 5% bonus)
Class participation is highly valued, particularly asking and answering questions during lectures. 5% of your final grade is based on attendance and asking and answering questions. In addition, up to 5% extra credit is awarded for active engagement in lectures. Note that participation is not judged by the quality of your questions or answers; you will earn points as long as your contributions demonstrate active thinking.
Lateness Policy
Request for extension will be considered, but the request must be submitted via email before the deadline.
Disability Support Services (DSS)
Any student who may need accommodations based on the potential impact of a disability should contact Disability Support Services (or call 202-994-8250) to establish eligibility and to coordinate reasonable accommodations.
Wellness
If any issue arises that may limit your ability to participate in class, for example, personal illness, family emergency, etc., please be sure to discuss these matters with your instructor as soon as possible and accommodations will be made available to you as appropriate.
Feelings of being overwhelmed are unfortunately quite common in the university environment and something we have all dealt with. You are not alone, and there are a number of resources available to provide support in those moments. Learning to ask for help is an important part of the university of experience, and if you or anyone you know experiences any academic stress, difficult life events, or feelings of anxiety or depression, you are strongly encourage to seek support. GW offers counseling services, and also consider reaching out to a friend, faculty or family member you trust for help getting connected to the support that can help.
If you or someone you know is feeling suicidal or in danger of self-harm, call someone immediately, day or night:
- Student Counseling : 202-994-5300.
- National Suicide Prevention Lifeline: 1-800-273-8255