漏洞背景和描述
eBPF(extended Berkeley Packet Filter)是一种可以在 Linux 内核中运行用户编写的程序,而不需要修改内核代码或加载内核模块的技术。简单来说eBPF 让 Linux 内核变得可编程化了。由于内核在执行用户提供的 eBPF 程序前缺乏适当的验证,攻击者可以利用这个漏洞获取root权限。该漏洞是由于 Linux 内核的 BPF 验证器存在一个空指针漏洞,没有对 *_OR_NULL 指针类型进行限制,允许这些类型进行指针运算。攻击者可利用该漏洞在获得低权限的情况下,构造恶意数据执行空指针引用攻击,最终获取服务器 root 权限。
漏洞影响版本
5.8 ≤ Linux Kernel ≤ 5.16(Linux Kernel 5.10.92,5.15.15,5.16.1 不受影响)
漏洞复现
先检测目标系统是否存在漏洞
#查看系统内核版本
uname -a
#查看是否允许低权限用户调用bpf
cat /proc/sys/kernel/unprivileged_bpf_disabled
值为0表示允许非特权用户调用bpf,则可以利用