The class will be organized around the game Werewolves, a Linux-based game based on Mafia that involves interprocess communication and exploitation of side channels. For the first half of the course, we’ll learn all the ins and outs of a Linux system and its basic security mechanisms (process separation via virtual memory, file systems, CPU scheduling, etc.) through readings, homework assignments, and playing Werewolves. We’ll mostly read papers that attack the security of Linux and UNIX systems because those papers are the best way to learn how a system works. For the second half of the course, we’ll read some foundational papers about distributed systems and work on a project to re-think Werewolves as a distributed system.
1/24: Two readings about the confinement problem… a note and a comment
1/31: setuid() demystified
2/14: Rowhammer
2/21: MELTDOWN
3/6: Sring break
3/13: Lamport
3/20: Dijkstra
3/27: RPC
4/10: Eraser (optional)
4/17: p2p (optional)
4/24: Priority inversion (optional)