16:198:671:01: Introduction to Software Security

Spring 2009


Quick Links: [ General information | Course overview | Readings | Schedule | Grading | Project | Resources | RUSENIX Security 2009! ]

Latest Announcements


General Information


Course overview

Security vulnerabilities in software cost the economy several billion dollars a year. Why is today's software so vulnerable to exploits? What techniques are attackers using to compromise software? How can we secure software to resist such attacks? Can we design primitives that will help programmers create software that resists such attacks?

This course will seek to answer such questions by covering an exciting range of topics ranging from state-of-the-art techniques used to attack software, as well as techniques to strengthen software to resist attacks. We will study analysis techniques that can be used to understand security properties of software systems and transform them to create secure software.

The course will be based upon readings of research papers, both classics as well as from recent security conferences. A key goal of the course will be to teach the student to think both as an attacker as well as a defender. Consequently we will study both "attack" and "defense" papers. The most exciting part of the course will be a course project where students get to research a topic of their liking, and report their findings in a conference style paper.


Reading list

Here is the reading list for this course. We will discuss papers roughly in the order that they appear on this list, though we will not be discussing all papers on the list. Please see the class schedule for the assigned readings for each week.

Students are expected to read and review the papers before they come to class. These reviews must be mailed to the instructor before class each week (latest by noon on the day of class). We will use class hours to summarize the paper, discuss its key ideas and shortcomings. Reading the paper before class will ensure that we will have more meaningful in-class discussions.

As you read the assigned papers, try to distill each paper as follows:


Class schedule

Each week, we will discuss two (sometimes three) papers from our reading list according to the schedule below. Papers to be presented by students are marked "S". I will present the other papers in class.

The schedule below is still tentative, and may change over the course of the semester.
Date Assigned reading Student presenter Slides
1/20/2009 None PDF
1/27/2009 Nitya PDF
2/3/2009 Huijun and Qiang PDF
2/10/2009 Sangeetha and Krithika PDF
2/17/2009 Deepak and Chirag PDF
2/24/2009 Mudassir PDF
3/3/2009 Zhiyuan PDF
3/10/2009 Qingyuan PDF
3/24/2009 Srihita and Parvathy PDF
3/31/2009 Jigesh PDF
4/7/2009 Bill and Rezwana PDF
4/14/2009 Swati PDF
4/21/2009 Crystal PDF
4/28/2009 Project Presentations - -

Grading


Project

The final project is the main ingredient of this course. Students are expected to conduct original research and report their findings in a conference paper-style project report. The project can either be a new security system, extension of a previously-proposed system, or security analysis of an existing system. Although I will suggest project ideas, students are welcome and are encouraged to suggest their own projects.

The project will have the following checkpoints:

Important dates

Deadline Milestone
February 24th, 2009 Project proposal due
March 24th, 2009 Midpoint review; Related work sections due
April 21st, 2009 Project titles and abstracts due
April 28th, 2009 Class minisymposium
May 5th, 2009 Final project reports due

More information on the project, including project suggestions, will be posted here over the course of the semester.


Other Resources

Organizations

Tips to read an academic paper

Tips for good technical writing

Tips for effective presentation


Vinod Ganapathy