Seccomp-BPF(せこむぴーえふ)
最終更新:2026/4/28
Seccomp-BPFは、システムコールを制限することで、プログラムのセキュリティを強化するLinuxカーネルの機能である。
ポイント
Seccomp-BPFは、コンテナ技術やサンドボックス環境において、攻撃対象領域を削減し、セキュリティリスクを低減するために利用される。
Seccomp-BPFとは
Seccomp-BPF (Secure Computing Mode - Berkeley Packet Filter) は、Linuxカーネルに組み込まれたセキュリティ機構であり、プロセスが実行可能なシステムコールを制限することで、セキュリティを向上させます。これにより、悪意のあるコードがシステムに損害を与える可能性を低減できます。
歴史
Seccompの初期バージョンは2005年に登場し、その後、BPF (Berkeley Packet Filter) 技術との統合により、より柔軟で強力なSeccomp-BPFへと進化しました。BPFの導入により、システムコールのフィルタリングルールを動的に変更できるようになり、より複雑なセキュリティポリシーを実装することが可能になりました。
仕組み
Seccomp-BPFは、プロセスがシステムコールを実行する際に、事前に定義されたフィルタリングルールに基づいて、そのシステムコールを許可するかどうかを判断します。フィルタリングルールは、BPFプログラムとして記述され、カーネルによって実行されます。BPFプログラムは、システムコールの引数や状態を検査し、許可または拒否の決定を行います。
利用例
- コンテナセキュリティ: Dockerなどのコンテナ技術において、コンテナ内のプロセスがホストシステムにアクセスするのを制限するために使用されます。
- サンドボックス: Webブラウザなどのアプリケーションにおいて、悪意のあるコードがシステム全体に影響を与えるのを防ぐために使用されます。
- 特権分離: プロセスを最小限の権限で実行するために使用されます。
設定方法
Seccomp-BPFの設定は、seccomp()システムコールや、libseccompライブラリを使用して行われます。また、Dockerなどのコンテナランタイムは、Seccomp-BPFを自動的に設定する機能を提供しています。
注意点
Seccomp-BPFの設定を誤ると、プログラムが正常に動作しなくなる可能性があります。そのため、設定を行う際には、十分な注意が必要です。