3

サードパーティのクライアントによって作成されたプラグインを許可するホスト サービスを実行しているとします。

おそらく、インフラストラクチャを提供するが、クライアントが独自のゲーム審判を開発できるようにするゲーム サービス プロバイダーです。または、コーダーがコーディングの問題の解決策として実行するコードを提出できるコーディング競技サイト。

このユーザーコードを実行しようとしているサーバーに潜在的な害を与えないように、このユーザーコードをどのように強化/ロックダウン/サンドボックスしますか?

リソースの使用状況 (主に CPU、メモリ) をどのように監視および制限しますか?

これは Python の良いスタートですが、言語(Python、Lua、Ruby など) に関係なく共有できる具体的な経験を持っている人がここにいるのではないかと思っています。

4

5 に答える 5

2

RestrictedPython (提供したリンクに表示) は有望に見えます。しかし、実際にそのようなことをしようとしたとは言えません。

機能する可能性のある別のオプションは、非常に最小限の Linux ディストリビューションを構築し、それを各ユーザーの仮想化環境に複製することです。仮想マシンの監視メカニズムを使用して、リソースが特定のレベルに達したら VM を一時停止することにより、CPU とメモリの使用を制限します。ディストリビューションを十分に小さく構築した場合、VM自体によるリソースへの影響はほとんどありませんが、そのようなソリューションにはかなり大量のRAMが必要になると思います(安全のために) )。

ちょうど私の2セント。ただし、私は Python の専門家ではありません。

于 2009-04-28T01:47:48.240 に答える
1

100%安全にすることはおそらく不可能ですが、chrootすることは良いスタートです。chrootされたjailで実行されているサーバーでいくつかのスクリプトを使用しています。あるスクリプトは攻撃の犠牲者であり(私はかなり巧妙な抜け穴を見落としていました-おっと!)、侵入者はスクリプトを壊しましたが、刑務所は彼らがそれ以上のダメージを与えるのを阻止しました。

最小限のPythonオプションを使用する場合は、最小限のPythonをご覧ください。

于 2009-04-28T10:20:58.740 に答える
0

FWIW、Apache/mod_wsgi バージョン 3.0には、chroot 環境でデーモン モード プロセスを実行する機能があります。

メインのオペレーティング システムを保護しようとすることだけに関心がある場合、それはそれを実行できる 1 つの可能なコンポーネントです。

ユーザーが他のユーザーのコードに干渉するのを止めたい場合、動的に変更できる任意の数のユーザーが存在する可能性がある場合、Apache/mod_wsgi にはまだ動的デーモン プロセス グループの機能がなく、代わりに依存するため、それは困難です。静的構成。

于 2009-10-28T10:19:12.117 に答える
0

Lua には、これまでに見た中で最高のサンドボックスとウォッチドッギングがあります。私のホスト言語は Python です。したがって、私はLunatic Pythonを使用することにしました。

于 2009-10-28T05:42:18.057 に答える
0

次のようなことをしたいかもしれません:

  1. 入力コードをコンパイルしてすべてのimportステートメントを選択し、インポートできるものを制限します。

  2. _import_および機能の使用についても確認してくださいreload

  3. これらのモジュールの API を定義して、提供する軽量の WSGI サーバーにラップされた個別のプロセスとして実行できるようにします。それらをサブプロセスとしてフォークし、サーバー API を介して対話します。それらがクラッシュまたはハングした場合、タイムアウトによってこれを検出します。

于 2009-04-28T11:16:43.630 に答える