Taught by Mathias Payer. Fall semester 2023, 3 credit course.
Unsafe languages like C/C++ are widely used for their great promise of performance. Unfortunately, these languages are prone to a large set of different types of memory and type errors that allow the exploitation of several attack vectors such as code reuse, privilege escalation, or information leaks. On a high level memory and type safety would solve all these problems. Safe languages can (somewhat) cheaply enforce these properties. Unfortunately, these guarantees come at a high cost if retrofitted onto existing languages.
When working with unsafe languages, three fundamental approaches exist to protect against software flaws: formal verification (proving the absence of bugs), software testing (finding bugs), and mitigation (protecting against the exploitation of bugs). In this seminar, we will primarily focus on recent advances in system security by looking at papers from recent top tier conferences.
This seminar explores three areas: the understanding of attack vectors, approaches to software testing, and mitigation strategies. First you need to understand what kind of software flaws exist in low level software and how those flaws can be exploited.
Each student will pick one topic from the list of topics below. The student is expected to organize the material and prepare a presentation of the topic for the other students. The main goals of this seminar are:
Your grade is based on:
Your summaries are expected to be written using the acm two-column format. You must submit them at most one week after the presentations.
The seminar meets Tuesdays from 10:15 to 12:00 in INM203. A draft of the schedule looks as follows but remember that no plan survives contact with reality!
The length of presentations for research papers should be between around 30 minutes, followed by 15 minutes of discussion. You can structure the presentation as follows:
When preparing the presentation, send a PDF version of your slides to Mathias before your talk.
This list is non-exhaustive and the list may be adapted during class and students may suggest other recent software security papers they are interested in. The open book Software Security: Principles, Policies, and Protection1 provides an overview of many topics but does not go into depth for each policy. Similarly, the Eternal War in Memory2 presents an overview of the software security landscape.
Automated Fuzz Testing
LibAFL: A Framework to Build Modular and Reusable Fuzzer (CCS22)
UTOPIA: Automatic Generation of Fuzz Driver using Unit Tests (Oakland'23)
Fuzztruction: Using Fault Injection-based Fuzzing to Leverage Implicit Domain Knowledge (SEC'23)
autofz: Automated Fuzzer Composition at Runtime (SEC23)
DAFL: Directed Grey-box Fuzzing guided by Data Dependency (SEC23)
No Linux, No Problem: Fast and Correct Windows Binary Fuzzing via Target-embedded Snapshotting (SEC'23)
Mitigating Security Risks in Linux with KLAUS: A Method for Evaluating Patch Correctness (SEC'23)
FuzzJIT: Oracle-Enhanced Fuzzing for JavaScript Engine JIT Compiler (SEC'23)
Bugs everywhere
Drone Security and the Mysterious Case of DJI's DroneID (NDSS'23)
Taxonomy of Attacks on Open-Source Software Supply Chains (Oakland'23)
BLEDiff: Scalable and Property-Agnostic Noncompliance Checking for BLE Implementations (Oakland'23)
How IoT Recycling Threatens Your Sensitive Data: Exploring the User-Data Disposal in Used IoT Devices (Oakland'23)
WarpAttack: Bypassing CFI through Compiler-Introduced Double-Fetches (Oakland'23)
Bug Hunters' Perspectives on the Challenges and Benefits of the Bug Bounty Ecosystem (SEC'23)
Framing Frames: Bypassing Wi-Fi Encryption by Manipulating Transmit Queues (SEC'23)
`VIPER: Spotting Syscall-Guard Variables for Data-Only Attacks (SEC'23)
Are Consumers Willing to Pay for Security and Privacy of IoT Devices? (SEC'23)
Sanitizers
Evocatio: Conjuring Bug Capabilities from a Single PoC (CCS'22)
Vulnerability Discovery for All: Experiences of Marginalization in Vulnerability Discovery (SP'23)
Uncontained: Uncovering Container Confusion in the Linux Kernel (SEC'23)
Security Architectures
WaVe: a verifiably secure WebAssembly sandboxing runtime (Oakland'23)
TRUST: A Compilation Framework for In-process Isolation to Protect Safe Rust against Untrusted Code (SEC'23)
You can find the papers through DBLP or the corresponding websites: