過去問ドリル

LinuCレベル3 セキュリティスペシャリスト システム保護と監査 問13

システム保護と監査/カーネルセキュリティとシステムリソース保護

コンテナランタイムが、コンテナのルートファイルシステムを切り替える際に、chrootではなくpivot_rootを使う理由として適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル3 セキュリティスペシャリストの出題範囲「システム保護と監査」に対応。実際の試験問題ではありません)

正解:C

解説

chrootはプロセスが参照するルートディレクトリを変えるだけで、元のファイルシステムはマウントされたまま残ります。そのため、CAP_SYS_CHROOT等の権限を持つプロセスは、元のルートへ抜け出せることが知られています。pivot_rootは、呼び出したプロセスのマウント名前空間でルートマウントを新しいものに入れ替え、古いルートを別の場所へ移します。コンテナランタイムはマウント名前空間の中でpivot_rootを実行し、古いルートをアンマウントすることで、ホストのファイルシステムを見えなくします。pivot_rootの実行にはマウント名前空間を所有するユーザー名前空間でのCAP_SYS_ADMINが必要です。

選択肢ごとの解説

  • A誤り。pivot_rootはマウントの入れ替えだけを行うシステムコールで、cgroupによるリソースの制限は別に設定します。
  • B誤り。pivot_rootの実行にはCAP_SYS_ADMINが必要です。一般ユーザーが使う場合も、ユーザー名前空間とマウント名前空間を作ったうえで行います。
  • C正しい。ルートマウント自体を入れ替えて古いルートをアンマウントできるため、chrootのように元のルートが残らず、抜け出されにくくなります。
  • D誤り。pivot_rootはファイルの複製を行いません。既にマウントされているファイルシステムを新しいルートとして付け替えるだけです。
LinuCレベル3 セキュリティスペシャリストの問題を演習モードで解く