Mozillaは12月6日、公式ブログの記事「WebAssembly and Back Again: Fine-Grained Sandboxing in Firefox 95 - Mozilla Hacks - the Web developer blog」において、Firefox 95に導入される新しいサンドボックス技術「RLBox」について解説した。

PLBoxはWebAssemblyを利用して問題のありそうなコードを分離することによってブラウザの安全性を保つ技術で、カリフォルニア大学サンディエゴ校およびテキサス大学と共同で開発された。

現在主要なブラウザで採用されているサンドボックス技術は、OS本体から隔離された独自のプロセスでWebコンテンツを実行することによって、プラットフォームの安全性を保つ仕組みになっている。デスクトップの場合、さらにサイトごとにプロセスを分離する。しかし現実には、高度なサイバー攻撃では複数の脆弱性を組み合わせることによって、サンドボックスを回避しつつ、それぞれのプロセスを危険にさらすというアプローチが取られている。したがって、従来のプロセスサンドボックスの仕組みだけでは安全性を確保することが難しくなっている。

そこで、次のアプローチとして開発されたのがRLBoxだという。RLBoxでは、コードを一度WebAssemblyにコンパイルしてから、そのWebAssemblyをネイティブコードにコンパイルするという仕組みになっている。変換されたターゲットコードには、プログラムの予期しない部分にジャンプできないことと、指定した領域外のメモリにアクセスできないことという2つの制限がある。この制限によって、信頼できるレイヤーと信頼できないレイヤーの間でメモリのアドレス空間を安全に共有することが可能になるという。

RLBoxサンドボックスアーキテクチャの概要(出典:https://plsyssec.github.io/rlbox_sandboxing_api/sphinx/)


WebAssemblyを使用したこの手法は、Firefox 74とFirefox 75でMacおよびLinux向けに追加されたサンドボックス技術のプロトタイプをベースに構築されている。RLBoxは、デスクトップおよびモバイルを含むサポートされているすべてのプラットフォーム向けに展開される予定で、Graphite、Hunspell、Ogg、Expat、そしてWoff2の5つのモジュールがRLBoxサンドボックスによって分離されることになる。Firefox 95ではまずGraphite、Hunspell、Oggの3つのモジュールが分離され、続くFirefox 96でExpatとWoff2が分離される計画とのことだ。