Abstract

Web browsers are ubiquitous and execute untrusted JavaScript (JS) code. JS engines optimize frequently executed code through just-in-time (JIT) compilation. Subtly conflicting assumptions between optimizations frequently result in JS engine vulnerabilities. Attackers can take advantage of such diverging assumptions and use the flexibility of JS to craft exploits that produce a miscalculation, remove bounds checks in JIT compiled code, and ultimately gain arbitrary code execution. Classical fuzzing approaches for JS engines only detect bugs if the engine crashes or a runtime assertion fails. Differential fuzzing can compare interpreted code against optimized JIT compiled code to detect differences in execution. Recent approaches probe the execution states of JS programs through ad-hoc JS functions that read the value of variables at runtime. However, these approaches have limited capabilities to detect diverging executions and inhibit optimizations during JIT compilation, thus leaving JS engines under-tested. We propose DUMPLING, a differential fuzzer that compares the full state of optimized and unoptimized execution for arbitrary JS programs. Instead of instrumenting the JS input, DUMPLING instruments the JS engine itself, enabling deep and precise introspection. These extracted fine-grained execution states, coined as (frame) dumps, are extracted at a high frequency even in the middle of JIT compiled functions. DUMPLING finds eight new bugs in the thoroughly tested V8 engine, where previous differential fuzzing approaches struggled to discover new bugs. We receive $11,000 from Google’s Vulnerability Rewards Program for reporting the vulnerabilities found by DUMPLING.

Keywords:
Fuzz testing JavaScript Computer science Differential (mechanical device) Programming language Software Engineering Aerospace engineering

Metrics

1
Cited By
8.25
FWCI (Field Weighted Citation Impact)
0
Refs
0.87
Citation Normalized Percentile
Is in top 1%
Is in top 10%

Citation History

Topics

Software Testing and Debugging Techniques
Physical Sciences →  Computer Science →  Software
Teaching and Learning Programming
Physical Sciences →  Computer Science →  Computer Science Applications
Advanced Malware Detection Techniques
Physical Sciences →  Computer Science →  Signal Processing

Related Documents

BOOK-CHAPTER

Fuzzing JavaScript Engine APIs

Renáta HodovánÁkos Kiss

Lecture notes in computer science Year: 2016 Pages: 425-438
JOURNAL ARTICLE

Fine-grained Coverage-based Fuzzing

Wei‐Cheng WuBernard NongpohMarwan NourMichaël MarcozziSébastien BardinChristophe Hauser

Journal:   ACM Transactions on Software Engineering and Methodology Year: 2023 Vol: 33 (5)Pages: 1-41
JOURNAL ARTICLE

Fine-Grained Coverage-Based Fuzzing

Bernard NongpohMarwan NourMichaël MarcozziSébastien Bardin

Journal:   Zenodo (CERN European Organization for Nuclear Research) Year: 2022
© 2026 ScienceGate Book Chapters — All rights reserved.