LinuCレベル3 セキュリティスペシャリスト アクセスおよび権限制御の強化 問48
アクセスおよび権限制御の強化/システムコールの制御eBPFプログラムの構成要素やBPFマップの特性に関する説明として、正しいものをすべて選べ。
当サイトのオリジナル問題(LinuCレベル3 セキュリティスペシャリストの出題範囲「アクセスおよび権限制御の強化」に対応。実際の試験問題ではありません)
- ABPF_MAP_TYPE_HASH はキーと値のペアをハッシュテーブルで管理するマップ型で、IPアドレスごとのパケット統計など多様な用途に使われる
- BeBPFプログラムはユーザー空間から直接カーネルメモリを任意に読み書きするために設計されており、制限なくカーネル内部にアクセスできる
- CBPFマップはeBPFプログラム(カーネル側)とユーザー空間プログラムが共有できる永続的なデータ構造で、bpf() システムコールでユーザー空間から読み書きできる
- DeBPFプログラムはカーネルモジュールと同等であり、カーネルの任意の機能を無制限に変更・置き換えできる
正解:A、C
解説
BPFマップは、eBPFプログラム(カーネル側)とユーザー空間のプログラムが共有できる永続的なデータ構造です。BPF_MAP_TYPE_HASHはハッシュテーブル型マップで、統計収集などに広く使われます。ユーザー空間からは bpf() システムコールのBPF_MAP_LOOKUP_ELEMやBPF_MAP_UPDATE_ELEMでアクセスできます。eBPFプログラムはカーネル内の検証器(verifier)で安全性を確認されており、任意のカーネルメモリへのアクセスや機能変更はできません。
選択肢ごとの解説
- A正しい。BPF_MAP_TYPE_HASHはeBPFの標準的なマップ型の1つで、任意のキーと値のペアをハッシュテーブルで保持する。IPアドレスごとのカウンタなどネットワーク監視から一般的な統計収集まで幅広く使われる。
- B誤り。eBPFプログラムはカーネル内の検証器によって安全性が確認されており、任意のカーネルメモリへの無制限なアクセスは禁止されている。アクセスできるメモリはkprobeやtracepointのコンテキストなど、許可された範囲に限られる。
- C正しい。BPFマップはカーネル側のeBPFプログラムとユーザー空間プログラムが共有できる永続的なデータ構造で、bpf() システムコールのBPF_MAP_LOOKUP_ELEM・BPF_MAP_UPDATE_ELEM等のコマンドによってユーザー空間から直接アクセスできる。
- D誤り。eBPFプログラムはカーネルモジュールとは異なり、実行前に検証器で安全性が確認され実行できる操作が制限される。定義されたフック(kprobe、tracepoint、XDP等)にのみアタッチでき、カーネルの任意の機能を無制限に変更することはできない。