漏洞描述
组件介绍
Linux Netfilter 是一个在 Linux 内核中的网络数据包处理框架,也称作 iptables,它可以通过各种规则和过滤器,基于数据包的来源、目标地址、协议类型、端口号等信息,控制网络流量和数据包的转发和处理,是 Linux 系统网络安全性和可靠性的重要组成部分。
漏洞描述
Linux内核的Netfilter子系统在处理批量请求更新nf_tables 配置信息时,由于处理匿名集的逻辑存在缺陷,存在释放重利用(UAF) 漏洞。利用该漏洞可实现对内核内存的任意读写,具有CAP_NET_ADMIN权限的本地用户可利用该漏洞提升至权限至ROOT级别
漏洞影响
-
评级:高危
-
影响版本:v5.1-rc1 <= Linux Kernel <= 6.3.1
-
不受影响版本:Linux kernel > 6.3.1 Linux kernel < 5.1-rc1
利用条件
1、用户认证:需要
2、触发方式:本地
风险分析
CVE-2023-32233利用条件算是比较苛刻,但是一旦满足利用条件就会获取到root权限的比较严重的漏洞,但是不属于远程利用类,且对基本权限有一定要求,涉及的面不是非常广泛。
漏洞复现
系统环境: Ubuntu 23.04,Linux Kernel版本:6.2.0-20;当前用户id=1001(用户需要有sudo权限)
EXP下载地址:https://github.com/Liuk3r/CVE-2023-32233
执行以下的命令安装编译环境
sudo apt install gcc libmnl-dev libnftnl-dev
运行以下命令来构建POC二进制文件
gcc -Wall -o exploit exploit.c -lmnl -lnftnl
执行 ./exploit
运行./exploit
可能会报这个错误,重新执行一下./exploit
就可以了
成功获得root权限
应对措施:
1.禁用用户命名空间
通过将 user.max_user_namespaces 设置为 0 来禁用用户命名空间:
使用普通用户验证是否禁用成功
返回:unshare failed: No space left on device
,禁用成功
解除禁用的方法就是设置user.max_user_namespaces
大于 0
再次利用漏洞提权,提权失败,提示设备没有空间
2.升级系统内核
下载内核 Index of /~kernel-ppa/mainline
根据官方提示,该漏洞影响范围v5.1-rc1 <= Linux Kernel <= 6.3.1,修复漏洞需要下载该范围之外的版本,本次下载6.3.5
cd 到安装包的目录
dpkg -i 安装包名字 #安装内核,并重启
重启后查看内核,安装成功
再次利用exp漏洞文件提权,报错,提权失败