SNIP: Speculative Execution and Non-Interference Preservation for Compiler Transformations
S\"oren van der Wall, Roland Meyer

TL;DR
This paper introduces a proof method ensuring non-interference preservation during compiler transformations under speculative execution, identifies a security weakness in register allocation, and proposes a static analysis fix.
Contribution
It develops a new proof technique for non-interference preservation, uncovers a register allocation vulnerability, and provides an automated static analysis-based fix.
Findings
Proof method guarantees non-interference across transformations.
Discovered a register allocation weakness violating security.
Validated fixes on cryptographic library code.
Abstract
We address the problem of preserving non-interference across compiler transformations under speculative semantics. We develop a proof method that ensures the preservation uniformly across all source programs. The basis of our proof method is a new form of simulation relation. It operates over directives that model the attacker's control over the micro-architectural state, and it accounts for the fact that the compiler transformation may change the influence of the micro-architectural state on the execution (and hence the directives). Using our proof method, we show the correctness of dead code elimination. When we tried to prove register allocation correct, we identified a previously unknown weakness that introduces violations to non-interference. We have confirmed the weakness for a mainstream compiler on code from the libsodium cryptographic library. To reclaim security once more, we…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Embedded Systems Design Techniques · Security and Verification in Computing
