過去問ドリル

LinuCレベル3 セキュリティスペシャリスト アクセスおよび権限制御の強化 問37

アクセスおよび権限制御の強化/システムコールの制御

seccompのフィルタモード(SECCOMP_MODE_FILTER)でBPFプログラムが返せるアクションに関する説明として、正しいものをすべて選べ。

当サイトのオリジナル問題(LinuCレベル3 セキュリティスペシャリストの出題範囲「アクセスおよび権限制御の強化」に対応。実際の試験問題ではありません)

正解:A、B

解説

SECCOMP_RET_KILL_PROCESS はLinux 4.14で追加されたアクションで、違反したスレッドだけでなくプロセス全体(スレッドグループ)をSIGKILLで終了させます。スレッドだけを終了させるのは SECCOMP_RET_KILL_THREAD(旧称 SECCOMP_RET_KILL)です。SECCOMP_RET_ERRNO はシステムコールを実行せず、フィルタ戻り値の下位16ビットに格納されたerrno値をcallerのerrnoに設定して返します。SECCOMP_RET_TRACE でトレーサーが接続されていない場合はENOSYSが返り、システムコールは実行されません。複数のフィルタは最後に設定したものから順に評価され、最も優先度の高いアクションが採用されます(SECCOMP_RET_ALLOWでも全フィルタが評価される)。

選択肢ごとの解説

  • A正しい。SECCOMP_RET_KILL_PROCESS(Linux 4.14以降)は違反したシステムコールを呼んだスレッドだけでなくプロセス全体をSIGKILLで終了させる。スレッドのみを終了させるのは SECCOMP_RET_KILL_THREAD である。
  • B正しい。SECCOMP_RET_ERRNO はシステムコールを実行せず、フィルタ戻り値のデータフィールドに格納されたerrno値をcallerに返す。プロセス自体は終了しない。
  • C誤り。SECCOMP_RET_TRACE でptraceトレーサーが接続されていない場合、システムコールは実行が許可されるのではなく ENOSYS が返り失敗する。システムコールの実行可否はトレーサーが決定する。
  • D誤り。SECCOMP_RET_ALLOW を返してもフィルタの評価はスキップされない。複数のフィルタはすべて評価され、最も優先度の高いアクション(KILL > TRAP > ERRNO > … > ALLOW の順)が最終的に適用される。
LinuCレベル3 セキュリティスペシャリストの問題を演習モードで解く