最近、とある Beat Saber mod のマルウェア疑惑が話題になったので、今回はサンドボックス環境の作り方ついて書いてみようとおもいます。サンドボックスに関しては汎用的な話になりますが、基本的には Beat Saber mod と絡めた話になります。
ちなみにサンドボックス (sandbox) というのは、英単語としては「砂場」という意味ですが、コンピューター用語としては、ユーザーが通常使用している環境とは別の隔離環境のことをさします。
砂場で穴を掘ろうが山を作ろうが、外の環境には何ら影響がなく、すぐに元に戻すことができるように、この隔離環境内では、(適切に設定していれば) ウィルスやマルウェアがどんな活動をしようとも、システムやユーザーに悪影響を及ぼさないようになっています。
このため、出所不明のプログラムの動作を確認するのにサンドボックスは有用な手段となります。
ゲームの mod には様々な方式が存在しますが、安全性の観点から言うと、ゲームシステムが管理する、ゲーム内のみに干渉できる mod と、ゲームシステムの管理外で動き、システムのあらゆることに干渉できる mod の 2 種類があります。
ゲームシステムが管理する mod
前者の例としては、Skyrim の esp 形式の mod や、ETS2 の scs 形式の mod などが挙げられます。これらはゲームがあらかじめ用意した原則に従って動作するもので、mod は与えられた命令やデータにのみ干渉できます。
使用できる命令やデータの自由度が高ければ、大きくゲーム動作を変更することも可能ですが、それでも限界はあります。ゲームが想定してないような部分の変更はできません。たとえば、ETS2 でマップを増やしたり運転席内のアイテムを追加することはできますが、ドライバーとして動くアバターを乗せるようなことは不可能です。
この形式の場合、mod の自由度が低いというデメリットはありますが、逆にそのおかげで、ゲーム外のシステムに mod が影響を与えることもありません。最悪のことが起こっても、せいぜいゲームのデータが壊れる程度で済みます。
(Skyrim の場合、dll を使用する mod もあり、これは後述する Beat Saber の mod に近いタイプになります)
ゲームシステムの管理外で動く mod
次は後者の話に移ります。Beat Saber の mod はこちらで、dll を使用する mod はシステムのあらゆることに干渉が可能です。(拡張子が dll でなくてもライブラリとしてロードすることはできるので、単純に拡張子だけでは判定できませんが)
dll を使用すると、ゲーム内どころか、システムのすべての命令やデータに干渉できるため、非常に自由度の高い mod を作ることが可能になります。たとえば NalulunaDesktop のように Beat Saber 内に Windows アプリを表示して操作する、といったことは、この形式の mod でないと不可能です。
一方で、自由度が高いというのは当然デメリットもあります。mod は PC 内のファイルを読み書きすることも、ネットワーク通信も自由に行うことができます。dll を動かす、というのは、exe (アプリ) を起動することと実質的に同じです。
最悪、システムのファイルが消されたり、グラフィックボードに無効な BIOS を書き込まれて破壊されたり、勝手にカメラを起動してネットにライブ中継されたり、恥ずかしい日記帳をメールでアドレス帳の上司や取引先に一斉送信されてしまうこともあるかもしれません。おそろしいですね?
つまり、Beat Saber のように dll 形式の mod を導入するときは、その mod が信頼できるものなのかどうか、よく考えてから導入する必要があります。
まず、Beat Saber の ModAssistant でインストールできる mod は信頼できると言って良いでしょう。基本的にソースコードが公開されており、Beat Saber Modding Group のコアメンバーが確認、承認を出した上で公開されています。(冒頭に書いた mod は例外的にソースコード非公開でした。あれと YUR 以外はソースコードが公開されていると思います)
つぎに、わたしの公開している mod は安全なのでしょうか。わたしの mod は、支援者限定にしているものに関しては、ごく一部例外はあるもののソース非公開の上、解析対策も施しています。(そうしないと、まったく同じものを簡単にコピーで作れてしまうので…)
この場合、mod が安全かどうかは、作者が信頼できる人間なのかどうか、また、悪意あるコードを埋め込むことに意味があるのか、という話になります。
たとえば、仮にわたしが mod にマルウェアで小遣い稼ぎをするコードを入れたとして、わたしにメリットがあるでしょうか。見る人が見れば、このような不審な通信はすぐに発見されます。公になれば、わたしは YouTube、Twitter、Fanbox などで、今まで積み上げてきたものすべてを失うことになるでしょう。つまり論理的に考えれば、そのようなことはしないだろう、という判断で信頼していただくしかないと思っています。
同様の理由で、冒頭に書いた mod に関しても、マルウェアが入っていた可能性は低いのでは、と思っています。例の mod の作者は、Beat Saber 界隈で確立したそれなりの立場と収益があり、それを失うリスクを負ってまでマルウェアを仕込むようなことは、普通に考えればやらないでしょう。ただ、これも単にわたしがそう思った、というだけで、何の根拠もありません。最終的には作者が信頼できるか、という話になります。
それでは、Web 上や discord などにアップロードされた、よく知らない第三者が配布している mod はどうでしょうか。その第三者が作った mod ではなく、有名な mod だったとしても、配布しているのが作者とは別の第三者であれば、そのファイルも信頼できるものかどうかわかりません。
本来、そのような出所不明のファイルは使用すべきではありませんが、どうしても試したいというときは、サンドボックスで動作確認してみるのも一つの手です。次回 (2) では、サンドボックスのインストールと、そのサンドボックス内で Beat Saber を動かす方法について説明します。
(注)
ちなみに、サンドボックスだけで 100% の安全性を確認することはできません。たとえば、最初は一見普通に動いているように見せかけて、時限式で悪意ある動作を発動するような仕組みが入っていた場合、サンドボックスで簡単な動作確認を行ったときは異常が発見できず、安全なものと誤認してしまうかもしれません。この場合、常時サンドボックス内で制限をかけて使用する、という対策は可能です。
----
ごめんなさい!今日の記事はここまで。
(2) も今月中に公開しますので、いましばらくお待ちください。