私は起動し、すべての子プロセスが作成するプロセス(孫を含む)をptrace()
で実装したいと考えています。 ptrace()
親プロセス、すなわち監督者。単純なCまたはPythonプログラムであり、概念的にはパス名とアクセス方向(読み取りまたは書き込み)とソケットアクセス(ソケット作成を禁止するなど)に基づいてファイルシステムのアクセスを制限することになります。 ptrace()
のプロセスとその子プロセス(と再帰的に)がサンドボックスをバイパスできないようにするには?fork()
競合状態を避けるためにスーパーバイザが特別に行うべきことはありますか?例:rename()
競合状態のない子プロセスからの返信はありませんか?Linuxのptraceは安全でないか競合状態になることはありますか?
PTRACE_O_TRACEFORK | PTRACE_O_TRACEVFORK | PTRACE_O_TRACECLONE
- をINGの
fork()
は、すべてのシステムはデフォルトで呼び出して、許可されるシステムのホワイトリストを構成する - は(例えば
openat
など)*at()
システムコールの変種が適切であることを確認して呼び出す禁止する場合(一部の)レースcoditionsを避けるために保護された
他に何か注意を払う必要がありますか?
したがって、基本的には、Systrace(http://www.systrace.org/)のptraceベースのバックエンドを複製しようとしていますか? – thkala
はい、私の管理者はsystraceと同様に動作します。残念ながら、systraceは維持されていないように見えますが、それはきれいにコンパイルされません。また、バグのようです(GNUを実行しているGCCをサンドボックス化したとき、 – pts