Classic Papers on Memory Safety
This page compiles a list of classic and (I believe) to-be classic papers and articles on memory safety. All these publications are worth reading and re-reading. The definition of “classic” in this context is essentially impactful. However, classic/impactful does not necessarily mean the best of their class at the time. There are varied reasons for a work to be impactful, such as having strong support from a large organization. In addition, as you may have noticed, the lists are highly selective and somewhat (and inevitably) subjective. For a more comprehensive compilation of good papers to read, please see this. (I confess that I have not read many of the papers in the GitHub repo, so use it with caution. :-)
The publications are categorized as follows:
- Literature Review: Surveys and overview of the memory safety literature
- Offense: How memory safety bugs can be exploited and turned into vulnerabilities
- Safe Systems Languages: Mainly Safe dialects of C
- Safe Implementations: Retrofitting memory safety into C/C++ during compilation or binary rewriting
- Run-time Mitigations: Run-time mitigations against exploitations of memory safety errors
- Program Analysis: Static and dynamic analysis to detect memory safety errors
The classification of defenses mainly follows the Checked C paper. Note that many classic papers have an extended or revised version published later than the original. For these papers, I use the latest version.
Literature Review
2013 | Oakland | SoK: Eternal War in Memory |
---|
Offenses
Safe Systems Languages
2002 | ATC | Cyclone: A Safe Dialect of C |
---|---|---|
2007 | ESOP | Dependent Types for Low-Level Programming |
2018 | SecDev | Checked C: Making C Safe by Extension |
Safe Implementations
Run-time Mitigations
1993 | SOSP | Efficient Software-Based Fault Isolation |
---|---|---|
1998 | Security | StackGuard: Automatic Adaptive Detection and Prevention of Buffer-Overflow Attacks |
2003 | PaX | ASLR |
2006 | OSDI | XFI: Software Guards for System Address Spaces |
2009 | Oakland | Native Client: A Sandbox for Portable, Untrusted x86 Native Code |
2009 | TISSec | Control-Flow Integrity Principles, Implementations, and Applications |
2010 | Security | Adapting Software Fault Isolation to Contemporary CPU Architectures |
2015 | AsiaCCS | The Performance Cost of Shadow Stacks and Stack Canaries |
2019 | Okaland | SoK: Shining Light on Shadow Stacks |
Program Analysis
2005 | NDSS | Dynamic Taint Analysis for Automatic Detection, Analysis, and Signature Generation of Exploits on Commodity Software |
---|
I also sorted all the papers in chronological order to provide a high-level overview for the development of the memory safety war.