ptrace()私が開始し、そのすべての子(孫などを含む)が作成するプロセスを実行して、サンドボックスを実装したいと思います。親プロセス、ptrace()つまりスーパーバイザー。単純なCまたはPythonプログラムであり、概念的には、ファイルシステムアクセス(パス名とアクセス方向(読み取りまたは書き込み)およびソケットアクセス(ソケットの作成を禁止するなど)に基づく)を制限します。
ptrace()dプロセスとその子が(再帰的に)サンドボックスをバイパスできないようにするには、何に注意する必要がありますか?fork()競合状態を回避するために監督者がその時に行うべき特別なことはありますか?rename()競合状態なしで子プロセスなどからのファイル名引数を読み取ることは可能ですか?
これが私がすでに計画していることです:
PTRACE_O_TRACEFORK | PTRACE_O_TRACEVFORK | PTRACE_O_TRACECLONEfork()ingするときに(いくつかの)人種の条件を避けるために- デフォルトですべてのシステムコールを禁止し、許可されたシステムコールのホワイトリストを作成します
*at()システムコールバリアント(などopenat)が適切に保護されていることを確認してください
他に何に注意を払う必要がありますか?