用語辞典・セキュリティ

サンドボックス

サンドボックスとは

サンドボックスは、プログラムを隔離した制限環境で動かし、他のデータやシステムへの影響を抑える仕組みです。英語ではsandbox(サンドボックス)と表します。

信頼できないコードへOS全体の権限を直接与えず、ファイル、ネットワーク、機器、メモリー、他処理などへのアクセスを境界と仲介役で制御します。

「中なら安全」ではなく、許可した能力だけで目的を達成させ、突破されても次の境界で止める防御 in深さの一層です。

信頼できないプログラムを作業区画へ閉じ込め、CPU・メモリー・ファイル・ネットワーク・センサー・表示を個別検査点で許可する明示した対応能力以外は境界で止める
悪意の可能性があるプログラムを平面の柵内へ隔離し、CPU、メモリー、ファイル、ネットワーク、カメラ・マイク、表示への個別検査点だけを許可し、下段でブラウザータブ隔離、分析観測、使い捨てリセット、エスケープの可能性を示すピクトグラム図解
図1許可検査点が広すぎればサンドボックス内から重要データへ届きます。境界の有無だけでなく、渡す対応能力を読みます。

制限するリソースを決める

Process他処理へ触れさせない

メモリー、デバッグ、信号、ハンドル、IPCを名前空間・方針で制限する。

Filesystem見えるファイルを絞る

読み取り専用領域、一時ディレクトリー、利用者が選んだファイルだけを仲介役経由で渡す。

Network接続先を限定する

ネットワーク禁止、プロキシ経由、許可ドメイン・ポートだけなど、目的に必要な通信へ絞る。

Deviceセンサーを許可制にする

カメラ、マイク、USB、GPU、位置へ個別権限と指示記号を持たせる。

Identity低い権限で動かす

専用利用者、トークン、対応能力、サービスアカウントへ分け、管理者権限を渡さない。

Lifetime状態を捨てる

終了時に一時ディスク・メモリーを破棄し、次回をクリーン画像から始める。

ブラウザーはサイト・タブ・処理を分離する

ブラウザーはレンダリングエンジンを低権限処理へ置き、ネットワーク、ファイル選択画面、カメラなどを仲介役処理経由にします。サイト分離で異なるサイトを別処理へ分ける実装もあります。

ブラウザーサンドボックスを突破してOS権限へ出るサンドボックスエスケープがあるため、ブラウザーとOSを更新し、一般利用者で動かします。

モバイルアプリの権限もサンドボックスの一部

アプリごとに利用者IDと保存領域を分け、他アプリのデータへ直接アクセスさせません。写真選択画面や共有画面で利用者が選んだデータだけを渡せます。

アクセシビリティ、機器管理、ルート・制限解除など強い権限は境界を広げます。権限名だけでなく可能になる操作を確認します。

マルウェア分析では使い捨て環境にする

疑わしいファイルを隔離VM・エミュレーターで実行し、処理、ファイル変更、ネットワーク、レジストリ、メモリーを観察します。インターネットの代替サービスを用意し、第三者へ攻撃トラフィックを出さないようにします。

サンプルがVMや分析ツールを検知して挙動を隠す場合があります。動的分析だけで安全を断定しません。

VM・コンテナーと同義ではない

仮想システムは仮想ハードウェアとゲストOS、コンテナーはホストカーネルを共有する処理隔離です。どちらもサンドボックスとして使えますが、単にVM・コンテナーで動かすだけで安全な方針になるとは限りません。

ホストマウント、特権付きモード、機器直接受け渡し、管理ソケットを渡すと境界が大きく弱まります。

エスケープを前提に次の境界を置く

サンドボックス実装自体の脆弱性、カーネル、ドライバー、CPU、仲介役の認可不備から外へ出る可能性があります。ホストをパッチし、機密性の高いネットワークから分離し、重要認証情報を置きません。

分析サンドボックスは使い捨てにし、スナップショット切り戻しだけでなくゴールデンイメージから定期再作成します。

ファイルを外へ取り出す瞬間を検査する

サンドボックス内で生成・ダウンロードしたファイルをホストへ書き出しすれば、境界外で実行されます。コンテンツタイプ、署名、スキャン、手動レビューを行い、実行権限を自動で付けません。

サンドボックスの安全性は囲いの名前ではなく、何を内側へ入れ、どのリソースをどの検査点で渡し、終了後に何を外へ残すかで決まります。

sandboxとapplication isolationの確認資料:NIST CSRC Glossary「Sandbox」Chromium「Sandbox」design document

関連用語