
最近、とある Beat Saber mod のマルウェア疑惑が話題になったので、今回はサンドボックス環境の作り方ついて書いてみようとおもいます。サンドボックスに関しては汎用的な話になりますが、基本的には Beat Saber mod と絡めた話になります。 ちなみにサンドボックス (sandbox) というのは、英単語としては「砂場」とい...
前回 (1) のつづきになります。なお、以下ではサンドボックスのセットアップ方法を紹介しながらの説明になりますが、けっこう PC の上級者向けの内容になってしまったので、あまり PC 知識に自信のない方は、読み流して雰囲気だけ見るのも良いかと思います。
前置きが長くなってしまいましたが、ここからサンドボックスの作り方を説明します。サンドボックスにもさまざまな形がありますが、今回は無料で使用でき、導入も簡単な Sandboxie を使用します。
Downloads | Sandboxie-Plus
https://sandboxie-plus.com/downloads/
上のページを開き、「Windows 7, 8.1, 10, 11 x64 Downloads」の下にある Sandboxie-Plus-x64-v1.x.x.exe をクリックしてダウンロードします。
ダウンロードしたファイルを実行すると、セットアップが開始されます。日本語はないので English のまま OK。
ライセンスに同意して [Next]。
上の [Install ...] を選択して [Next]。下を選ぶとポータブル版になりますが、手動でファイル操作を行ったりと上級者向けなので、ここでは通常インストールの流れで解説します。
そのまま何も変更せず [Next] を押し続けてインストールが完了するとこの画面になります。[Run...] にチェックがついているのを確認して [Finish]。インストールされた Sandboxie はスタートメニューに登録されています。
初回起動時はセットアップウィザードが立ち上がります。[次へ]。
そのまま何も変更せず [次へ] を押し続けてセットアップウィザードが完了するとこの画面になります。[完了]。
このあと、下のような画面が開いたら [OK]。(開かない場合もあります)
Sandboxie では複数の環境を作成することができます。DefaultBox というデフォルトの環境が最初からできていますが、ここでは新規に Beat Saber のテスト環境を作ってみます。
上のメニューから [Create New Box] (新しいボックス(環境)を作成)。
Sandbox Name (サンドボックス名) には好きな名前を入れてよいですのですが、ここでは「BeatSaber」と入力して [OK] をクリック。
これで新しい環境が作成できました。このサンドボックス内でアプリを動かした場合、そのアプリがファイルを書き換えようが、削除しようが、実際のシステムには影響を及ぼさず、ファイルもそのまま変化はありません。
ファイルの書き換えができないとアプリの動作に不具合が出るのでは?と思われるかもしれませんが、よくできていて、サンドボックス内から見たときだけは、ファイル操作が行われたよう見えるようになっています。
例えば、サンドボックス内で動くアプリがデスクトップにあるテキストファイルAを削除したとしましょう。この場合、実際にAが削除されることはなく、サンドボックス内にAはもう存在しない、という情報が記録されます。その結果、Aは消されていないにも関わらず、サンドボックス内のアプリから見ればAは削除済みで存在しないように見えることになります。
実際にどんな感じかみてみましょう。[BeatSaber] を右クリックして [Run] → [Run Program]。
「notepad」と入力して [OK]。
メモ帳が起動します。このメモ帳は「BeatSaber」サンドボックス内で動いています。サンドボックス内であることを示す印として、ウィンドウタイトルに [#] がついていますね。
適当に文字を入力してから、C:¥に test.txt として名前をつけて保存してみます。
このあと、このメモ帳から [開く] で C:¥ を見ると、たしかに test.txt が存在します。
しかしながら、同時に (サンドボックス外の) エクスプローラーから C:¥を確認すると、test.txt というファイルは存在しません。サンドボックス内のメモ帳で行なわれたファイル操作は、サンドボックス内のみで完結していることがわかります。
このメモ帳を終了して、サンドボックス内のアプリがすべて終了した状態になると、サンドボックスは自動停止しますが、停止しないときは強制終了が可能です。右クリックから [Terminate All Programs] (すべてのプログラムを終了) です。
ちなみに、サンドボックス内で変更されたファイルを参照するには、右クリックから [Box Content] → [Explore Content] で可能です。
さらに安全性を高めるため、追加で設定を行います。上記では、ファイルの書き込みに対して対策できていることがわかりましたが、ファイルの読み込みに対しては、デフォルトでは無制限です。サンドボックス内からは、動作に不必要なファイルは読めないようにしておきましょう。
[BeatSaber] を右クリックして [Sandbox Options] をクリックします。
左から [Resource Access] をクリックします。ここはファイルのアクセス制限を追加する部分です。
右の [Add File/Folder] をクリックするとエントリを追加できます。右下の [Remove] で削除。
ここでどのような制限をかけるかは各自の裁量による部分なのですが、今回は例として、ユーザーのドキュメントフォルダとDドライブへのアクセスをブロックするようにしてました。ブロックの場合、Access の部分を Closed とします。
次にネットワーク制限の設定を行います。今回は、基本的にネットワークアクセスをすべてブロックする設定とします。
左の [Network Options] をクリックして、
上部の選択を [Block by denying access to Network devices] (リストにないアプリはすすべてブロック) に、その下の [Prompt user whether to allow an exemption from the blockade] (許可不許可のプロンプトを表示するか) のチェックは外したまま。
このままでは Steam と VR が使用できなくなって、Beat Saber も起動しなくなるので、「steam.exe」「vrserver.exe」を除外設定にします。[Add Program] で「steam.exe」「vrserver.exe」を追加。Access を [Allow] (許可) にします。
最後に [OK] を押して保存します。
ちなみにこの設定の場合、仮に悪意ある mod が steam.exe という名前でプログラムを生成して (あるいは steam.exe にコードインジェクションして)、そちらにネットワークアクセスさせた場合、ブロックをスルーしてしまう気がしますが…、そこまでは考えないことにします…。それも対策したい場合はアウトバウンドのファイアウォールルールを厳密に組んでください。
Steam は、デフォルト設定ではシステムに常駐するようになっています。Steam のウィンドウを閉じても、システムには起動した状態で残っている、ということです。
通常はこれでも特に問題はないのですが、この状態のままサンドボックスから Steam を起動した場合は、常駐していた Steam と、サンドボックスから起動した Steam が二重に起動している状態になり、予期しない不具合が発生する可能性があります。サンドボックスから Steam や Beat Saber を起動する前には、Steam を完全に終了するようにしてください。
完全に終了するには、タスクトレイ (デスクトップの右下) の中の Steam アイコンを右クリックして [終了] を選びます。
ここでサンドボックスのテストをするために、ごく簡単なマルウェアっぽい mod を作ってみました。mod の動作としては、ドキュメントフォルダにある日記帳を読んでログに表示する、指定したやばいサイトを表示する、というものです。
まず、この mod を入れた状態で、サンドボックスを通さずに、普通に Beat Saber を起動してみます。すると、勝手にブラウザが開き、やばいサイトが表示されました。またログを見ると、mod に日記帳を読まれていることがわかります。
今回はただのテストですが、仮にこれがただファイルを読むだけでなく、データを破壊する処理であったり、Google を表示するのではなく、悪意あるページに誘導する処理だったとすると、よろしくないですね。
次はサンドボックスで Beat Saber を起動してみます。[BeatSaber] を右クリックして [Run] → [Run from Start Menu] をクリックします。
表示されるメニューから [プログラム] → [Steam] → [Beat Saber.url] と、スタートメニューと同じようにたどって Beat Saber を起動します。
結果はこのとおり。ネットワーク接続は失敗しており、日記帳へのアクセスも拒否されています。正常にサンドボックスが機能しているようですね。
ネットワーク接続をブロックしている場合、当然スコアやリプレイのアップロードなどはできません。これらを使えるようにしたい場合は、Beat Saber もネットワーク接続可能なように設定する必要があります。
下記は Steam のサービスや Beat Saber を接続可能に設定した例です。
この場合、どんな mod も自由にネットワーク接続できるようになる点については留意しておく必要あります。ファイアーウォールルールを作って、Beat Saber やスコア送信に必要な宛先以外はブロックするのも良いかと思います。
(これらを調べるのが面倒ですが...)
補足: 上でも書きましたが、サンドボックス上でのファイル操作は、サンドボックス内だけで完結して、外のシステムには影響を与えません。つまり、サンドボックスから起動した Beat Saber のセーブデータは、サンドボックス内のファイルのみが更新され、通常の場所にあるセーブデータのファイルには反映されません。セーブデータのバックアップをとるときは注意してください。
今回は、サンドボックス上で Beat Saber を動かす方法について書きましたが、パフォーマンス的なオーバーヘッドもあるので、Beat Saber を常時サンドボックスで動かすことを奨励しているわけではありません。出所不明の mod (やプログラム) をいきなり大事な PC で動かすことの危険性と、それでもどうしても試したいときはこういう手段がある、ということを知っていただければと思いました。
また、システムを汚さずに未知のプログラムを実験的に動かしてみる環境として、サンドボックスは有用です。たとえば、ある目的のことをする小さなフリーソフトを探して、候補が3つくらいでてきたとき、どれがいいのか。普通に全部インストールして、一番良かったものを残して他をアンインストールするとしても、全部がお行儀良く削除できるとも限りません。うまく削除できなかったファイルがゴミとしてどこかに残っていたらイヤですよね。こういうとき、サンドボックス上で試していれば、サンドボックスまるごと削除も簡単なので心配がありません。このように、サンドボックス環境を持っておくと便利なこともあります。
今回の記事がみなさんのお役に立てれば幸いです。
なるるるるな / NALULUNA
2022-11-30 15:01:22 +0000 UTCJAN
2022-11-30 13:28:03 +0000 UTC