Mozillaはこのところ、Firefoxのセキュリティ機能とトラッキング防止技術の開発に熱心に取り組んでいる。その取り組みのひとつが「Site Isolation Security Architecture(サイト・アイソレーション・セキュリティ・アーキテクチャ)」だ。これはセキュリティ機能を強化するための抜本的なブラウザアーキテクチャの変更に相当するもので、すでにリリース版のFirefoxにもこの機能が搭載されている。デフォルトでは無効化されているが、設定を変更すれば有効化することができる。
この新しいアーキテクチャの概要は、Mozillaが5月18日(米国時間)に公開した記事「Introducing Firefox's new Site Isolation Security Architecture - Mozilla Hacks - the Web developer blog」の説明がわかりやすい。従来のFirefoxのアーキテクチャと、この新しいセキュリティアーキテクチャにどのような違いがあるかがわかりやすくまとめられている。
「サイトアイソレーションセキュリティアーキテクチャ」は、簡単に言うと「Webサイトごとにプロセスを分離する」ものだ。これはFirefoxの現在のアーキテクチャとは異なる動作だ。
現在のFirefoxはマルチプロセスアーキテクチャと呼ばれるアーキテクチャを採用しており、すでに複数のプロセスが連動して動作する仕組みになっている。大まかに分けて、次のプロセスが動作している(2021年4月時点)。
- 特権プロセス(親プロセス) - Firefox起動時に生成されるプロセス。ほかのプロセスを生成するとともに、エンドユーザが実行できるあらゆるアクションを実行できるプロセス。
- Webコンテンツプロセス - 8個生成されるプロセス。特権プロセスから生成される。
- Webコンテンツプロセス(半特権) - 最大2個生成されるプロセス。特権プロセスから生成される。
- ユーティリティプロセス - 4個生成されるプロセス。拡張機能、GPU操作、ネットワーキング、メディアデコーディングに使用。特権プロセスから生成される。
Webコンテンツプロセスは数が固定されており、1つのプロセスで2つの異なるWebサイトが扱われるという状況も生まれることになる。これがセキュリティ上、問題というのがMozillaの主張だ。
Firefoxの従来のマルチプロセスアーキテクチャも十分にセキュリティは強固だが、この仕組ではSpectreのような脆弱性には対処できないことが指摘されている。Spectreのような攻撃に対抗するにはサイトごとにプロセスを分離する必要があると考えられており、それを実現するのがこの新しい「サイトアイソレーションセキュリティアーキテクチャ」だ。
サイトアイソレーションセキュリティアーキテクチャには、セキュリティ以外にも次のメリットがあると考えられている。
- より多くのページを別々のプロセスに担当させることで、あるページで重い計算やガベージコレクションが行われても、ほかのプロセスのページの応答性が低下しないようになる。
- Webサイトを複数のプロセスで処理することで、処理をより多くのCPUコアへ分散させ、基盤となるハードウェアをより効率的に使用できる。
- サイトをより細かくプロセスに分離するため、サブフレームやタブがクラッシュしても、別のプロセスで読み込まれたWebサイトには影響を与えない。
サイトアイソレーションセキュリティアーキテクチャを有効化する方法は次のとおり。
- Firefox Nightly - about:preferences#experimentalで「Fission (Site Isolation)」にチェックを入れてからFirefoxを再起動
- Firefox Beta - about:configで「fission.autostart」をtrueに変更してからFirefoxを再起動
- Firefox Release - about:configで「fission.autostart」をtrueに変更してからFirefoxを再起動
今後販売が予定されているPCやMacはコアの数がさらに増えることが予想されており、サイトアイソレーションセキュリティアーキテクチャが効果的に利用できる状況になっていくものとみられる。