Research

Paper

TESTING March 19, 2026

Weaver: Fuzzing JavaScript Engines at the JavaScript-WebAssembly Boundary

Authors

Lingming Zhang, Binbin Zhao, Puzhuo Liu, Qinge Xie, Peng Di, Jianhai Chen, Shouling Ji

Abstract

The security of modern JavaScript (JS) engines is critical since they provide the primary defense mechanism for executing untrusted code on the web. The recent integration of WebAssembly (Wasm) has transformed these engines into complex polyglot environments, creating a novel attack surface at the JS-Wasm interaction boundary due to the distinct type systems and memory models of two languages. This boundary remains largely underexplored, as previous works mainly focus on testing JS and Wasm as two isolated entities rather than investigating the security implications of their cross-language interactions. This paper proposes Weaver, an effective greybox fuzzing framework specifically tailored to uncover vulnerabilities at the JS-Wasm boundary. To comply with the language constraints, Weaver uses a type-aware generation strategy, meticulously maintaining the dual-type representation for every generated variables. This allows fuzzer to validly utilize variables across the language boundary. Besides, Weaver leverages the UCB-1 algorithm to intelligently schedule mutators and generators to maximize the discovery of new code paths. We have implemented and evaluated Weaver on three JS engines. The results indicate that Weaver achieves superior code coverage compared to state-of-the-art fuzzers. Moreover, Weaver has uncovered two new bugs in the latest versions of these engines, one of which is considered high severity and set to highest priority, demonstrating the practicality of Weaver.

Metadata

arXiv ID: 2603.18789
Provider: ARXIV
Primary Category: cs.CR
Published: 2026-03-19
Fetched: 2026-03-20 06:02

Related papers

Raw Data (Debug)
{
  "raw_xml": "<entry>\n    <id>http://arxiv.org/abs/2603.18789v1</id>\n    <title>Weaver: Fuzzing JavaScript Engines at the JavaScript-WebAssembly Boundary</title>\n    <updated>2026-03-19T11:40:09Z</updated>\n    <link href='https://arxiv.org/abs/2603.18789v1' rel='alternate' type='text/html'/>\n    <link href='https://arxiv.org/pdf/2603.18789v1' rel='related' title='pdf' type='application/pdf'/>\n    <summary>The security of modern JavaScript (JS) engines is critical since they provide the primary defense mechanism for executing untrusted code on the web. The recent integration of WebAssembly (Wasm) has transformed these engines into complex polyglot environments, creating a novel attack surface at the JS-Wasm interaction boundary due to the distinct type systems and memory models of two languages. This boundary remains largely underexplored, as previous works mainly focus on testing JS and Wasm as two isolated entities rather than investigating the security implications of their cross-language interactions.\n  This paper proposes Weaver, an effective greybox fuzzing framework specifically tailored to uncover vulnerabilities at the JS-Wasm boundary. To comply with the language constraints, Weaver uses a type-aware generation strategy, meticulously maintaining the dual-type representation for every generated variables. This allows fuzzer to validly utilize variables across the language boundary. Besides, Weaver leverages the UCB-1 algorithm to intelligently schedule mutators and generators to maximize the discovery of new code paths.\n  We have implemented and evaluated Weaver on three JS engines. The results indicate that Weaver achieves superior code coverage compared to state-of-the-art fuzzers. Moreover, Weaver has uncovered two new bugs in the latest versions of these engines, one of which is considered high severity and set to highest priority, demonstrating the practicality of Weaver.</summary>\n    <category scheme='http://arxiv.org/schemas/atom' term='cs.CR'/>\n    <published>2026-03-19T11:40:09Z</published>\n    <arxiv:primary_category term='cs.CR'/>\n    <author>\n      <name>Lingming Zhang</name>\n    </author>\n    <author>\n      <name>Binbin Zhao</name>\n    </author>\n    <author>\n      <name>Puzhuo Liu</name>\n    </author>\n    <author>\n      <name>Qinge Xie</name>\n    </author>\n    <author>\n      <name>Peng Di</name>\n    </author>\n    <author>\n      <name>Jianhai Chen</name>\n    </author>\n    <author>\n      <name>Shouling Ji</name>\n    </author>\n  </entry>"
}