  Firefox and other major browsers rely on dozens of third-party libraries to
render audio, video, images, and other content. These libraries are a frequent
source of vulnerabilities. To mitigate this threat, we are migrating Firefox to
an architecture that isolates these libraries in lightweight sandboxes,
dramatically reducing the impact of a compromise.
  Retrofitting isolation can be labor-intensive, very prone to security bugs,
and requires critical attention to performance. To help, we developed RLBox, a
framework that minimizes the burden of converting Firefox to securely and
efficiently use untrusted code. To enable this, RLBox employs static
information flow enforcement, and lightweight dynamic checks, expressed
directly in the C++ type system.
  RLBox supports efficient sandboxing through either software-based-fault
isolation or multi-core process isolation. Performance overheads are modest and
transient, and have only minor impact on page latency. We demonstrate this by
sandboxing performance-sensitive image decoding libraries ( libjpeg and libpng
), video decoding libraries ( libtheora and libvpx ), the libvorbis audio
decoding library, and the zlib decompression library.
  RLBox, using a WebAssembly sandbox, has been integrated into production
Firefox to sandbox the libGraphite font shaping library.
