LinuCレベル3 セキュリティスペシャリスト システム保護と監査 問13
システム保護と監査/カーネルセキュリティとシステムリソース保護コンテナランタイムが、コンテナのルートファイルシステムを切り替える際に、chrootではなくpivot_rootを使う理由として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル3 セキュリティスペシャリストの出題範囲「システム保護と監査」に対応。実際の試験問題ではありません)
- Apivot_rootは新しいルートを指定すると同時に、cgroupによるCPUやメモリの上限も設定するため、手順を1回で済ませられる
- Bpivot_rootは特権を必要とせず、名前空間を作らなくても一般ユーザーのままでルートファイルシステムを切り替えられる
- Cpivot_rootはマウント名前空間のルートマウント自体を入れ替えて古いルートを外せるため、元のルートへ抜け出されにくい
- Dpivot_rootは新しいルートへファイルシステムの内容を複製してから切り替えるため、元のファイルシステムを変更されない
正解: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はファイルの複製を行いません。既にマウントされているファイルシステムを新しいルートとして付け替えるだけです。