CIS 4930/6930, Fall 2015
Systems Security
Course Goals
This course aims at providing a comprehensive understanding of computer system security. The course will focus on how computer systems, specifically operating systems, are built in a way that makes breaching into a system harder. It will also cover basic security concepts, including common attack techniques, application of cryptography in security, authentication/authorization, and network security. The course will provide a number of historical aspects on how operating systems have evolved over time and how security consideration was brought into their design. Not only mechanisms for enhancing security will be taught, a great deal of the course is also to discuss when and where things can go wrong and how design flaws in a system can be exploited to compromise security. The goal of the course is to provide a solid theoretical foundation for computer system security, and hands-on experience in applying the theory to practice. Interesting research topics can also be derived from course projects.
Course Schedule
- Aug 24.
Lecture 1: Introduction
Slides.
- Aug 26.
Lecture 2: Buffer-overflow exploit
Slides.
Reading Assignment 1:
Setuid demystified.
- Sept 9.
Lecture 3: Basic Cryptography
Slides.
Homework 1
- Sept 14.
Lecture 4: Authentication Basics
Slides.
- Sept 16.
Lecture 4: Authentication Basics (continued)
- Sept 21.
Lecture 5: Mitigation of buffer-overflow exploit
Slides.
Reading Assignment 2:
The geometry of innocent flesh on the bone: return-into-libc without function calls (on the x86).
- Sept 23.
Lecture 6: UNIX System Protection
Slides.
- Sept 28.
Lecture 7: Windows protection system.
Slides.
Secure OS concept Slides.
Reading Assignment 3:
Protection, by Butler Lampson.
- Sept 30.
Lecture 8: SELinux.
Slides.
- Oct 5.
Reading assignment presentation:
Setuid demystified. by Ziming Zhang.
The geometry of innocent flesh on the bone: return-into-libc without function calls (on the x86).
by Bader Albassam.
- Oct 7.
Reading assignment presentation:
Protection. by student.
- Oct 12.
Midterm exam.
- Oct 19.
Lecture 9: Android System Security.
Slides.
Supplemental Reading: Understanding Android security, William Enck, IEEE Security & Privacy, 2009.
Reading Assignment 4 (Ziming):
Android permissions demystified.
Reading Assignment 5 (Student):
A study of Android application security.
Reading Assignment 6 (Bader):
Upgrading your Android, elevating my malware: privilege escalation through mobile OS updating.
- Oct 21.
Lecture 10: Security Models.
Slides.
Supplemental reading: The Limits of Formal Security Models.
- Oct 26.
Midterm exam review.
Lecture 11: Trusted Infrastructure. Slides.
- Oct 28.
Lecture 12: Trusted Infrastructure (continued).
Reading Assignment 7 (Jason):
On the Effectiveness of Address-Space Randomization.
Reading Assignment 8 (Nathaniel):
Just-In-Time Code Reuse:
On the Effectiveness of Fine-Grained Address Space Layout Randomization.
Reading Assignment 9 (Thiago):
Automated Software Diversity.
Reading Assignment 10 (Brooke):
Hacking Blind.
Reading Assignment 11 (Samuel):
Information Leaks Without Memory Disclosures: Remote Side Channel Attacks on Diversified Code
.
Reading Assignment 12 (Jacob):
It's a TRaP: Table Randomization and Protection against Function-Reuse Attacks.
- Nov 2.
Lecture 13: Real-world System Attacks. Slides. Lecture by Daniel Wang.
- Nov 9.
Reading assignment presentation:
Android permission demystified by Ziming.
A study of Android application security by Student.
Upgrading your Android, elevating my malware: privilege escalation through mobile OS updating by Bader.
- Nov 15.
Reading assignment presentation:
On the Effectiveness of Address-Space Randomization by Jason.
Just-In-Time Code Reuse: On the Effectiveness of Fine-Grained Address Space Layout Randomization by Nathaniel.
Automated Software Diversityby Thiago.
- Nov 17.
Reading assignment presentation:
Hacking Blind by Brooke.
Information Leaks Without Memory Disclosures: Remote Side Channel Attacks on Diversified Code by Samuel.
It's a TRaP: Table Randomization and Protection against Function-Reuse Attacks by Jacob.
- Nov 23.
Lecture 14: DNS security.
Slides.
Supplemental reading:
Digging Up Dirt in the DNS Hierarchy. Ron Aitchison, Linux Journal, 2008.
Part I,
Part II.
It's the End of the Cache as We Know It.
Dan Kaminsky, Black Hat USA 2008. Video.
DNS Poisoning: Developments, Attacks and Research Directions,
David Dagon.
USENIX Security 2008.
(The slides and audio of the presentation can be found on Thursday's panel "Setting DNS's Hair on Fire".)
-
Nov 25.
No class. Solutions to midterm exam.
- Nov 30.
Lecture 15: DNS security extension.
Slides.
Supplemental reading:
DANE: Taking TLS Authentication to the Next Level Using DNSSEC.
Some interesting DNSSEC deployment issues.
- Dec 2.
Final Exam Review.
Slides.
Instructor and course meeting times
-
Instructor: Xinming (Simon) Ou (xou at USF dot EDU), ENB339
-
TA: Xiaolong (Daniel) Wang (xiaolongw AT mail DOT usf.edu)
-
Meeting time:
MW 2-3:15, in ENG 4
-
Office hour: Simon: Tue 1-3, Fri 1-2.
Prerequisites
Basic understanding of computer systems, including operating systems, networks, compilers, etc. This is a course that primarily targets graduate students and junior/senior-level undergraduate students in computer science and engineering.
Reference book
Operating System Security.
Trent Jaeger, Morgan & Claypool, 2008.
Grading
There will be on average one assignment per week, which could be a written homework, a programming project, or a reading assignment. There will be a midterm and final exam. The break down of the final score of the course is:
-
Assignments: 30%
-
Exams: 60%
-
Class participation: 10%
Contact
Questions can be emailed to xou (put some stuff here) usf (a little dot) edu.