General Information
Instructor
Overview
This seminar course is designed to provide students with good understandings of the theories, principles, techniques and tools used for software security. Students will study state-of-the-art vulnerability analysis techniques and tools. In particular, this class covers many static and dynamic analysis techniques, including fuzzing, taint analysis, symbolic execution, etc. Depending on how many credits a student takes for this class, the coursework will consist of: paper reading, paper presentation, paper reviewing, labs and course projects.
The seminar is suitable for students who have strong interest in software security and intent to pursue a career in the area, e.g., PhD students already working in security or MS students interested in pursuing a PhD or doing research in the field (in the form of independent studies and/or MS Thesis). One of the goals of this seminar is to identify, by the end of the semester, a set of open research problems on which students can work during the next semester, e.g., in the form of independent studies or thesis.
Tentative Schedule
Date | Topic | Paper Presentations | Reading Assignment |
---|---|---|---|
Week-1 2/1 | x86/x64 Binary Disassembly Notes Recording | NA |
|
Week-2 2/8 | LLVM Notes Recording | NA |
|
Week-3 2/15 | LLVM Notes Recording |
|
|
Week-4 2/22 | Fuzzing |
|
|
Week-5 3/1 | Fuzzing |
|
|
Week-6 3/8 | Dynamic Taint Analysis |
|
|
Week-7 3/15 | Dynamic Taint Analysis |
|
|
Week-8 3/22 | Symbolic and Concolic Execution |
|
|
Week-9 3/29 | Symbolic and Concolic Execution |
|
|
Week-10 4/5 | SMT Solver |
|
|
Week-11 4/12 | SMT Solver |
|
|
Week-12 4/19 | Automatic Exploit Generation | ||
Week-13 4/26 | Other Bug Huntings | ||
Week-14 5/3 | Other Bug Huntings | ||
Week-15 5/10 | Course Project Presentations |
Course Structure
We will discuss several topics in this class. Each lecture may consist of two parts. In the first part, the instructor will discuss some basic knowledge, show demos of existing tools (30 mins). In the second part (1.5 hours), we will discuss 2 papers (one student will be presenting - 30 mins / leading the discussion - 15 mins).
A list of papers from top security, system or software engineering conferences (IEEE Security and Privacy aka. Oakland, USENIX Security, ACM CCS, NDSS, OSDI, SOSP, PLDI, ICSE, etc.) are provided for presentations under the "Paper Presentations" column. Usualy, we will have 2 presentations each week. Each student will present 2 papers throughout the semester. Only the presenter is required to read the papers, but it is highly recommended that everyone reads all the papers.
submit reviews for a subset of them, and participate in discussions in class.
One paper for each topic will be listed as "Reading Assignment". All students are required to read all the papers in this column. These papers are mostly survey, SoK, or managzine papers from top venues (Oakland, CACM, TSE, etc.).
Assignments
The course includes the following assignments:
Paper reading. Please first read "How to Read a Paper" by S. Keshav.
Class presentations: Each student will present 2 research papers throughout the semester. To better prepare for the presentation, you are required to do the following:
- Email me your answers to the talk preparation questions 3 days before the presentation.
- Email me your slides 3 days before the presentation.
Paper reviews: you will write reviews for 3 papers (you will choose which ones). The template of a review can be download here. You can find a set of recommendations on how to write a good reviews here and some high-level guidelines here.
Course Project: 3-credit student will participate in a course project and give a presentation on the last class.
Homework: students will finish some homework.
You can find a set of recommendations on how to give a good presentation here.