Below is the calendar for this semester course. This is the preliminary schedule, which will be altered as the semester progresses. It is the responsibility of the students to frequently check this web-page for schedule, readings, and assignment changes. As the professor, I will attempt to announce any change to the class, but this web-page should be viewed as authoritative. If you have any questions, please contact me (contact information is available at the course homepage).

Readings for Discussion
(do readings before class)
Integrity and Ethics (Due 1/14/22)
Course syllabus link
01/13/22C Programming Fundamentals
Survey Quiz (Due 1/17/22)
Toward Unseating the Unsafe C Programming Language. Paul van Oorschot. IEEE Security and Privacy, (19)2, March-April
01/18/22C Debugging (Virtual)
Two-Factor Authentication Questions (Due 2/4/22 - Extra Credit 1/31/22)
GDB Cheat Sheetlink
GDB to LLDB command maplink
01/20/22History of Attacks
The Internet Worm Program: An Analysis, Eugene Spafford, Purdue Technical Report, CSD-TR-823, 1988 (Sections 1-3).link
College of Engineering (PSU) network disabled in response to sophisticated cyberattacklink
01/25/22Confused Deputy
The Confused Deputy (or why capabilities might have been invented). Norm Hardy. Operating Systems Review, pp. 36-38, Oct. 1988. link
01/27/22Buffer Overflow Attacks
Paul van Oorschot. Tools and Jewels. Section
Common Vulnerabilities and Exposures link
02/01/22Return-oriented Attacks
Paul van Oorschot. Tools and Jewels. Section
Return-Oriented Programming: Systems, Languages, and Applicationslink
Security Focus: BugTraq link
02/03/22Heap Attacks
Attack Quiz (Graded for Participation Only) (Due 2/5/22)
Paul van Oorschot. Tools and Jewels. Section
Hackers Hut: Exploiting the Heap (11-11.2) link
02/08/22Other Attacks on Memory
Format String Vulnerability link
02/10/22Anatomy of an Attack
MITRE ATTACK (framework)link
MITRE ATTACK: Design and Philosophylink
The Risks Digestlink
02/15/22Producing Exploits 1
Project 2 - Exploits (Due: Phase 1 - 3/1/22; Phase 2 - 3/25/22)
Smashing the Stack for Fun and Profit, Aleph One. Phrack 7(49), 1996link
02/17/22Producing Exploits 2
Smashing the Stack for Fun and Profit, Aleph One. Phrack 7(49), 1996link
02/22/22Spatial Errors
Quiz 2 - (Graded for Participation Only) (Due 2/25/22)
Secure Programming HOWTO (Chapters 5 and 6)link
02/24/22Temporal Errors
Using Freed Memory link
Double Frees link
03/01/22Research Talk: Validating Safety from Memory Errors
Kaiming Huang, Yongzhe Huang, Mathias Payer, Zhiyun Qian, Jack Sampson, Gang Tan, Trent Jaeger. The Taming of the Stack: Isolating Stack Data from Memory Errors. In Proceedings of the 2022 Network and Distributed Systems Symposium (NDSS), February 2022. link
03/03/22Type Errors
One Perfect Bug: Exploiting Type Confusion in Flash (Basic Idea) link
03/08/22Spring Break - No class
03/10/22Spring Break - No class
03/15/22Course Review
03/22/22Current Defenses
Crispan Cowan, Calton Pu, Dave Maier, Jonathan Walpole, Peat Bakke, Steve Beattie, Aaron Grier, Perry Wagle, and Qian Zhang. StackGuard: Automatic Adaptive Detection and Prevention of Buffer-Overflow Attacks. Proceedings of the 7th USENIX Security Symposium,
03/24/22Control-Flow Integrity
Control-Flow Integrity: Precision, Security, and Performance (Section 2.1)link
03/29/22Software Fault Isolation
Software-based Fault Isolation (Notes)link
03/31/22Privilege Separation
Privilege-Separated OpenSSH link
04/05/22Research Talk: Automating Privilege Separation
Project 3 - Program Hardening (Due 4/29/22)
PtrSplit: Supporting General Pointers in Automatic Program Partitioning. S. Liu, G. Tan, and T. Jaeger. In 24th ACM Conference on Computer and Communications Security (CCS),
04/07/22Hardware for Security
Memory Tagging Extension: Enhancing memory safety through architecturelink
04/12/22Dynamic Testing
Beginners Guide to Fuzzing: Tutoriallink
American Fuzzy Loplink
04/14/22Static Analysis
HP Fortifylink
IBM Rationallink
LLVM Checkerslink
04/19/22Symbolic Execution
KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems. Cristian Cadar, Daniel Dunbar, Dawson Engler, in Proceedings of the 8th USENIX Conference on Operating Systems Design and Implementation, 2008. link
04/21/22Research Talk: Use-Before-Initialization (UBI) Bugs
Yizhuo Zhai, Yu Hao, Hang Zhang, Daimeng Wang, Chengyu Song, Zhiyun Qian, Mohsen Lesani, Srikanth V. Krishnamurthy, Paul Yu. UBITect: A Precise and Scalable Method to Detect Use-before-Initialization Bugs in Linux Kernel. Proceedings of the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, November
04/26/22Future of Software Security
Jave Information Flow (Jif)link
04/28/22Final Review
05/03/22Final Exam - 8:00am-9:50am, 105 Wagner