漏洞介绍
2022年1月14日,一个编号为CVE-2022-23222的漏洞被公开,这是一个位于eBPF验证器中的漏洞,漏洞允许eBPF程序在未经验证的情况下对特定指针进行运算,通过精心构造的代码,可以实现任意内核内存读写,而这将会造成本地提权的风险。
由于内核在执行用户提供的 eBPF 程序前缺乏适当的验证,攻击者可以利用这个漏洞获取 root 权限。该漏洞是由于 Linux 内核的 eBPF 验证器存在一个空指针漏洞,没有对*_OR_NULL
指针类型进行限制,允许这些类型进行指针运算。攻击者可利用该漏洞在获得低权限的情况下,构造恶意数据执行空指针引用攻击,最终获取服务器 root 权限。
影响版本:Linux kernel 5.8 - 5.16
不受影响版本:Linux kernel 5.10.92, 5.15.15, 5.16.1
这里选择5.9.0作为实验环境
这个漏洞的利用并不容易,需要本地允许非特权用户执行BPF程序。查看普通用户是否能调用ebpf功能,如果不能,需要将值修改为0。
tail /proc/sys/kernel/unprivileged_bpf_disabled
echo 0 >/proc/sys/kernel/unprivileged_bpf_disabled