LinuCレベル3 セキュリティスペシャリスト アクセスおよび権限制御の強化 問12
アクセスおよび権限制御の強化/システムコールの制御eBPFの基本的な仕組みに関する説明として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル3 セキュリティスペシャリストの出題範囲「アクセスおよび権限制御の強化」に対応。実際の試験問題ではありません)
- ABPFプログラムはカーネルモジュールとしてinsmodで読み込まれ、署名があれば検証なしで動作する
- BBPFプログラムはカーネル内の検証器で安全性を確認されてから、トレースポイント等のフックで動く
- CBPFプログラムはユーザー空間で動作し、ptraceで対象プロセスのシステムコールを横取りして監視する
- DBPFプログラムを新しく読み込んで有効にするには、カーネルの再構築とシステムの再起動が必要になる
正解:B
解説
eBPFは、ユーザー空間から読み込んだ小さなプログラム(BPFプログラム)をカーネル内で実行する仕組みです。読み込み時にカーネル内の検証器(verifier)が、無限ループや不正なメモリアクセスが無いこと等を確認し、通過したものだけが(多くの場合JITコンパイルされて)kprobe・トレースポイント・ネットワークのフック等に接続されて動きます。再起動やカーネルモジュールを使わずに、システムコールの監視・トレーシング・セキュリティ制御などを追加できるのが特徴で、bpftraceやBCCといったツールがこれを利用しています。
選択肢ごとの解説
- A誤り。BPFプログラムはbpf(2)システムコールで読み込まれ、カーネルモジュールではありません。署名の有無にかかわらず検証器による確認を受けます。
- B正しい。検証器で安全性が確認されたプログラムだけが、kprobeやトレースポイント等のフックに接続されてカーネル内で実行されます。
- C誤り。BPFプログラムはカーネル内で実行されます。ptraceでシステムコールを横取りするのはstraceなどの方式です。
- D誤り。eBPFは実行中のカーネルへ動的に読み込めるのが利点で、再構築や再起動は不要です。