CE 40-815: Secure Software Systems
Sunday/Tuesday 900-1030
Room: CE204
TAs: Zahra Fazli
Quick Links: Description Acknowledgment Policies Announcements Homeworks CourseMaterial
Description:
This is a graduate level course on secure software systems. The course covers topics such as Classical Attacks (Buffer Overflow, Format String, ROP, etc), Run-time Protection (i.e. Taint tracking, CFI, Causal Analysis, etc), Code Analysis (i.e. Static analysis, Symbolic execution, fuzzing). The initial syllabus for this course was inspired from the Secure Software Systems course taught at CMU.
Policies:
- Grading policy is as follows. This is tentative.
- 15% Class Participation & Paper Presentation
- 50% Homework
- 35% 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: 1402/7/23, Deadline: 1402/8/2, 11:59PM
- HW 2: Available: 1402/8/16, Deadline: 1402/8/26, 11:59PM.
- HW 3: Available: 1402/9/5, Deadline: 1402/9/14, 11:59PM.
Course Material:
-7/4
- Lecture 0- Pre-Introduction [PDF]
-7/9
- Lecture 1- Introduction [PDF]
-7/16
- 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/18
- Lecture 2- Control hijacking attacks: exploits and defenses (con't)
-7/23
- Lecture 2- Control hijacking attacks: exploits and defenses [PDF]
-7/25
- Lecture 2- Control hijacking attacks: exploits and defenses (con't)
-7/30
- 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
-8/2
- 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/7
-8/9
-8/14
- Lecture 7- Causal Analysis - Poirot [PDF]
-8/16
- Lecture 8- Causal Analysis - Atlas [PDF]
-8/21
- Lecture 9- Causal Analysis - ShadeWatcher [PDF]
-8/23
- Lecture 10- Causal Analysis - OmegaLog [PDF]
-8/28
- Lecture 11- Causal Analysis - Benchmark [PDF]
- Are we there yet? An Industrial Viewpoint on Provenance-based Endpoint Detection and Response Tools, F. Dong, S. Li, P. Jiang, D. Li, H. Wang, L. Huang, X. Xiao, J. Chen, X. Luo, Y. Guo, CCS 2023.
-8/30
- Lecture 12- Vulnerability Analysis - Devign [PDF]
-9/5
- Lecture 13- Vulnerability Analysis - Vulchecker [PDF]
-9/7
- Lecture 14- Vulnerability Analysis - Graphspd [PDF]
-9/12
- Lecture 15- Vulnerability Analysis - Hoppity [PDF]
- HOPPITY: Learning Graph Transformations to Detect and Fix Bugs in Programs, E. Dinella, H. Dai, Z. Li, M. Naik, L. Song, K. Wang, ICLR 2020.
- Dos and Don'ts of Machine Learning in Computer Security, D. Arp, E. Quiring, F. Pendlebury, A. Warnecke, F. Pierazzi, C. Wressnegger, L. Cavallaro, K. Rieck, Usenix 2022
-9/14
- Lecture 16- 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.
-9/19
- Lecture 17- Secure Architecture [PDF]
-9/21
- Lecture 19- Usability [PDF]
- Security Challenges in an Increasingly Tangled Web, Kumar, D., Ma, Z., Durumeric, Z., Mirian, A., Mason, J., Halderman, J. A., & Bailey, M., WWW 2017
- Native Client: A Sandbox for Portable, Untrusted x86 Native Code, Yee B, Sehr D, Dardyk G, Chen JB, Muth R, Ormandy T, Okasaka S, Narula N, Fullagar N., IEEE S&P, 2009
- 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.
-10/3
-10/5