私は、ユーザが独自の「ウィジェット」を作成できるプラットフォームを開発しています。ウィジェットは基本的にjsスニペットです(将来はhtmlとcssもあります) 。サーバ上で実行されているユーザによって書かれたnode.jsスクリプトのサンドボックス化
問題は、ユーザーがウェブサイトにいなくても実行する必要があるため、基本的に私のサービスはこれらのユーザースクリプトを毎回実行するようにスケジューリングする必要があります。
私はそのスクリプトを「サンドボックス」するための最善の方法を見つけようとしています。最初のアイデアの1つは、Docker内で独自のプロセスを実行することでした。何とかシェルに入ると仮想マシンになり、うまくいけば彼は内部に閉じ込められます。
私はドッカーの専門家ではありません。だからとにかく、1つの単純なjavascriptスニペットを実行するために何百ものドッカーを回転させている別の問題が生じるでしょう。
これを行う「安全な」方法はありますか?おそらく、空のスコープでスクリプトを実行し、何らかの理由で「require」メソッドへのアクセスを削除しますか?
タイムアウトすると、スクリプトを強制終了する必要があります。
EDIT: - これは、ドッキングウィンドウで行うことができ、この関連stackexchange link
本当に注意が必要な設定を行いますか? 例えば、ユーザーがnode.jsからシェルを取得したとしましょう。どうすればドッカーから出て自分のホストマシンを所有しないのでしょうか? – kroe
最新のカーネルと最新のドッカーバージョンを持つコンテナからユーザーが脱出できる既知のセキュリティ悪用はありません。ドッカーとカーネルを更新し続ける限り、既知の悪用は迅速に修正されます。これは多くの人にとって大きな問題になるためです。 –
ユーザーはちょうどjavascriptをアップロードし、ノードプロセスで実行します。 私はどうにかして "システムメソッド"へのアクセスを削除することができますので、うまくいけばファイルシステムやバッファオーバーフローに触れませんか? – kroe