私は最近、いくつかのコードをその環境に「アップロード」し、オペレーティングシステムへのあらゆる種類の出力(コード実行から)を防ぐための保護/セキュリティ実行環境を実装するための最良の方法を研究しています。 code システムに害を及ぼすバグがあると「壊れた」ことはありません。これまで私が見つけた最も一般的な解決策は次のとおりです。
- 砂箱
- 仮想デバイス
- ファイルバージョン管理システム(パーティションなど)
しかし、上記のすべての方法には、それぞれ次の欠点があります。
- 限定機能
- コピーまたは送信はサポートされていません。
- 異なるプロセスで行われた変更を確認するメカニズムはありません。
それで、いくつかの記事を読んだ後にこれを達成するための最良の方法は、VFS(仮想ファイルシステム)とFUSEを使用することです。私の言葉は正しいですか、それとも良い解決策がありますか?
VFSとFUSE関連:最高の(サポートされている)Pythonの実装は何ですか?ヒューズ?
答え1
「保護された実行環境」を作成する最も簡単な方法は、権限のないユーザーとして実行することです。その後、プロセスはユーザーに変更権限を持つ項目のみを変更できます。セキュリティテスト用に特別にユーザーを作成する場合は、デフォルトでは何もありません。ユーザーの追加と削除はコマンドです。
この方法が不可能な唯一の理由は、プロセスにスーパーユーザー権限が必要なためです。この場合は、特別なサンドボックスまたは仮想マシンを使用する必要があります。一般的に、「サンドボックス」は必ずしもスーパーユーザー権限が可能であることを意味するわけではありませんが、それも可能です(qv man chroot
)。
いくつかの記事を読んだ後、これを達成するための最良の方法はVFS(仮想ファイルシステム)とFUSEを使用することです。
なぜそう思うのか分からない。仮想ファイルシステムはまだファイルシステムにすぎないため、その中にある実行可能ファイルにはいかなる種類のセキュリティも提供しません。これはUSBスティック(ファイルシステムを含む)をマウントし、そこに保存されている実行可能ファイルを実行するのと同じくらい「安全」です。これは、実行可能ファイル(またはPythonの場合はスクリプト/バイトコード)がリムーバブルデバイス(またはVFS)に保存されているためです。それはどんな害からもあなたを守ることはできません。
また、同じ理由で、「ファイルバージョン管理システム(パーティションなど)」がホストシステムにどのようなセキュリティを提供できるかはわかりません。ところで、それは彼らの目的ではありません。
WRTは、あなたがリストした欠点を克服する方法を探しています。
「コピーまたは送信はサポートされていません。」「サポートされていない」が不可能であるという意味であれば、当然可能です。一般的に使用する方法を使用できます。 「サポートされていません」は、仮想マシンに心を読むソフトウェアが含まれていないという意味であれば正しいです。心を読むには追加のハードウェアが必要です。 ;)
「他のプロセスで変更を確認するメカニズムはありません。」最後の要点も同じだ。プロセスが実行する作業を観察する必要がある場合は、
strace
プロファイリングなどの一般的な方法で実行できます。これを行う特別なサンドボックスがあるかもしれませんが、特定のラインに従って特殊化されると思います。
これに関連して、私はPythonユーザーではありませんが、高速Google検索結果サンドボックスPython。これを追跡するツールがあるかどうかはわかりませんが、テストしたいコードがPythonにある場合は始めるのに最適な場所です。