悪意のあるseccompフィルタが実際にシステムコールを行わずにsetuid(2)を使用してゼロを返すようにするにはどうすればよいですか?

悪意のあるseccompフィルタが実際にシステムコールを行わずにsetuid(2)を使用してゼロを返すようにするにはどうすればよいですか?

私はDebianシステムのドキュメントを読んでいましたが、次のseccomp(2)段落で次の文を偶然見つけました:

setuid(2) たとえば、これらの悪意のあるフィルタは、実際にゼロを返すシステムコールを作成するのではなく、発信者のユーザーIDをゼロ以外の値に設定しようとする可能性があります。

上記の目的を達成するためにフィルタをseccomp乱用する方法は?

悪意のあるフィルタがこれを許可しない場合、setuid(2)プロセスはSIGSYSシグナルを受信して​​終了する可能性があり、システムコールは実行されません。

悪意のあるフィルタが許可した場合、setuid(2)dexecve(2)プログラムはユーザーの UID を正しく変更します。

私は何を見逃していますか?

man seccomp:

...

それ以外の場合、SECCOMP_SET_MODE_FILTER 操作は失敗し、errno に EACCES が返されます。この要件は、特権のないプロセスが悪意のあるフィルタを適用し、set-user-IDまたは他の特権を持つプログラムへの呼び出しを使用して、潜在的にプログラムを破壊execve(2)することがないようにします。 (たとえば、これらの悪意のあるフィルタは、実際にシステムコールを行わずにゼロを返すのではなく、呼び出し元のユーザーIDをゼロ以外の値に設定しようとする可能性があります。 setuid(2) したがって、プログラムが可能であればスーパーユーザー権限を維持するように欺くことができます。 (実際に権限を放棄しないため、危険なことをするように影響します。)

...

ベストアンサー1

おすすめ記事