Killing Uninitialized Memory: Protecting the OS Without Destroying Performance
summary
A compiler-level mitigation named InitAll automatically zero-initializes POD structures on the stack across Windows and Hyper‑V, shipping to customers in May and protecting ~600M devices. Implementation uses front-end init insertion plus optimizations: redundant-store elimination, on‑demand escape analysis, scalar replacement of aggregates, and memsets unrolled/vectorized. Resulting regressions land under targets — <1% real-world regression and <2% synthetic, ~0.1% code‑size increase — and multiple reported uninitialized-memory CVEs are killed on updated builds.
AI-written summary · about
chapters (22)
- 0:00Introduction and team intro
- 1:14Security impact of uninitialized memory
- 7:32Prevalence and cost of uninitialized bugs
- 10:19Limitations of existing solutions
- 12:25Design criteria for Windows
- 13:07Introducing /itall and stack variables
- 15:57Prototype and compatibility testing
- 17:43Performance testing methodology
- 20:12Initial performance regressions
- 23:43Optimizing memset calls
- 27:35Redundant store elimination
- 34:15Partial memset and struct optimizations
- 37:29Stack frame and kernel optimizations
- 39:58Faster memset alternatives
- 41:21Final performance results
- 42:46Shipping /itall in Windows
- 44:31Developer experience and static analysis
- 46:17Compatibility challenges
- 48:01Industry adoption and future plans
- 49:46Heap and allocator improvements
- 50:50Call for C/C++ language changes
- 53:16Q&A and closing remarks
related talks
23mDealing with Uninitialized Memory in the Kernel
51mHey Man, Have You Forgotten To Intialize Your Memory?
34mGetting on the Same (Virtual Memory) Page: A Roundtable on Data-only Attack Mitigations
52mKernel Hardening: Ten Years Deep
01h 06mmemory-safe C++
34mMaking C Less Dangerous
01h 04mRemoving Needless Undefined Behavior for a Safer C++
50mSmashing the Stack: Let’s Make It Less Fun And Unprofitable!
