Mohabi: Disaggregating and Sandboxing the Firefox JavaScript Engine
Talkat 20th USENIX Symposium on Operating Systems Design and Implementation (OSDI '26) · 2026-07-13..07-15·
summary
Mohabi disaggregates SpiderMonkey from Firefox, adds wrapper types (e.g., split rooted wrapper, sandbox heap/stack/callbacks), and applies an external SFI rewriter plus a small validator (MHLFI) to confine engine code and JIT output to a 256GB sandbox region. The binding layer change fixes ~20,000 shared data structures and ~15,000 cross-boundary calls automatically. Result: full in‑process sandboxing with modest overhead — ~24.8% JetStream, 24.4% Speedometer — and 5.9–6.6% on SPEC2017.
AI-written summary · about
chapters (9)
- 0:00Mojave introduction and goals
- 2:46Existing JS engine limits
- 4:51Deny-by-default isolation
- 7:41Garbage collection with split allocations
- 9:52Browser binding for disaggregation
- 11:39MHLFI for sandboxing
- 13:46Sandboxing Firefox JS engine
- 15:33Mojave performance and security
- 17:01Summary
related talks
18mDemystifying JS Engines
30mDon't Get Owned by Dependencies: How Firefox Uses Wasm to Protect Itself from Exploitable Libraries
36mSelf-hosted JS
27mToward a language-neutral browser VM
17mDemystifying (JavaScript) engines
02mInterview with Yulia Startsev – JSNation 2022
27mRun your JS everywhere, with Jellyfish
29mEnter the Sandbox: JS on Wasm
