JIT-Ppcking: differential fuzzing of JavaScript engines

  • Modern JavaScript engines that power websites and even full applications on the Web are driven by the need for an increasingly fast and snappy user experience. These engines use several complex and potentially error-prone mechanisms to optimize their performance. Unsurprisingly, the inevitable complexity results in a huge attack surface and varioustypes of software vulnerabilities. On the defender's side, fuzz testing has proven to be an invaluable tool for uncovering different kinds of memory safety violations. Although it is difficult to test interpreters and JIT compilers in an automated way, recent proposals for input generation based on grammars or target-specific intermediate representations helped uncovering many software faults. However, subtle logic bugs and miscomputations that arise from optimization passes in JIT engines continue to elude state-of-the-art testing methods. While such flaws might seem unremarkable at first glance, they are often still exploitable in practice. In this paper, we propose a novel technique for effectively uncovering this class of subtle bugs during fuzzing. The key idea is to take advantage of the tight coupling between a JavaScript engine's interpreter and its corresponding JIT compiler as a domain-specific and generic bug oracle, which in turn yields a highly sensitive fault detection mechanism. We have designed and implemented a prototype of the proposed approach in a tool called JIT-Picker. In an empirical evaluation, we show that our method enables us to detect subtle software faults that prior work missed. In total, we uncovered 32 bugs that were not publicly known and received a $10.000 bug bounty from Mozilla as a reward for our contributions to JIT engine security.

Download full text files

Export metadata

Additional Services

Share in Twitter Search Google Scholar
Metadaten
Author:Lukas BernhardGND, Tobias ScharnowskiGND, Moritz SchlögelORCiDGND, Tim BlazytkoGND, Thorsten HolzORCiDGND
URN:urn:nbn:de:hbz:294-109929
DOI:https://doi.org/10.1145/3548606.3560624
Parent Title (English):CCS '22: Proceedings of the 2022 ACM SIGSAC Conference on Computer and Communications Security
Publisher:Association for Computing Machinery
Place of publication:New York City, New York
Document Type:Article
Language:English
Date of Publication (online):2024/03/01
Date of first Publication:2022/11/07
Publishing Institution:Ruhr-Universität Bochum, Universitätsbibliothek
Tag:Differential Testing; Fuzzing; JIT Engine; Software Security
GND-Keyword:Browser
Volume:2022
First Page:351
Last Page:364
Institutes/Facilities:Lehrstuhl für Systemsicherheit
Dewey Decimal Classification:Allgemeines, Informatik, Informationswissenschaft / Informatik
open_access (DINI-Set):open_access
faculties:Fakultät für Informatik
Licence (English):License LogoCreative Commons - CC BY 4.0 - Attribution 4.0 International