サンドボックスはマルウェアの検出や、不具合のあるプログラムがコンピューターに与える影響の最小化に寄与する重要な技術だ。一方で、ユーザーがサンドボックスの存在を意識する機会は多くなく、その仕組みがわかりづらいと感じる人も多いだろう。この記事では、サンドボックスの仕組みと利用シーン、セキュリティ上の課題を解説していく。
サンドボックスの仕組みとは?
サンドボックスは、隔離された領域でプログラムを実行し、問題発生時においてもほかのプログラムに影響を及ぼさないようにする仕組みのことだ。和訳では公園の「砂場」を意味し、外部から仕切られた環境で自由に遊べる状況に由来する。
サンドボックスでプログラムを実行すれば、たとえ悪意のあるプログラムであったとしても、外部のプログラムに影響を与えない環境下でその振る舞いを確認できるのがメリットだ。ファイルの読み書き、マイクやカメラへのアクセス等が要求される際、明示的許可がない場合はサンドボックス内で実行されるプログラムによるアクセスを制限し、サンドボックス外の領域を保護する。
受信メールをサンドボックスで解析し、マルウェアを検知するのは代表的な例と言えるだろう。サンドボックス内で添付ファイルやメール内のリンクを検証し、問題のあるプログラムが含まれていれば、システムによってはユーザーに通知することも可能となる。
近年増えている標的型攻撃やゼロデイ攻撃といった巧妙な攻撃手法では、既知のプログラムとの比較を行う従来のパターンマッチング方式では検出が難しい。しかし、サンドボックスを利用することで、隔離された環境で実際に外部から送り込まれたプログラムを実行するため、これらの攻撃に対する検知可能性が向上する。
他にも、未知のプログラムを実行する可能性のある、多くのアプリケーションでサンドボックスの仕組みが採用されている。例えば、WebブラウザーではJavaScriptなどのプログラムを隔離した領域で実行し、カメラ等の利用については明示的な許可を与える。また、Adobe Flashのようなプラグインも、サンドボックスが端末でのファイル読み書き等を制限する。
モバイル端末ではiOSやAndroidといったOSが、アプリをサンドボックス内で実行するように設計されている。公式のアプリストアからダウンロードしたアプリであっても、サードパーティが開発したアプリは不具合が含まれる可能性があるため、セキュリティリスクが懸念される。そのリスクをOS側で防御する、という思想となっているのだ。
マルウェアに対するサンドボックス利用の課題と対策
前述のとおり、サンドボックスはマルウェア対策として活用されているものの、セキュリティ上の課題も少なからず指摘されている。まず、サンドボックス内でマルウェアかどうかを分析して完了するまでに一定程度の時間を要すること。そのため、リアルタイムでの対応が難しい。例えば、受信したメールを検査する場合、マルウェアを検知した時点ではメールが受信者に届いてしまっている可能性もある。
マルウェアの中にはサンドボックス環境で実行されているかどうかを検知し、対策ソフトを回避するものもある。VMWare等の仮想環境では特有のMACアドレスやプロセスが存在することから、仮想環境内で実行されている状況を検知し、マルウェアとしての振る舞いを一時的に止めてしまう。対策ソフトを通り抜けてから活動を再開することで、攻撃の成功可能性を高めるという理屈だ。
また、特定の時間にプログラムが実行されるようスケジュールされているマルウェアも存在する。この場合、指定時間以外はサンドボックスが悪意のある振る舞いを検知できないため、問題のないプログラムとして突破される可能性がある。
実際、暗号化型ランサムウェアLockyは、サンドボックスを回避できることがよく知られている。スパムメールやFlashの脆弱性などを突き、多くのコンピューターへ感染が広がった。Lockyに感染すると、コンピューター内のファイルが不正に暗号化されてしまい、復号のための金銭を支払うよう脅迫される。Lockyは2016年から2017年頃に感染が拡大したランサムウェアで、日本を含めて世界中で被害が報告された。
他にも、ファイルを利用せず、メモリー上で実行されるマルウェアが発見されている。この場合でも、サンドボックス環境ではファイルが実行できないため、検知を回避される可能性が高い。
上記のように多種多様なマルウェアが存在する点を考慮すれば、セキュリティを高めるにはサンドボックスだけに頼るのというのは望ましくない。異なるレベルで複合的に対策を施す、多層防御の観点が重要となる。端末側が標的にされるケースも多いため、サーバー側での検知に加え、エンドポイントでのセキュリティ対策も必須となっている。
サンドボックスに関連した技術として、ハニーポットという仕組みもある。ハニーポットは、あえて攻撃を仕掛けられることを目的に偽のシステムを設置し、攻撃者をおびき寄せてその手法や行動を観察・調査するためのものだ。実際のサーバーよりも脆弱性を持ったシステムが狙われる可能性が高く、セキュリティを向上させる効果があるとされる。サンドボックスとは思想も異なるが、実際のシステムから切り離した環境を使って防御を図るという点で共通しているといえる。
可能性が広がる、サンドボックス型の仮想環境
サンドボックスの考え方は、メール対策やモバイルOSにとどまらず、さまざまな場面で応用が進んでいる。例えば、仮想マシンを稼働させる際に、ホストコンピューターや仮想マシン同士を干渉させないためにもサンドボックスの思想が適用されてきた。また、ソフトウェア開発で特定の環境を構築してテストを実行する際にもサンドボックスが使われる。
仮想環境を構築するコンテナ技術としてはDockerが広く普及している。また、VirtualBox、VMWareといった仮想環境も以前から頻繁に使われている。最近では、Windows環境においてWindowsサンドボックスというツールが提供されるようにもなっている。サードパーティが開発したプログラムの挙動を確認する、あるいはソフトウェア開発のテスト実施などで、日常的に使用している環境へ影響を与えずに、Windowsサンドボックス内でファイルが実行できるというメリットがある。
サンドボックスを使ったマルウェア対策ツール としては、cuckooというオープンソースソフトウェアが知られている。仮想環境でプログラムを実行し、起動したプロセスやファイルの読み書き、通信したIPアドレスなどを記録できる。
同様に、ESET PROTECTソリューションシリーズ「ESET PROTECT Complete」などに搭載のクラウドサンドボックス(ESET LiveGuard Advanced)を用いることで、端末で発見された不審なファイルを自動でクラウド上にあるサンドボックス環境へ送信し、その振る舞いを検証した上で、悪質なプログラムは即座にブロックする。脅威に関する情報は常時クラウド上で更新されているため、ゼロデイ攻撃であっても、対処への即時性が高まるというのが大きなメリットだ。
Webブラウザーやモバイルアプリなど、ユーザーの目が届かないところで使用されるサンドボックス。近年は、エンタープライズ向け製品に限定せず、より幅広くサンドボックス環境が構築できるようになってきている。だからこそ、サンドボックスの概念を適切に理解し、コンピューターやインターネットの安全な利用に役立てるようにしてほしい。