ブラウザサンドボックス
ブラウザサンドボックス とは何ですか?
ブラウザサンドボックスOS レベルの分離層で、ブラウザのレンダラーやヘルパープロセスを閉じ込め、侵害された Web コードがファイルシステムや他アプリへアクセスできないようにする。
ブラウザサンドボックスは、ブラウザが信頼度の低い子プロセス(レンダラー、GPU プロセス、ネットワークサービス)を最小限のケイパビリティに制限するために使う OS メカニズムの集合です。Chromium は Windows のジョブオブジェクトと整合性レベル、macOS の Seatbelt、Linux の seccomp-bpf とユーザー名前空間を利用し、Firefox も同等のプリミティブを使います。攻撃者の JavaScript がレンダラー内でメモリ破壊を引き起こしたとしても、サンドボックスは任意のファイルアクセス、プロセス生成、システムコールを 2 つ目の バグ、すなわちサンドボックス脱出なしには阻止します。
この「2 つのバグが必要」という要件は Pwn2Own で顕著に見られます。2024 年 3 月の大会では、Manfred Paul が優勝した Chrome エントリーで、V8 の WebAssembly エンジンにおける型混同の欠陥 CVE-2024-2887 を使ってレンダラー内での読み書きを獲得しましたが、それだけではプロセス内に閉じ込められたままでした。同じ大会では CVE-2024-2886(WebCodecs の use-after-free)や CVE-2024-3159(V8 の境界外読み取り)も浮上しました。Chrome はさらに サイト分離 で防御を重ね、各サイトを専用のレンダラーに配置して Spectre 系の投機的実行によるリークを鈍らせるほか、OS サンドボックスが適用される前にすら破壊を封じ込める V8 ヒープサンドボックス(「Ubercage」)も備えます。
このモデルを強化する防御策としては、ブラウザを自動更新に保つこと、サイト分離と強化されたサンドボックスフラグを有効化すること、不要なプラグインを無効化すること、そしてサイトごとのプロセス制限を用いて単一のレンダラー侵害が複数のオリジンに及ばないようにすることが挙げられます。
flowchart TD
A[悪意のある Web ページ] --> B[レンダラープロセス<br/>非信頼・低権限]
B --> C{メモリ破壊バグ?<br/>例: CVE-2024-2887}
C -->|なし| D[攻撃を封じ込め]
C -->|あり| E[レンダラー内で任意の読み書き]
E --> F{V8 ヒープサンドボックス<br/>+ OS サンドボックス}
F -->|脱出バグなし| G[依然として封じ込め:<br/>ファイルなし、システムコールなし]
F -->|サンドボックス脱出バグ| H[ブローカー / カーネルに到達]
H --> I[ホスト上での完全なコード実行]● 例
- 01
Windows 上で Chrome レンダラーが低整合性のジョブオブジェクト・制限トークンで動作する。
- 02
Pwn2Own 参加者がレンダラー RCE とサンドボックス脱出を連鎖させて完全なコード実行を達成する。
● よくある質問
ブラウザサンドボックス とは何ですか?
OS レベルの分離層で、ブラウザのレンダラーやヘルパープロセスを閉じ込め、侵害された Web コードがファイルシステムや他アプリへアクセスできないようにする。 サイバーセキュリティの アプリケーションセキュリティ カテゴリに属します。
ブラウザサンドボックス とはどういう意味ですか?
OS レベルの分離層で、ブラウザのレンダラーやヘルパープロセスを閉じ込め、侵害された Web コードがファイルシステムや他アプリへアクセスできないようにする。
ブラウザサンドボックス からどのように防御しますか?
ブラウザサンドボックス に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
ブラウザサンドボックス の別名は何ですか?
一般的な別名: レンダラーサンドボックス。