過去問ドリル

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

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

x86-64のサーバーで、SystemCallFilter= を設定したsystemdのサービスユニットに、あわせて SystemCallArchitectures=native を指定した。この指定の主な目的として適切なものはどれか。

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

正解:D

解説

x86-64のLinuxでは、ネイティブの64ビットABIに加えて、32ビットx86(i386)やx32のABIでもシステムコールを呼び出せます。ABIごとにシステムコールの番号が異なるため、ネイティブABIだけを想定したフィルタは、別のABIを使われると迂回される可能性があります。SystemCallArchitectures=native を指定すると、ネイティブのアーキテクチャ以外のシステムコールは使えなくなり、この抜け道を塞げます。systemd.exec(5)でも、SystemCallFilterを使う場合はこの設定で非ネイティブのABIを無効にすることが推奨されています。

選択肢ごとの解説

  • A誤り。SystemCallArchitecturesはシステムコールのフィルタの設定で、実行ファイルのビルド対象を検査する機能ではありません。
  • B誤り。未実装のシステムコールに対する戻り値を決める設定ではありません。エラー番号を指定するのは SystemCallErrorNumber= です。
  • C誤り。呼び出しに使う命令や経路を切り替える設定ではありません。どのアーキテクチャ(ABI)のシステムコールを許すかを指定します。
  • D正しい。非ネイティブのABIのシステムコールを禁止して、ネイティブABI向けのフィルタを別のABIで迂回されるのを防ぎます。
LinuCレベル3 セキュリティスペシャリストの問題を演習モードで解く