phpFiddleやGolang のツアーのように、ユーザーが独自のコードを記述し、ブラウザー内でコンパイルおよびテストできるようにする Web アプリケーションを構築することを計画しています。
- このようなサーバーの保護が難しいことは承知しています。
- VM の標準ライブラリへのアクセスを制限することでセキュリティを確保できることはわかっていますが (おそらくそうするでしょう)、これではすべての種類の攻撃に対して十分な保護ではないことを認識しているため、実際の保護にはまったくなりません。 .
取り扱いについては以下のように考えています。
- マスター/スレーブ構成。スレーブ サーバーにはマスター サーバーのみがアクセスできます。スレーブは、要求に応じて chroot 監獄でコンパイラ プロセスを生成するサーバーを実行し、タイムアウトを課すため、指定された時間よりも長く実行されるとアプリケーションを強制終了します。
- ユーザー バインド chroot を使用すると、ユーザーがアクセスできるものを適切に制御できます (特に、ターゲット言語には多くの依存関係がないため)。
- 他の独立したプロセスを実行している信頼できないプログラムから保護するにはどうすればよいですか? フォークするプロセスを拒否する、または他のプロセスを生成する良い方法はありますか?
- 私が見落とした可能性のある他の攻撃ルートは何ですか?
優れた Linux ベースのサンドボックスを見つけるためにいくつかの検索を行いました。それらは非常に良さそうに見えますが、スレーブ サーバーは専用のサンドボックスと見なすことができるため、少しやり過ぎのように思えます。要求されたコードをコンパイル/実行するタスクに。サーバー構成関連よりもプログラミング関連のように見えるため、Serverfault ではなく、ここでこれを尋ねているのはそのためです。