18732 Secure Software Systems

Instructor
Dawn Song
Course Home
http://www.ece.cmu.edu/~dawnsong/teaching/s05
Location
Scaife Hall 125
Meeting Times
Monday & Wednesday, 1:00-2:20PM
Instructor
TA
Dawn Song
HH D203
http://www.ece.cmu.edu/~dawnsong
Debin Gao, Asad Samar
HH D-level


Email address
Purpose
18732-s05-general@lists.andrew.cmu.edu
Questions about subject matter, course policy, grading, etc. (Also see the class discussion board, on blackboard).
18732-s05-summaries@lists.andrew.cmu.edu
Submit reading summaries here.
18732-s05-scribenotes@lists.andrew.cmu.edu
Submit scribe notes here.
18732-s05-project@lists.andrew.cmu.edu
Submit project proposals, milestones, and papers here.

Prerequisites:

The prerequisites of this class include 18730 (Introduction to Computer Security), an undergraduate Operating System class, proficient programming in C and Java, and familarity with assembly language.

Topics Covered in Class:

Software vulnerabilities: study the causes and manifestations of different forms of vulnerabilities, including language dependent vulnerabilities (buffer overrun, format string vulnerabilities, etc.), language independent vulnerabilities (race conditions, concurrency vulnerabilities, privilege control, etc.), and viruses, etc.

Software analysis, testing, and verification: study the general methodology and specific techniques for analyzing software for vulnerabilities, testing programs for bugs, and verifying correctness of code. Techniques covered include static analysis, high-coverage testing, fault injection, model checking, and theorem proving. We'll survey a set of existing tools as well as the underlying techniques.

Software transformation: study various software tranformation techniques for different purposes, including worm/virus morphing and software watermarking.

Secure software engineering practices and system evaluation: study security issues in software lifecycle including design, implementation, evaluation, patching, etc.

Secure operating systems & platforms: study foundations of secure OS, attacks & defenses, fault isolation, sandboxing and confinement, Virtual machine monitors, runtime monitoring, NGSCB, TCG, SE Linux, .net

Other topics: web security, Java security, mobile code securtiy, storage systems and database security, DRM

Class Format:

Each class will involve lecturing and some discussions on related topics. 1 to 3 research papers will be assigned as reading requirements for each class. Reading assignments will be posted to the class web site several days before the class. Students must read the assigned papers before each class and write a short summary to be turned in electronically before class. The summaries should be sent to 18732-s05-summaries@lists.andrew.cmu.edu in plain text format (no attachment). Each summary should contain a description of the technical approach in the paper, three technical points that you learned from the paper, and three most significant flaws that you discovered in the paper.

Grading:

35%
Final project
Each group needs to implement and demonstrate a tool that can assist in improving software system security. Each group needs to write a project report and give an in-class presentation.
20%
Midterm
There will be a midterm exam.
10%
Scribe notes
A group of two students is responsible for the scribe notes for each class. The two students are asked to take notes in class and submit the first draft of the scribe notes in 3 days after class. The instructor and TAs will provide feedbacks, and the final draft is due in a week after class. The final draft will be posted on the BlackBoard.
10%
Paper summaries and class participation
This portion is for paper summaries and class participation. Students must write a short summary for every paper assigned to the class. Summaries will be chosen randomly to be graded. All students should participate in class discussions.
25%
Homework/Lab
There will be several homeworks/lab assignments.

Format Requirements for Project Report and Scribe Notes

The project report and scribe notes should be written in LaTex.

Template for the project report
Template for the scribe notes

You should write your contents in a separate file and include it in project.tex and scribe.tex using the "\input{your-flie-name}" line. The bibliography should be included in the .bib tex file.  If you are not familiar with LaTex, you may also use Lyx at http://www.lyx.org.

Resources:

Information about the class will be available at http://www.ece.cmu.edu/~dawnsong/teaching/s05. Course information, announcements, and reading assignments will be posted to this site. We will also be using the CMU Blackboard site for this course. To access the site, go to http://www.cmu.edu/blackboard and log in. If you are enrolled in the course, it will appear under my courses.

If you have a question about the course, including course logistics or material we have covered, please post it to the Discussion Board. It's on the course blackboard site, under Communications.  You may also send mail to 18732-s05-general@lists.andew.cmu.edu.

Warning

We may discuss vulnerabilities in widely-deployed computer systems in class. This is not intended as an invitation to go exploit those vulnerabilities. CMU's policy (and my policy) on this should be clear: you may not break into machines that are not your own; you may not attempt to attack or subvert system security. Breaking into other people's systems is inappropriate, and the existence of a security hole is no excuse.