ComputingComputer EngineeringComputer ScienceCompilersComputer SecurityProgramming LanguagesControl-flow AnalysisData-flow AnalysisJust-in-time CompilationSecurity HardeningSoftware Security EngineeringCode InjectionCode Injection VulnerabilitiesControl Flow GraphsControl-flow IntegrityJavascriptJavascript SecurityJit SecurityPerformance Overhead
Managed languages such as JavaScript are popular. For performance, modern implementations of managed languages adopt Just-In-Time (JIT) compilation. The danger to a JIT compiler is that an attacker can often control the input program and use it to trigger a vulnerability in the JIT compiler to launch code injection or JIT spraying attacks. In this paper, we propose a general approach called RockJIT to securing JIT compilers through Control-Flow Integrity (CFI). RockJIT builds a fine-grained control-flow graph from the source code of the JIT compiler and dynamically updates the control-flow policy when new code is generated on the fly. Through evaluation on Google's V8 JavaScript engine, we demonstrate that RockJIT can enforce strong security on a JIT compiler, while incurring only modest performance overhead (14.6% on V8) and requiring a small amount of changes to V8's code. Key contributions of RockJIT are a general architecture for securing JIT compilers and a method for generating fine-grained control-flow graphs from C++ code.
30
Efficient software-based fault isolation
Robert Wahbe, Steven Lucco, Thomas E. Anderson et al. · 1993 · 1.2K citations · Full text
The 26th USENIX Security Symposium 2017
Aggelos Kiayias, Thomas Zacharias, Riivo Talviste · USENIX Security Symposium · 2017 · 1.2K citations
Edward Fredkin · Communications of the ACM · 1960 · 1.1K citations · Full text
Martı́n Abadi, Mihai Budiu, Úlfar Erlingsson et al. · 2005 · 1K citations
Efficient implementation of the smalltalk-80 system
L. Peter Deutsch, Allan M. Schiffman · 1984 · 589 citations