一些广为人之的
- NX
- ASLR
- stack canary
- PIE(Position-Independent Executable)
- RELRO
Buffer overflow detection
redzone
- Purify: Fast detection of memory leaks and access errors.[1992]
- Lightweight bounds checking.[2012]
- ASan: Addresssanitizer: A fast address sanity checker.[2012]
- Valgrind: a framework for heavyweight dynamic binary instrumentation.[2007]
bounds checking
- Backwardscompatible bounds checking for arrays and pointers in c programs.[1997]
- CRED: A practical dynamic buffer overflow detector.[2004]
- Backwardscompatible array bounds checking for c with very low overhead.[2006]
- Baggy bounds checking: An efficient and backwards-compatible defense against out-of-bounds errors.[2009]
- Paricheck: an efficient pointer arithmetic checker for c programs.[2010]
- Heap bounds protection with low fat pointers.[2016]
- Low-fat pointers: compact encoding and efficient gate-level implementation of fat pointers for spatial safety and capabilitybased security.[2013]
- EffectiveSan: Type and memory error detection using dynamically typed c/c++.[2018]
- Softbound: Highly compatible and complete spatial memory safety for c.[2009]
- Sgxbounds: Memory safety for shielded execution.[2017]
- Fast and generic metadata management with mid-fat pointers.[2017]
- MPX: Intel mpx explained: A cross-layer analysis of the intel mpx system stack.[2018]
- Cup: Comprehensive user-space protection for c/c++.[2018]
- Framer: A tagged-pointer capability system with memory safety applications.[2019]
- Pico: A presburger in-bounds check optimization for compilerbased memory safety instrumentations.[2021]
Pointer tagging
- SafeC: Efficient detection of all pointer and array access errors.[1994]
- Cyclone: a safe dialect of c.[2002]
- Ccured: Type-safe retrofitting of legacy code.[2002]
- The cheri capability model: Revisiting risc in an age of risk.[2014]
- Cherivoke: Characterising pointer revocation using cheri capabilities for temporal memory safety.[2019]
- Baggy bounds checking: An efficient and backwards-compatible defense against out-of-bounds errors.[2009]
- Delta pointers: Buffer overflow checks without the checks.[2018]
- HeapCheck: Lowcost hardware support for memory safety.[2022]
- Pacmem: Enforcing spatial and temporal memory safety via arm pointer authentication.[2022]
- No-fat: Architectural support for low overhead memory safety checks.[2021]
Use-After-Free detection
- Cets: Compiler enforced temporal safety for c.[2010]
- Vik: Practical mitigation of temporal memory safety violations through object id inspection.[2022]
- xtag: Mitigating use-after-free vulnerabilities via software-based pointer tagging on intel x86-64.[2022]
- MTE
- SSM(Silicon Secured Memory)
- Memory tagging and how it improves c/c++ memory safety.[2018]
- Undangle: Early detection of dangling pointers in use-after-free and double-free vulnerabilities.[2012]
- Freesentry: protecting against use-afterfree vulnerabilities due to dangling pointers.[2015]
- Preventing use-after-free with dangling pointers nullification.[2015]
- Dangsan: Scalable use-after-free detection.[2017]
- Bogo: Buy spatial memory safety, get temporal memory safety (almost) free.[2019]
- Efficiently detecting all dangling pointer uses in production servers.[2006]
- Oscar: A practical page-permissions-based scheme for thwarting dangling pointers.[2017]
- Dangzero: Efficient use-after-free detection via direct page table access.[2022]
Unintialized memory read
- Purify
- Valgrind
- Unisan: Proactive kernel memory initialization to eliminate data leakages.[2016]
- Safelnit: Comprehensive and practical mitigation of uninitialized read vulnerabilities.[2017]