Icarus: Trustworthy Just-In-Time Compilers with Symbolic Meta-Execution
Just-in-time (JIT) compilers make JavaScript run efficiently by replacing slow JavaScript interpreter code with fast machine code. However, this efficiency comes at a cost: bugs in JIT compilers can completely subvert all language-based (memory) safety guarantees, and thereby introduce catastrophic exploitable vulnerabilities. We present Icarus: a new framework for implementing JIT compilers that are automatically, formally verified to be safe, and which can then be converted to C++ that can be linked into browser runtimes. Crucially, we show how to build a JIT with Icarus such that verifying the JIT implementation statically ensures the security of all possible programs that the JIT could ever generate at run-time, via a novel technique called symbolic meta-execution that encodes the behaviors of all possible JIT-generated programs as a single Boogie meta-program which can be efficiently verified by SMT solvers. We evaluate Icarus by using it to re-implement components of Firefox's JavaScript JIT. We show that Icarus can scale up to expressing complex JITs, quickly detects real-world JIT bugs and verifies fixed versions, and yields C++ code that is as fast as hand-written code.
Authors
- Ranjit Jhala (ORCID: https://orcid.org/0000-0002-1802-9421)
- Fraser Brown (ORCID: https://orcid.org/0009-0006-6601-7317)
- Hovav Shacham (ORCID: https://orcid.org/0009-0008-0225-8714)
- John W. Renner (ORCID: https://orcid.org/0000-0003-2297-6066)
- N. Ty Smith
- Deian Stefan (ORCID: https://orcid.org/0000-0002-7041-7464)
- David Thien
- A.K.Sharma Dr. A.K.Sharma
Institutions
- University of California San Diego (US)
- Carnegie Mellon University (US)
- The University of Texas at Austin (US)
Publication Details
- Published
- 2024-11-04
- DOI
- https://doi.org/10.1145/3694715.3695949
- Citations
- 15
- Primary Topic
- Security and Verification in Computing
- Type
- article
- Field-Weighted Citation Impact
- 5.21
Funders
- National Science Foundation