Dead Store Elimination (Still) Considered Harmful
summary
Paper surveys memory scrubbing techniques, evaluates them on GCC Clang and MSVC, and instruments Clang to detect dead store elimination. Authors examine 11 open source projects, classify techniques as effective / effective in practice / flawed, find four projects using flawed scrubbing and four more using scrubbing inconsistently. They implement an LLVM pass that preserves scrubbing stores and publish a best‑of‑breed secure_memzero library released to the public domain.
AI-written summary · about
chapters (17)
- 0:00Intro
- 0:19Motivation
- 3:05Existing Techniques. Platform-Supplied Functions
- 8:33Hiding Semantics: Separate Compilation
- 9:25Link-Time Optimization (LTO)
- 10:11Existing Techniques. Volatile Function Pointer
- 13:04Existing Techniques. Pointer To Volatile Char
- 14:33Existing Technique: Using memory barrier
- 15:02Forcing Memory Writes: Using memory barrier
- 15:38How difficult to create a reliable scrubbing function
- 17:44Case Studies. Methodology
- 18:22Case Studies Results
- 19:21invert_key from Libgcrypt
- 19:42Case Studies Discussion
- 20:23Our Solutions: Library-based solution
- 21:11Our Solutions: Compiler-based solution
- 22:22Conclusion
related talks
01h 03mPurging Undefined Behavior & Intel Assumptions in a Legacy C++ Codebase
44mDebugging memory corruptions in C++
01h 00mPurging undefined behavior and Intel assumptions in Legacy Codebases
01h 00mSanitize for your Sanity: Sanitizers tools for Modern C++
50mSmashing the Stack: Let’s Make It Less Fun And Unprofitable!
10mSafer Seccomp: Dead Syscalls Elimination
21mNot Quite Write: On the Effectiveness of Store-Only Bounds Checking
17mGnuZero: A Compiler-Based Zeroization Static Detection Tool for the Masses
