TL;DR
This paper investigates how compiler optimizations unexpectedly increase the availability of malicious code reuse gadgets, and proposes mitigation strategies like binary recompilation to reduce these security risks.
Contribution
It provides a comprehensive analysis of how compiler optimizations affect gadget sets and introduces mitigation techniques to minimize security vulnerabilities.
Findings
Compiler optimizations often increase gadget set size and usefulness.
Post-production binary recompilation reduces gadget set size effectively.
Optimizations can unintentionally introduce security vulnerabilities.
Abstract
Despite extensive testing and correctness certification of their functional semantics, a number of compiler optimizations have been shown to violate security guarantees implemented in source code. While prior work has shed light on how such optimizations may introduce semantic security weaknesses into programs, there remains a significant knowledge gap concerning the impacts of compiler optimizations on non-semantic properties with security implications. In particular, little is currently known about how code generation and optimization decisions made by the compiler affect the availability and utility of reusable code segments called gadgets required for implementing code reuse attack methods such as return-oriented programming. In this paper, we bridge this gap through a study of the impacts of compiler optimization on code reuse gadget sets. We analyze and compare 1,187 variants of…
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.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
