| Week |
Dates |
Topics |
Readings |
Slides |
| 1 |
1/13 |
Intro |
|
Slides
|
| 1/15 |
Security fundamentals |
|
Slides
|
| 2 |
1/20, 1/22 |
Memory corruption vulnerabilities |
|
Slides
|
| 3 |
1/27, 1/29 |
Memory corruption vulnerabilities |
Exploiting Format String Vulnerabilities
|
Slides
|
| 4 |
2/3 |
Memory corruption defense and advanced attacks |
|
Slides
|
| 2/5 |
Input validation |
|
Slides
|
| 5 |
2/10, 2/12 |
Testing |
|
Slides
|
| 6 |
2/17, 2/19 |
Fuzzing |
AFL technical details
|
Slides
|
| 7 |
2/24, 2/26 |
Symbolic execution |
|
Slides
|
| 8 |
3/3 |
Symbolic execution |
|
| 3/5 |
Intro to Rust |
|
Slides
|
| 9 |
3/10, 3/12 |
Spring break |
Give me a break! |
| 10 |
3/17, 3/19 |
Rust; Rust lab session |
|
Slides
|
| 11 |
3/24, 3/26 |
Rust; property-based testing; borrow checking |
|
Slides
Rustlings exercises
|
| 12 |
3/31 |
Rust lab session; program verification |
|
|
| 4/2 |
Program verification |
Ch4 of “Logic in Computer Science: Modelling and Reasoning about Systems”
|
Slides
|
| 13 |
4/7, 4/9 |
Program verification |
| 14 |
4/14, 4/16 |
Reference monitors |
Enforceable Security Policies
|
Slides
|
| 15 |
4/21, 4/23 |
Software-based fault isolation |
SFI Survey
|
Slides
|
| 16 |
4/28 |
Execution integrity |
|
Slides
|
| 4/30 |
Final exam review |
|
|