コンピュータ・セキュリティにおけるサンドボックスとは、実行中のプログラムを分離するためのセキュリティ・メカニズム。
通常システム障害やソフトウェアの脆弱性の拡大を防ぐために使用される。
サンドボックスは、大きく2つの用途があり
- ウイルスやその他の悪意のあるコードが含まれている可能性のある未検証のプログラムをホストデバイスに害を及ぼすことなくテスト・検査する環境=セキュリティサンドボックス
- 信頼されていない第三者のプログラムコードを実行する際にホストデバイスに影響がないように実行する仮想環境=スマホのアプリなど
サンドボックスはソフトウェアを制限されたOS環境で実行することにより、プロセスが使用できるリソース(ファイル、メモリ、ファイルシステム空間など)を制御することができる。
実装例
サンドボックスの実装例としては、以下のようなものがある。
Linuxアプリケーションのサンドボックス:Seccomp、cgroups、Linux namespacesをベースに構築されている。特に、Systemd、Google Chrome、Firefox、Firejailで採用されている。
Android:各アプリケーションに独自のLinuxユーザーIDを割り当てることで構築された、完全なアプリケーションのサンドボックス化を実装した最初の主流OS
Apple App Sandbox:AppleのMac App StoreおよびiOS/iPadOS App Storeで配布されるアプリに必須であり、その他の署名済みアプリには推奨されている
jail:ジェイルとは、ネットワークアクセスの制限や、ファイルシステムの名前空間の制限などのこと。ジェイルは仮想ホストで最も一般的に使用される
仮想マシン:完全なホストコンピューターをエミュレートし、その上で従来のOSを実際のハードウェアのように起動・実行することができる。ゲストOSは、エミュレータを通してのみホストのリソースにアクセスできるという意味で、サンドボックス化されて実行される。
ネイティブホストでのサンドボックス化:セキュリティ研究者は、マルウェアの挙動を分析するためにサンドボックス技術を多用している。研究者は、標的となるデスクトップを模倣または再現する環境を構築することで、マルウェアが標的ホストにどのように感染し、侵害するかを評価する。サンドボックス技術を利用したマルウェア解析サービスは数多く存在する。
Google Native Client:コンパイルされたCやC++のコードを,ユーザのOSに依存せず,ブラウザ上で効率的かつ安全に実行するためのサンドボックスである
Secure Computing Mode (seccomp) :Linux カーネルに組み込まれたサンドボックスです。seccompは、strictモードで起動すると、write()、read()、exit()、sigreturn()の各システムコールのみを許可する
Comments