CS590 LBS Language-based Software Security
(aka The Eternal War in Memory)
Mathias Payer -- Fall semester 2014, 3 credit course
News
- 12/03 Project report and presentation summary deadlines extended to 12/10 (from 12/08)
- 11/05 Moved Michael's presentation to the 10th.
- 11/04 Project deadline extended to 12/01. Every team must send a mandatory
weekly status update until the deadline (on 11/7, 11/14, 11/21, and 11/28).
- 09/29 Moved 10/29 presentation to 10/27 due to conflict.
- 09/23 Updated policy on missing/late hand-ins.
- 09/19 Proposal submission deadline extended to Friday 09/19 11:59pm.
- 09/03 Added information about presentation.
- 09/01 Fixed typo with dates.
- 08/31 Filled in students names to list of papers.
- 08/26 We have a Piazza page !
- 08/25 Office hours (Mon, 3:30p in LWSN 3154M) and course evaluation added.
- 08/23 Updated detailed schedule and dates
- 08/02 Students can now register online for the course
- 07/29 Updated topic description
- 07/28 Updated topic description
- 06/07 Updated text and topic description
- 05/30 First draft of description
Course overview
Unsafe languages like C/C++ are widely used for their great promise of
performance. Unfortunately, these languages are prone to a large set of
different types of memory errors that allow the exploitation of several attack
vectors. A (non-exhaustive) list of low-level memory errors is (i) buffer
overflows, (ii) integer overflows, (iii) off by one error, (iv) improper null
termination, (v) unchecked format string, (vi) memory allocation errors like
double free or use after free, and many many more. Combinations of one or more
of these errors may be used to execute possible memory attacks like code
corruption, control-flow hijack attacks, data-only attacks, or information
leaks.
On a high level memory safety (and type safety) would solve all these problems.
Safe languages can (somewhat) cheaply enforce these properties. Unfortunately,
these guarantees come at a pretty high cost if retrofitted onto existing
languages.
This seminar explores different security policies that are applied to low level
languages without type or memory safety to enforce (relatively) stronger
protection and guarantees compared to the status quo. We will evaluate different
security policies at different levels of abstractions: based on language
changes, source code changes, and binary rewriting that enforce some guarantees
at different stages of an ongoing exploit. Each student will pick one topic
(one specific security policy) from the list of topics below. The student is
expected to organize the material and prepare a presentation of the topic for
the other students. In addition, students will propose and work on an
independent course project. The main goals of this seminar are:
- understanding and defining the security policy implemented by given work;
- reasoning about the power and effectiveness (completeness in regard to attack
vectors covered, strength of the guarantees) of different security policies
(and being able to compare between them);
- reasoning on the computational and resource cost of security policies and
possible downsides;
- alternative implementations of the policy at other levels.
General goals of a seminar are:
- learning how to understand and prepare an overview of a topic for other;
- students through reading the relevant papers, articles, or surveys and through
practical investigations;
- learning how to reflect on a topic;
- presenting a technical topic in computer science to an audience of peers;
- learning how to identify possible research topics and articulating differences
to existing related work.
Your grade is based on:
- design and implementation of class project (65%) (hard deadlines: 09/23 for
description, 12/01 for code, 12/10 for write-up (extended from 12/08); weekly status updates on
11/07, 11/14, 11/21, and 11/28 mandatory);
- technical presentation of your topic and writing a 1 page summary of the
presentation after your topic (deadline: 12/10; extended from 12/08) (30%);
- active participation in class (5%);
- for academic honesty refer to the Purdue integrity/code of conduct;
- except as by prior arrangement or notification by the professor of an
extension before the deadline, missing or late work will be counted as a zero/fail.
Topic presentations
The length of presentations for research papers should be between 20 and 30
minutes. You can structure the presentation as follows:
- Motivation of the paper (1-2 slides, ~3 minutes)
- Presentation of the core design and implementation of the research paper (4-8
slides, ~10 minutes)
- Evaluation of the security policy (2-3 slides, ~4 minutes)
- Material for discussion: advantages, disadvantages, limitations of the
approach (2-3 slides, ~5 minutes)
- Summary slide of the paper: policy, defense property (at which point in
memory model), implementation (language, compiler, or runtime)
Course project
For the course project you can either choose to (i) design and implement
extension of existing policy or (ii) develop metrics and implement benchmark
that measures effectiveness of existing policy. The project follows the
following milestones:
- propose and discuss details and scope of the project. Deadline: 09/19 (past)
- design and implementation of the project. Deadline: 12/01 (past, extended from 11/17)
- documentation and presentation of the course project. Deadline: 12/10 (extended from 12/08)
The project will be graded based on the 1 page proposal that you have to turn
in on 09/17 and the documentation that you have to hand in on 12/10. As
documentation you'll write a research paper (3 to 5 pages in ACM sigplan
format)
that includes motivation, introduction, design, implementation, and evaluation
of your research project. The paper will be reviewed according to academic
standards, including merit, contribution, feasibility, implementation, and
evaluation.
Topics
A list of covered and related topics ranges from memory safety ,
, , , , , , , ,
, over data and pointer integrity , , , ,
randomization , , , , , data and control
flow integrity , , , , , and dynamic policies
, , to software-based fault isolation , . This
list is non-exhaustive and the list may be adapted during class and students may
suggest other policies they are interested in.
Schedule
The seminar meets every Monday from 4:30p to 6:20p in REC112 and Wednesday from
12:30p to 1:20p in REC122. Office hours are each Monday from 3:30p to 4:20p in
LWSN 3154M. A draft of the schedule looks as follows but remember that no plan
survives contact with reality!
Date |
Topic |
Presenter(s) |
Material |
8/25 |
Course administration
and Eternal War in
Memory |
Mathias Payer |
|
8/27 |
Project/paper selection |
|
|
9/03 |
Project/paper selection |
|
|
9/08 |
Memory safety (spatial,
language-based) |
Daniele,
Terry |
,
|
9/10 |
Memory safety (spatial,
source-based) |
Sergei |
, |
9/15 |
-"- |
Scott, Denis |
, |
9/17 |
Deadline for project
proposals |
|
|
9/22 |
Memory safety (temporal,
source-based) |
Xilun |
|
9/22 |
Memory safety (temporal,
library-based) |
Gregory |
, |
9/24 |
-"- |
Nathan |
|
9/29 |
-"- |
Nathan |
|
9/29 |
Memory safety (temporal,
binary-based) |
Xilun |
|
10/01 |
-"- |
Robert |
|
10/06 |
no class (OSDI) |
|
|
10/08 |
no class (OSDI) |
|
|
10/13 |
Fall break, no class |
|
|
10/15 |
Project presentations |
|
|
10/20 |
Data Integrity |
Prachi, Yidan |
, |
10/22 |
Pointer Integrity |
Denis |
|
10/27 |
Data Space Randomization |
Prachi |
,
|
10/29 |
No class (workshop) |
|
|
11/03 |
Instruction Set
Randomization |
Michael, Michael |
,
|
11/05 |
Data-Flow Integrity |
Jeff |
|
11/10 |
Instruction Set Random. |
Michael |
|
11/10 |
Project discussion |
|
|
11/12 |
Control-Flow Integrity |
Sergei |
|
11/17 |
-"- |
Syed, Pinar |
, |
11/19 |
Code Pointer Integrity |
Syed |
|
11/24 |
Dynamic policies |
Shagufta, Pinar |
, |
12/01 |
-"- |
Daniele |
|
12/01 |
Software-based Fault
Isolation |
Servio |
|
12/03 |
-"- |
Scott |
|
12/08 |
Project presentations |
|
|
12/10 |
Project presentations |
|
|
12/15 |
Project presentations |
(backup) |
|
System security basics
The 10kstudents initiative prepared some material to introduce students to different forms of
memory corruptions and other security problems. Using this material students
become more aware of security implications in code.
If you want to get more hands-on experience and practical exposure to security
problems then the b01lers, the Purdue Capture-The-Flag
team is a great place to start as well. In weekly meetings we discuss security
problems and possible attack vectors.