過去問ドリル

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

アクセスおよび権限制御の強化/Linux Capabilities による権限制御

Linux Capabilitiesのケーパビリティセットに関する説明として適切なものはどれか。

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

正解:C

解説

バウンディングセット(bounding set)は、execve 時にファイルケーパビリティの許可ビット(file permitted)との AND を取ることで、新しいプロセスが許可セットに取り込めるケーパビリティを制限します。バウンディングセットにないケーパビリティは、ファイルの許可ビットが立っていても実行後の許可セットに入りません。許可セットのケーパビリティは実効セットに自動追加されるわけではなく、プロセスが cap_set_proc() 等で明示的に設定します。アンビエントセットはsetUID実行ファイルを経由するとクリアされます。継承セットから実効セットへの昇格には、実行ファイルの実効ビットと継承ビットが揃う必要があります。

選択肢ごとの解説

  • A誤り。許可セットはプロセスが実効セットに設定できるケーパビリティの上限を定めるが、自動的に実効セットへ追加されるわけではない。プロセスが cap_set_proc() などのAPIを使い明示的に実効セットへ設定する。
  • B誤り。アンビエントセット(ambient set)はsetUIDビットが立った実行ファイルを経由するとクリアされる。アンビエントセットが子プロセスに引き継がれるのは、setUIDビットもファイルケーパビリティも持たない通常の実行ファイルを介したときである。
  • C正しい。バウンディングセット(bounding set)は execve 時にファイルの許可ビットとのANDを通して新プロセスが許可セットに取り込めるケーパビリティを上限付けする。バウンディングセットにないケーパビリティはファイルケーパビリティで付与できない。
  • D誤り。継承セット(inheritable set)は execve をまたいで引き継がれるセットだが、それが自動的に新プロセスの実効セットに加わるわけではない。実効セットへの昇格には実行ファイルの実効ビットとファイルの継承ビットとの積が必要である。
LinuCレベル3 セキュリティスペシャリストの問題を演習モードで解く