BPF LSM
BPF LSM 是什么?
BPF LSMLinux 安全模块,允许经过验证的 eBPF 程序挂载到 LSM 钩子,对系统调用、文件、套接字与 capability 实施自定义的强制访问控制。
BPF LSM(BPF Linux Security Module)在 Linux 5.7(2020 年)合入,由 Google 的 KP Singh 等人主导。Linux 安全模块框架在内核中定义了数百个安全钩子(inode_permission、socket_connect、bprm_check、file_open、capable 等),传统 LSM 如 SELinux、AppArmor、Smack、Tomoyo 都基于此实现。BPF LSM 让经过验证的 eBPF 程序在运行时挂到这些同样的钩子上,从而把策略作为编译后的字节码下发,而无需修补内核。Cilium Tetragon、KubeArmor、bpfd 等工具利用 BPF LSM 实施 MAC 控制,例如禁止在容器中对 /tmp 下的二进制执行 execve、阻止对敏感进程的 ptrace,同时支持热加载和 cgroup 感知。它是对 SELinux、AppArmor 的补充而非替代。
● 示例
- 01
通过 KubeArmor 加载 BPF LSM 程序,在 Kubernetes Pod 中拒绝对非 /usr/bin 二进制的 execve。
- 02
使用 Tetragon 在 bpf/security_ptrace_access_check 钩子上拒绝对加固进程的 ptrace 尝试。
● 常见问题
BPF LSM 是什么?
Linux 安全模块,允许经过验证的 eBPF 程序挂载到 LSM 钩子,对系统调用、文件、套接字与 capability 实施自定义的强制访问控制。 它属于网络安全的 身份与访问 分类。
BPF LSM 是什么意思?
Linux 安全模块,允许经过验证的 eBPF 程序挂载到 LSM 钩子,对系统调用、文件、套接字与 capability 实施自定义的强制访问控制。
BPF LSM 是如何工作的?
BPF LSM(BPF Linux Security Module)在 Linux 5.7(2020 年)合入,由 Google 的 KP Singh 等人主导。Linux 安全模块框架在内核中定义了数百个安全钩子(inode_permission、socket_connect、bprm_check、file_open、capable 等),传统 LSM 如 SELinux、AppArmor、Smack、Tomoyo 都基于此实现。BPF LSM 让经过验证的 eBPF 程序在运行时挂到这些同样的钩子上,从而把策略作为编译后的字节码下发,而无需修补内核。Cilium Tetragon、KubeArmor、bpfd 等工具利用 BPF LSM 实施 MAC 控制,例如禁止在容器中对 /tmp 下的二进制执行 execve、阻止对敏感进程的 ptrace,同时支持热加载和 cgroup 感知。它是对 SELinux、AppArmor 的补充而非替代。
如何防御 BPF LSM?
针对 BPF LSM 的防御通常结合技术控制与运营实践,详见上方完整定义。
BPF LSM 还有哪些其他名称?
常见的别称包括: LSM BPF, eBPF LSM。
● 相关术语
- defense-ops№ 367
eBPF 安全
在 Linux 内核中运行扩展 BPF(eBPF)程序,为进程、网络和系统调用提供深度可观测性与策略执行的安全技术。
- identity-access№ 615
Linux Capabilities
由 POSIX.1e 草案定义的 Linux 内核机制,将无所不能的 root 权限拆分为 40 多种独立的能力,可分别授予进程和文件。
- identity-access№ 585
内核态与用户态
现代操作系统强制实施的两种 CPU 特权级别:内核态(管理员级、Ring 0)拥有完整硬件访问权限,用户态(Ring 3)被限制在自己的地址空间并只能执行有限指令。
- cryptography№ 1006
SELinux
由美国国家安全局开发的安全增强型 Linux,通过 LSM 钩子与类型强制策略实现强制访问控制(MAC)框架。
- cryptography№ 053
AppArmor
基于路径的 Linux 强制访问控制系统,Ubuntu 和 SUSE 用其作为 SELinux 的简化替代方案,用于限制单个程序。
- cloud-security№ 600
Kubernetes 安全
对 Kubernetes 集群(API Server、控制平面、节点、工作负载与网络)的保护,防止配置错误、被攻陷以及横向移动。