CE 40-815: Secure Software Systems
Sunday/Tuesday 900-1030
Room: TBD
TAs: Zahra Fazli
Mohammad Haddadian
Quick Links: Description Acknowledgment Policies Announcements Homeworks CourseMaterial
Description:
This graduate-level course on secure software systems is presented in three parts: classical attacks and defensive mechanisms, the impact of AI on vulnerability detection and causal analysis, and recent advancements in AI-driven approaches for securing software systems:
Part 1: Classical Attacks and Defensive Mechanisms
In the first part, the course covers classical attack techniques such as Buffer Overflow, Format String Vulnerabilities, Return-Oriented Programming (ROP), and other related threats. It also explores run-time protection mechanisms like Taint Tracking, Control Flow Integrity (CFI), and Causal Analysis, along with techniques for code analysis, including Static Analysis, Symbolic Execution, and Fuzzing. The initial syllabus for this part draws inspiration from the Secure Software Systems course taught at Carnegie Mellon University (CMU).
Part 2: Part 2: AI in Vulnerability Detection and Causal Analysis
In the second part, the course focuses on how AI is transforming two key areas of vulnerability detection and causal analysis. Topics include AI-driven methods for identifying security vulnerabilities, predictive analytics in threat detection, and enhanced causal analysis through machine learning models. This section highlights the growing role of AI in automating and improving these crucial areas of secure software systems.
Part 3: AI-Driven Advancements in Secure Software Systems
In the third part, the course examines recent research papers published within the past few years, specifically focusing on how AI has contributed to enhancing secure software systems. We will explore AI's role in automated vulnerability detection, software patching, security auditing, and defensive mechanisms tailored to software systems. This part emphasizes state-of-the-art developments in AI-driven techniques that address security challenges in software engineering.
Policies:
- Grading policy is as follows. This is tentative.
- 5% Class Participation
- 45% Homework
- 20% Class Project
- 30% Final
There will be no exceptions to the following rules:
- If you turn in your assignments one day late you will loose 25% of the grade, two days will cost you 50% and three days 75% of the grade. No submissions will be accepted after the third day. Penlaty may be calculted continusly and per hour of delay.
- There will be a zero tolerance policy for cheating/copying HWs. The first time you are caught, you will receive a zero for the task at hand. If you are caught for a second time, you will fail the course. Providing your assignment to someone else is considered cheating on your behalf.
- Each of you has a 3 day extension you could use over the individual assignments. The minimum you could use at each instance is a 1 day extension. So you can not extend HW1 by 12 hours and then HW2 by 60 hours. You could use the 3 days with one HW, or 1 day for each HW, or 2 days for hW1 and 1 day for HW2, or 1 day for HW1 and 2 days for HW2, or ... (I hope you get the idea!)
- The 3 day extension will be applied to HW1 and what ever remains would be carried over to HW2 and so on. The 3 day extension can not be applied to the challenges.
- There is a good probability that things go south (i.e. you get sick, network fails, your computer crashes, there is a bug in the HW, server fails, etc.) as the deadline approaches. Such issues will not result in an extension to the deadline. So keep that in mind and plan for Murphy's law in advance, don't leave things for the last minute.
- There will be a zero tolerance policy for any misuse of the course infrastructure (i.e. Judge, Tarasht, etc.), regardless of the intent
- If any of the class policies are unclear, they should be brought up and discussed in the first week of the semester at hand.
Announcements:
Homeworks:
- HW 1: Available: TBA, Deadline: TBA, 11:59PM
- HW 2: Available: TBA, Deadline: TBA, 11:59PM.
- HW 3: Available: TBA, Deadline: TBA, 11:59PM.
Course Material:
-7/1
- Lecture 0- Pre-Introduction [PDF]
-7/3
- Lecture 1- Introduction [PDF]
-7/8
- Lecture 2- Control hijacking attacks: exploits and defenses [PDF]
- Buffer Overflows: Attacks and Defenses for the Vulnerability of the Decade, Cowan, C., Wagle, F., Pu, C., Beattie, S., & Walpole, J., 2000
- Basic Integer Overflows, blexim, 2002
- Exploiting format string vulnerabilities, teso, Phrack, September 2001.
-7/10
- Lecture 2- Control hijacking attacks: exploits and defenses (con't)
-7/15
- Lecture 2- Control hijacking attacks: exploits and defenses [PDF]
-7/17
- Lecture 2- Control hijacking attacks: exploits and defenses (con't)
-7/22
- Lecture 2- Control hijacking attacks: exploits and defenses (con't)
-7/24
- Lecture 3- Run-Time protection/enforcement [PDF]
- Dynamic Taint Analysis for Automatic Detection, Analysis, and Signature Generation of Exploits on Commodity Software, James Newsome and Dawn Song, NDSS 2005
- All You Ever Wanted to Know About Dynamic Taint Analysis and Forward Symbolic Execution (but might have been afraid to ask), Edward J. Schwartz, Thanassis Avgerinos, David Brumley, IEEE S&P 2011
- Control-Flow IntegrityMartin Abadi, Mihai Budiu, Ulfar Erlingsson, Jay Ligatti, CCS 2005
- Code-Pointer Integrity, Volodymyr Kuznetsov, Laszlo Szekeres, Mathias Payer, George Candea, R. Sekar, Dawn Song, OSDI 2014
-7/29
- Lecture 4- Program Analysis [PDF]
- Checking system rules using system-specific, programmer-written compiler extensions, Dawson Engler, Benjamin Chelf, Andy Chou, and Seth Hallem, OSDI 2000
- A few billion lines of code later: using static analysis to find bugs in the real world, Al Bessey, Ken Block, Ben Chelf, Andy Chou, Bryan Fulton, Seth Hallem, Charles Henri-Gros, Asya Kamsky, Scott McPeak, Dawson Engler. Communications of the ACM, 2010
- EXE: Automatically Generating Inputs of Death, Cristian Cadar, Vijay Ganesh, Peter M. Pawlowski, David L. Dill, Dawson R. Engler, 13th ACM Conference on Computer and Communications Security, 2006.
- KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs, Cristian Cadar, Daniel Dunbar, Dawson Engler, OSDI 2008.
- Under-Constrained Symbolic Execution: Correctness Checking for Real Code, David A. Ramos, Dawson Engler, Usenix Security 2015.
-8/1
-8/6
- Lecture 5- Fuzzing [PDF]
- VUzzer: Application-aware Evolutionary Fuzzing, Sanjay Rawat, Vivek Jain, Ashish Kumar, Lucian Cojocar, Cristiano Giuffrida, Herbert Bos, NDSS’17.
- KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs, Cristian Cadar, Daniel Dunbar, Dawson Engler, OSDI 2008.
- Under-Constrained Symbolic Execution: Correctness Checking for Real Code, David A. Ramos, Dawson Engler, Usenix Security 2015.
-8/8
- Lecture 6- Secure Architecture [PDF]
-8/13
- Lecture 7- Vulnerability Analysis - Devign [PDF]
-8/15
- Lecture 8- Vulnerability Analysis - Vulchecker [PDF]
-8/20
- Lecture 9- Vulnerability Analysis - Graphspd [PDF]