背景:
针对最近几年频繁呈现的通过 eBPF 进行容器逃逸、rootkit 等攻打,须要思考如何收敛服务器 ebpf 相干权限,避免被黑客利用。
动态计划:
宿主机层面:
- 非 root 用户不赋予 CAP_BPF 及 CAP_SYS_ADMIN
注:3.15 – 5.7 内核不赋予 CAP_SYS_ADMIN 即可 5.8 及当前内核须要同时不存在 CAP_BPF 及 CAP_SYS_ADMIN 权限 -
非 root 用户禁止调用 ebpf 性能 /proc/sys/kernel/unprivileged_bpf_disabled 设置为 1
- 值为 0 示意容许非特权用户调用 bpf
- 值为 1 示意禁止非特权用户调用 bpf 且该值不可再批改,只能重启后批改
- 值为 2 示意禁止非特权用户调用 bpf,能够再次批改为 0 或 1
-
增加签名机制,只有通过签名的 ebpf 程序才能够加载 (参考 MTOS 热补丁验签机制)
容器层面:
- seccomp 设置禁止 bpf 零碎调用
- 容器启动时禁止携带 privilege 参数
- 非 root 用户不赋予 CAP_BPF 及 CAP_SYS_ADMIN
-
非 root 用户禁止调用 ebpf 性能 /proc/sys/kernel/unprivileged_bpf_disabled 设置为 1
动静计划:
- hook bpf / bpf_probe_write_user 等敏感函数,监控主机 bpf 事件
- 枚举曾经加载的 bpf 程序及 map(此种计划只能针对一般 bpf 程序,如果 bpf 程序实现了 rootkit 对本身进行暗藏,那此种计划就无奈失效)
本文由博客一文多发平台 OpenWrite 公布!