4

サーバー上で実行される Python スクリプトをユーザーがアップロードする Web サービスがあります。これらのスクリプトはサーバー上にあるファイルを処理し、サーバーのファイルシステムの特定の階層のみを表示できるようにしたい (最適: 処理したいファイルとスクリプトをコピーする一時フォルダー)。

サーバーは最終的には Linux ベースのサーバーになりますが、Windows でも解決策が可能な場合は、その方法を知っておくとよいでしょう。

私が考えたのは、FSのフォルダーへのアクセスが制限されたユーザーを作成することです-最終的にはスクリプトとファイルを含むフォルダーのみ-このユーザーを使用してpythonインタープリターを起動します。

誰かが私にもっと良い代替案を教えてもらえますか? これだけに頼ると不安になるので、信頼できないコードを安全に実行できる実際のサンドボックスまたは仮想 FS 機能が欲しいです。

4

3 に答える 3

5

特定のリソースへのアクセスを制限するには、chroot jailまたはSELinuxなどの高次のセキュリティ メカニズムを使用できます。

于 2010-03-16T06:36:40.247 に答える
3

おそらく、VirtualBox や VMware などの仮想マシンを使用するのが最適です (おそらく、ユーザー/セッションごとに 1 つ作成することもできます)。

これにより、メモリやネットワーク、ディスクなどの他のリソースをある程度制御できます

そのような機能が組み込まれていることを私が知っている唯一の Python は、Google App Engine のものです。それはあなたにとっても実行可能な代替手段かもしれません。

于 2010-03-16T06:31:07.317 に答える
0

これは本質的に安全でないソフトウェアです。ユーザーがスクリプトをアップロードできるようにすることで、リモートでコードが実行される脆弱性が導入されます。ファイルを変更するだけでなく、Python スクリプトがネットワークや他のリソースにアクセスするのを妨げているのは何ですか?

この問題を解決するには、サンドボックスを使用する必要があります。システムを強化するために、階層化されたセキュリティ アプローチを使用できます。

最初の層であり、最も重要な層はpython サンドボックスです。ユーザーが提供するスクリプトは、python サンドボックス内で実行されます。これにより、必要なきめ細かい制限が得られます。次に、Python アプリ全体を専用の chroot 内で実行する必要があります。chroot の強度を向上させる grsecurity カーネル モジュールを使用することを強くお勧めします。たとえば、grsecuirty chroot は、攻撃者がカーネル ランドに穴を開けることができない限り、破ることはできません。これは最近では非常に困難です。カーネルが最新であることを確認してください。

最終的な結果は、攻撃者のスクリプトが持つリソースを制限しようとしているということです。レイヤーが十分に異なっていて、同じ攻撃で両方が破壊されない限り、レイヤーはセキュリティに対する実証済みのアプローチです。スクリプトをシステムの残りの部分からできるだけ分離する必要があります。共有されているすべてのリソースは、攻撃者のパスでもあります。

于 2010-03-16T20:14:57.967 に答える