3

プロトコル用のサーバーを実装したいと考えています。セキュリティ上の理由から、パーサーは独自のスレッドでプログラムの残りの部分から分離する必要があり、双方向チャネルのみを通信用に開いておく必要があります。

パーサー スレッドは、他のスレッドのメモリを変更する可能性を失い、syscall を実行する権限を失います (seccomp を使用)。

Rust のパーサー スレッドでこの動作を実現する簡単な方法はありますか?

4

1 に答える 1

2

Rust の強力な安全性と型システムが保護できる範囲を超えた問題 (たとえば、それらのバグやサードパーティ ライブラリなど) が懸念される場合は、スレッドだけではなく個別のプロセスが必要です。信頼できないスレッドで seccomp を使用しても、OS/CPU レベルでは、同じプロセス内の他のスレッドのメモリへの完全な書き込みアクセスが可能です。

いずれにせよ、seccomp で実行するように設計されたコードを慎重に作成する必要があります (たとえば、追加のヒープ メモリの割り当てがうまくいかない場合があります)。

Rust の seccomp には、いくつかの提案があるかなり有用な議論があります。

最善の策は、より一般的なプロセス サンドボックス (seccomp を含む) である Servo プロジェクトの gaol のように見えます。このような他の低レベルの seccomp ラッパーもあります。

私はまだこれを試していないので、他の視点/経験を聞きたいです.

于 2016-09-04T20:54:17.407 に答える