CSE 291-Y: Building Secure Systems with Rust Deian Stefan
This course will explore how using a language like Rust with a powerful type system and strong safety guarantees affects the design of secure systems. Do the safety guarantees provided by Rust (e.g., memory safety) make it easier to provide stronger guarantees using techniques like verification? What classes of vulnerabilities can we completely eliminate by cleverly taking advantage of Rust's type system? Where and how do Rust's safety guarantees break down when applied to low-level systems code? To (start to) answer these questions, students will read and discuss recent research papers in the field and conduct a relevant quarter-long research project in small groups.
Lectures: : Monday and Wednesday 5:00 - 6:20pm CSE 2145
Staff: : Instructor: Deian Stefan : TA: Vivien Rindisbacher
Office hours: : Deian: TBA : Vivien: TBA
Class discussion:
: We'll use the CSE slack channel cse291y-fall25
Mon Sep 29 2025: Introduction
- Slides
- Reading:
- The Rise of Worse is Better by Richard Gabriel
- Optional reading:
- "What next?" by Graydon Hoare
Wed Oct 1 2025: The early days
- Reading:
- Engineering the Servo Web Browser Engine using Rust by Brian Anderson et al.
- Region-based memory management in Cyclone by Dan Grossman et al.
- The Rust I Wanted Had No Future by Graydon Hoare
- Optional reading:
Mon Oct 6 2025: Safe and Unsafe Rust
- Reading:
- Rustnomicon chapter 1: Safe & Unsafe
- How do programmers use unsafe rust? by Vytautas Astrauskas et al.
- Optional reading:
Wed Oct 8 2025: Operating Systems
- Reading:
- TickTock: Verified Isolation in a Production Embedded OS by Vivien Rindisbacher et al.
- Optional reading:
Mon Oct 13 2025: Operating Systems
- Reading:
- Theseus: an Experiment in Operating System Structure and State Management by Kevin Boos et al.
Wed Oct 15 2025: Operating Systems
- Reading:
- Beyond isolation: OS verification as a foundation for correct applications by Matthias Brun, et al.
Mon Oct 20 2025: Operating Systems
- Reading:
- Atmosphere: Practical Verified Kernels with Rust and Verus by Xiangdong Chen, et al.
Wed Oct 22 2025: Tock, continued...
- Reading:
- Tock: From Research To Securing 10 Million Computers by Leon Schuermann, et al.
Mon Oct 27 2025: Web Assembly
- Reading:
- WaVe: a verifiably secure WebAssembly sandboxing runtime by Evan Johnson et al.
Wed Oct 29 2025: Confidential VMs
- Reading:
- VERISMO: A Verified Security Module for Confidential VMs by Ziqiao Zhou et al.
Mon Nov 3 2025: The Cloud
- Reading:
- Firecracker: Lightweight Virtualization for Serverless Applications by Alexandru Agache et al.
Wed Nov 5 2025: The Cloud (continued)
Mon Nov 10 2025: Unikernels (i.e., more cloud)
- Reading:
- Unikernels: library operating systems for the cloud by Anil Madhavapeddy, et al.
Wed Nov 12 2025: FFI
- Reading:
- Building Bridges: Safe Interactions with Foreign Languages through Omniglot by Leon Schuermann, et al.
- Optional reading:
Mon Nov 17 2025: FFI (continued)
- Reading:
- Building Bridges: Safe Interactions with Foreign Languages through Omniglot by Leon Schuermann, et al.
- A Study of Undefined Behavior across Foreign Function Boundaries in Rust Libraries by Ian McCormack, et al.
Wed Nov 19 2025: Embedded (guest: Evan Johnson)
- Reading:
- Rust for Embedded Systems: Current State and Open Problems by Ayushi Sharma et al.
Mon Nov 24 2025: FFI (and Miri)
- Reading:
- Tree Borrows by Neven Villani et al.
- A Study of Undefined Behavior across Foreign Function Boundaries in Rust Libraries by Ian McCormack, et al.
Mon Dec 1 2025: Fearless Concurrency?
- Reading:
- When is parallelism fearless and zero-cost with Rust? by Javad Abdi et al.
Wednesday Dec 3 2025: Rust in Space
- Reading:
- Bringing Rust to safety-critical systems in space by Lukas Seidel et al.
- Programming Language Evaluation Criteria for Safety-Critical Software in the Air Domain by Rob Ashmore et al.