コンピュータセキュリティ技術において、サンドボックス()は、外部から受け取ったプログラムを保護された領域で動作させることによって、システムが不正に操作されるのを防ぐセキュリティ機構のことをいう。

実行されるプログラムは保護された領域に入り、ほかのプログラムやデータなどを操作できない状態にされて動作するため、プログラムが暴走したりウイルスを動作させようとしてもシステムに影響が及ばないようになっている。

Webにおけるサンドボックス ウェブページに配置されたJavaScriptやWebAssemblyなどのプログラムは自動的に実行される。そのため、無制限では気づかないうちにコンピュータ上にあるファイルを盗み見られたり書き換えられたり、あるいはコンピュータウイルスに感染させられたりするおそれがある。そこで安心してネットサーフィンを楽しめるように提供されたのが、そういった攻撃のできない安全な「砂場」(サンドボックス)である。

わかりやすいところでは、ファイルの読み書きをできなくしたり、許可なくマイクロフォンから録音できなくしたりすることで保護を実現する。またクロスサイトスクリプティング攻撃からの保護のために、他の(攻撃者のものかもしれない)サイトへの送信が禁止されたり他のサイトの情報を読み込むことが禁止されたりする。

このほかにも、プライバシーやオペレーティングシステムの安全を脅かすことが可能になる、さまざまなことが禁止されている。

ゲームにおけるサンドボックス ゲームにおけるサンドボックスではユーザー生成コンテンツの一部として誰かの作ったプログラムコードを安全に動かすということが可能となる。

これには例えば Roblox のサンドボックス化されたインスタンスが存在するサードパーティ資産からの脆弱性 Roblox CorporationScript capabilities Roblox Corporation。

ローカルにおけるサンドボックス

サンドボックスは Flatpak や Snap などの Linux 向けパッケージ管理システムでも使われているが、Flatpak で提供される多くのアプリケーションは広い権限を持っており、そのサンドボックスを活かしていないとされるWhen Flatpak’s Sandbox Cracks: Real‑Life Security Issues Beyond the Ideal Linux Journal 2025年7月31日。

サンドボックスへの不満 サンドボックスによる保護は利便性を損ねるものであり、事態を正確に認識できていない者からは不満の声もある。しかしながら、それを許すことはすなわち攻撃者にも利便性を与えることに留意しなければならない。

例えば、もしも「JavaScriptを利用するとメールアドレスを盗まれたりウイルスに感染させられたりする」ということがわかれば、ユーザーは警戒してJavaScriptを使っているウェブページを見なくなってしまう。JavaScriptを使っていると誰も見てくれなくなるので、作る側も誰もJavaScriptを使わなくなってしまう。それはJavaScriptを提供する側の望むところではない。このため、サンドボックスによる保護は強化される一方である。

こういった保護に不満がある場合、それを解除する方法が提供されている場合がある。例えばJavaアプレットに使われているJavaのサンドボックスモデルでは、Javaアプレットに電子署名による署名をおこなうことができる。もしもユーザーがその電子署名を信頼し許可したならば、電子署名を施されたプログラムに限っては保護された領域外にアクセスすることができるようになる。

サンドボックスの例 サンドボックスの例として、次のようなものが挙げられる。

プロセス内サンドボックスの例 プロセス内サンドボックス (In-Process Sandboxing) の例には以下が存在する: WebAssembly(Webブラウザ) V8 Sandbox - Google Chrome などに使われる V8 エンジンのプロセス内サンドボックスThe V8 Sandbox Google 2024年4月4日。 RLBox - WebAssemblyへとコンパイルしたのちC言語へと再変換する。Mozilla Firefox の一部ライブラリに使用されているRLBox sandboxing — Firefox Source Docs documentation Mozilla。 LLVM LFI (Lightweight Fault Isolation)LLVM Merges x86 LFI "Lightweight Fault Isolation" Target For In-Process Sandboxing Phoronix 2026年7月11日

プロセスのサンドボックス化の例 プロセスのサンドボックス化の例には以下が存在する:

既存コード向け AppContainer (Windows向け)AppContainer for legacy apps Microsoft - より権限の少ない Less Privileged AppContainer (LPAC) もあるAppContainer を起動する - Win32 apps - Microsoft Learn Microsoft。 Win32 app isolation(Windows向け) - AppContainerベースMicrosoft、新しいOSセキュリティ技術「Win32 app isolation」を発表 Impress 2023年6月16日。 Sandboxie(Windows向け) Bubblewrap(bwrap; Linux向け) - Flatpak のために作られた第686回 Bubblewrap/bwrapを使って管理者権限なしで非特権コンテナーを作る - gihyo.jp 技術評論社 2021年10月6日が、Linux版 Steam でも採用されているContainers and Steam pp.9-10 Collabora 2020年。またデスクトップ環境の一つ GNOME の画像読み込みライブラリ (Glycin) にも使用されているGlycin GNOME Project。 seccomp(Linux向け) - Linux 上の Google Chrome のレンダラープロセスなどに使用されているGoogle's Chromium sandbox LWN 2009年8月19日。 SELinux Sandbox(RedHatなどの SELinux 採用ディストリビューション向け)第7章 Sandbox を使用したプログラムの保護 - SELinux ユーザーおよび管理者のガイド - Red Hat Enterprise Linux - 7 - Red Hat Documentation Red Hat Snapの独自サンドボックス (Ubuntuなどの AppArmor 採用ディストリビューション向け) Security policies - Snap documentation Canonical

Web向け 各種ブラウザのSandbox(Google Chrome、Mozilla Firefoxなど) - ブラウザではサイト毎に別プロセスを立ち上げる「サイト分離」も行われている(Google Chromeサイト分離を使用してデータを保護する Google、Mozilla FirefoxのFission「Firefox」にも新しいサイト分離アーキテクチャー「Fission」が導入へ 窓の杜 2021年5月20日など)。

Webブラウザ向けプラグイン(過去) Webブラウザ向けプラグインはホスト環境へ悪影響を与えないためにサンドボックスとして動作していた。しかしながらその実装に使われるActiveXやは廃止され、ブラウザ側のサンドボックスを用いるWebAssemblyへとコンパイルするのが一般的となっていった。

Webブラウザ向けプラグインには XAML ブラウザアプリケーション (XBAP)、Silverlight、JavaアプレットJava セキュリティアーキテクチャ Sun Microsystems、Java Web Start、Adobe Flash、Unity Web Player などが存在した。

ユーザー分離ベースのサンドボックス ユーザー識別子 (UID) 分離によるサンドボックス - Androidに使用されているアプリ サンドボックス Google。

仮想化ベースのサンドボックス VMware や Microsoft Virtual PC などの仮想マシン Windows Sandbox (WSB) - Hyper-VベースWindows サンドボックス Microsoft

その他 - .NET Framework に搭載されていて廃止になったサンドボックス機能特集:.NET 4の新セキュリティ・モデル解説 CASが廃止。.NET 4のセキュリティはどうなるのか? ITmedia 2010年1月26日。ゲームでは Microsoft のプログラム対戦ゲーム『Terrarium』に使われていたPaul Kimmel 『Advanced C# Programming』 p.129 McGraw-Hill Osborne Media 2002年 ISBN 978-0072224177。 Google Native Client (NaCl)→Dæmon Saigo Native Client - Google ChromeのPepper APIのために登場し、ChromeOSでは2025年まで対応していたChromeOS 131 Enterprise and Education release notes Google 2024年11月26日。Native Client 実行可能ファイル (nexe) はローダープロセス (sel_ldr) 内で動作し、ローダープロセスでは信頼できないコードから信頼できるコードを同一プロセスで呼び出してシステムコールを発行していたGetting Started: Background and Basics(2025年5月時点のキャッシュ) Google。PCゲームではその後も「」の Dæmon エンジンに使われ続けている。 - カーネル内の特権コード向けサンドボックスであり、システムのクラッシュを防ぐ目的で使われているWhat is eBPF? An Introduction and Deep Dive into the eBPF Technology eBPF community。

その他のサンドボックス ソフトウェア開発において、バージョン管理システムを利用して構築される特定のバージョンのソフトウェアテスト環境。プレイグラウンドとも呼ばれる。 Wikipediaで編集のテストを行うページ。Wikipedia:サンドボックス

脚注

出典