18732 Secure Software Systems

Dawn Song
Course Home
Baker Hall 136A
Meeting Times
Monday & Wednesday, 10:30-11:50PM
Dawn Song
HH D203
James Newsome
HH D-level, cube C4

Email address
Questions about subject matter, course policy, grading, etc. (Also see the class discussion board, on blackboard).
Submit reading summaries here.
Submit project proposals, milestones, and papers here.
You should subscribe to this list to receive class announcements. See instructions below.

To subscribe to 18732-s04-announce, send email to majordomo@lists.andrew.cmu.edu, with the text "subscribe 18732-s04-announce" in the body of the email.


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-s04-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 one or two most significant flaws that you discovered in the paper.


Information about the class will be available at http://www.ece.cmu.edu/~dawnsong/teaching/s04. 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-s04-general@lists.andew.cmu.edu.


Final project
Each group needs to implement and demonstrate a tool that can assist in improving software system security.
Survey paper
Each group needs to write a survey paper on a selected topic that is relevant to the class. The survey paper needs to describe clearly the selected topic and survey the related work on this topic.
Security audit and tool demo
Each group will need to learn a software analysis tool and use it to audit certain software programs and demo the tool.
There will be a midterm exam.
Buffer-overrun experiment
There will be a hands-on experiment on buffer-overrun.
Paper summaries and class participation
This portion is for paper summaries and participation in class discussions. Students must write a short summary for every paper assigned to the class. Summaries will be chosen randomly to be graded.

Format Requirements for Survey Paper and Project Report

The survey paper and project report should to be written in LaTex, so we can easily assemble surveys and reports from different groups into one document. The template for the survey paper and project report is available here. You should write your contents in a separate file and include it in survey.tex and project.tex using the "\input{your-flie-name}" line. If you are not familiar with LaTex, you may also use Lyx at http://www.lyx.org.


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.