Instructor: | Prateek Saxena (dcsprs at nus dot edu dot sg) | |
TAs | Shruti Tople (cs5231.ta at gmail.com) | |
Room & Timings: | i3-Aud, Friday 6:30 - 8:30 pm | |
IVLE Page: | CS5231 | |
Semester: | AY 2015/2016 Semester 1 |
Security breaches cost billions of dollars worth of damage to the computing industry. Today, cybercriminals control armies consisting of several millions of compromised machines. Attacks are increasingly being perpetrated towards enterprises, individuals, critical infrastructure and even governments. At the same time, our computer systems and platforms are fast evolving to meet the demands of the industry. Increasing use of personalized devices, and our growing dependence on legacy computer systems that weren't designed with security in mind is a challenge ahead. Have you thought about how computer systems can be designed to secure against the practical challenges for the next 10 years and beyond?
In this course, we will study the design of existing and next-generation systems software from a security perspective.This course introduces you to the field of systems security: that is, how to analyze and develop secure systems. The course covers fundamental concepts of systems design, low-level vulnerability exploitation, design flaws in design of operating systems and languages, and a few advanced research topics.
The goal of this class is to enable students to:
The table below lists the schedule of topics.
Week | Date | Topic | Readings | Announcements |
---|---|---|---|---|
1 | 14 Aug | Introduction to Computer Security | Lecture Videos | |
2 | 21 Aug | Memory Corruption Vulnerabilities |
| |
3 | 28 Aug | Exploits I: Code Injection, Control-flow Hijacking | Assgt. 1 out | |
4 | 4 Sep | Exploits II: Code Reuse (ROP), Data-oriented Attacks |
||
5 | 11 Sep | Defenses I: Binary Hardening Primitives (Inline & External Reference Monitors) |
||
6 | 18 Sep | Defenses II: Safe Languages (Memory Safety, Type Safety, Information Flow Safety) | CETS: Compiler-Enforced Temporal Safety for C CCured: Type-Safe Retrofitting of Legacy Code Taint-Enhanced Policy Enforcement: A Practical Approach to Defeat a Wide Range of Attacks |
Assgt 1 due on 27th Sept |
7 | 2 Oct | Defenses III: Virtualization & Trusted Computing |
Terra: A Virtual Machine-Based Platform for Trusted Computing |
|
8 | 9 Oct |
|
||
9 | 16 Oct | Guest Lecture --- Recent Advances in Virtualization & Trusted Computing |
SGX - Innovative Instructions and Software Model for Isolated Execution |
|
10 | 23 Oct |
Sandboxing & Privelege Separation | Ostia: A Delegating Architecture for Secure System Call Interposition |
Assgt 2 out |
11 | 30 Oct |
Malware & OS Security | HookFinder: Identifying and Understanding Malware Hooking Behaviors On the Limits of Information Flow Techniques for Malware Analysis and Containment |
|
12 | 6 Nov | Bug- Finding : Static Analysis, Fuzzing, Taint-tracking, Symbolic Execution |
Automatic Predicate Abstraction of C Programs KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs |
|
13 | 13 Nov |
Advanced Topics: Android Security / Bitcoin / Systems Crypto (Implementation Errors) | Public versus Private Blockchains: Permissioned Blockchains Public versus Private Blockchains : Permissionless Blockchains |
Assgt 2 due on 22nd Nov |
This class is relatively heavy and requires hands-on programming and experimentation. I will explain the detailed logistics of the course in the first lecture. There will be no final exam, labs or tutorials for the course.
Grade distribution is as follows:
Both the assignments will be done in groups of 3. In each project, the team members are expected to individually implement certain parts and declare their collaborative contributions explicitly. The midterm is in-class and open-book.
Each student is expected to have access to his own laptop / desktop. All project assignments are distributed as VirtualBox VMs; you are expected to be able to setup and run these VMs. If you do not have access to your own laptop / desktop, you should approach the instructor within the first week of the course.
This is a graduate-level class for students interested in security, both conceptually and operationally. The class is designed to be somewhat self-paced and self-taught; all graded assignments are done at home. Lectures will only cover topics at a conceptual level. Being a graduate class, you are expected to pick-up and learn new things on your own with help from your friends / teammates and from the web. The IVLE forum is your best friend --- if you get stuck, ask questions and exchange ideas freely on the forum or consult the web. The instructor and TAs will *not* help debug your code, or tell you how to overcome technical difficulties. There is no restriction on your communication with your colleagues, so be prepared to ask around and pick things up on your own.
Prerequisites
The prerequisite is good undergraduate level understanding of computer science and having taken a undergraduate or graduate course in security. Exceptions to prerequisite requirements are allowed with the permission of the graduate office and the instructor.
In this class, you will be exposed to several powerful attack techniques. This class is not an invitation exploit vulnerabilities in the wild without informed consent of all involved parties. Attacking someone else's computer system is an offence; you are expected to use your knowledge with discretion.
For all readings and assignments, please feel free to discuss with your peers and use the Internet. All students must comply with NUS academic honesty policies.