サンドボックスとは

サンドボックス(Sandbox)とは、外部から受け取ったプログラムやファイルを、安全に動作させて様子を見るために用意された「隔離された仮想の作業環境」のことです。子供が遊ぶ「砂場(サンドボックス)」が語源であり、砂場の中であればどれだけ泥遊びをしても周囲の庭や家を汚さないのと同じように、サンドボックス内で怪しいファイルをわざと実行させてその挙動を観察し、もしウイルスなどの悪意あるプログラム(マルウェア)であっても、実際のパソコンや社内ネットワークに被害が及ばないようにします。
具体例
メールに添付されてきた送信元不明の「invoice.exe」という不審なファイルを、専用の隔離環境(サンドボックス)で実行してみます。ファイルが実行された瞬間に、レジストリを書き換えたり外部の不審なサーバーへ接続しようとしたりする不正な動きを検知したため、ウイルスと判断して破棄し、実環境への侵入を未然に防ぎます。
【サンドボックスの概念図】\n[怪しいファイル] \n │ (ダウンロード)\n ▼\n ┌───────────────┐\n │ サンドボックス│ ← 完全に隔離された仮想空間\n │ ・実行してみる │\n │ ・挙動を監視する │\n └───────────────┘\n │ (安全と判断された場合のみ)\n ▼\n [本物のパソコン環境]もう少し詳しく
サンドボックスは、一般にハイパーバイザを用いた仮想マシン(VM)やコンテナなどの技術を利用して、OSレベルでファイルシステムやネットワーク、レジストリなどへのアクセスを制限した隔離環境です。ここに分析対象のファイル(PEファイル、PDF、Office文書など)を投入し、実際に実行・展開した際の一連のシステムコールやプロセスの生成、外部への不正なAPI通信などの動的な挙動(振る舞い)を監視します。これは「動的解析(振る舞い検知)」と呼ばれ、従来の定義ファイル(パターンファイル)を用いた「静的解析(シグネチャ検知)」では防ぐことが困難な、標的型攻撃やゼロデイ脆弱性を悪用した未知のマルウェアを検出するために有効です。ただし、近年ではマルウェアの側も進化しており、自身がサンドボックスなどの分析環境で動作しているかを検知(例:CPUのコア数、マウスの動きの有無、特定のデバッグ用レジストリの存在を確認)し、分析環境内では無害なふをして休眠する「サンドボックス回避技術(回避機能付きマルウェア)」が普及しています。これに対抗するため、最新のサンドボックスでは人間の操作を擬似的に再現したり、カーネルレベルで監視を隠蔽したりする高度な技術が導入されています。
試験でのポイント
応用情報技術者試験では、サンドボックスが「未知のマルウェア」や「標的型攻撃」に対する有効な対策技術としてよく出題されます。選択肢では、「不審なプログラムを、他の通信やシステムから隔離された保護された仮想領域で実行し、その挙動を観察・分析する手法」といった説明を正しく選べるようにしてください。また、シグネチャ型(定義ファイル型)ウイルス対策ソフトとの違いもよく問われます。シグネチャ型が「既知のマルウェアのパターン(ハッシュ値や特徴的なコード)」と照合するのに対し、サンドボックスは「実際の動的な振る舞い(レジストリ変更、特定のポートへの外部接続など)」を監視するため、出現したばかりの未知の脅威を検知できるというメリットがポイントになります。加えて、先述した「マルウェアによるサンドボックス回避動作」についての知識(試験では、検出を避けるために実行を遅延させる動作などが問われることがあります)も押さえておくと万全です。
関連する用語
既存のパターンと照合するシグネチャ検知(パターンマッチング法)、プログラムの挙動から不正を判断する振る舞い検知(動的解析)、およびセキュリティパッチが提供される前の脆弱性を狙うゼロデイ攻撃があります。これらとサンドボックスの動作を紐付けることで、マルウェア防御技術への理解が深まります。