1.1 漏洞信息表
漏洞名称 | Linux kernel安全漏洞 |
发布时间 | 2022年3月7日 |
漏洞编号 | CVE-2022-0847 |
威胁类型 | 其他 |
危害级别 | 高危 |
影响版本 | Linux Kernel 5.8-5.16.11、5.8-5.15.25、5.8-5.10.102 |
漏洞描述 | 产品介绍:Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。是一个一体化内核(monolithic kernel)系统,提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件,不是一套完整的操作系统。 漏洞概述:Linux kernel存在安全漏洞,该漏洞源于新管道缓冲区结构的“flag”变量在Linux内核中的copy_page_to_iter_pipe和push_pipe函数中缺乏正确初始化。非特权本地用户利用该漏洞可以提升权限至root。 危害说明: |
漏洞指纹 | 常用端口/协议: 请求参数/关键路径(漏洞入口): |
漏洞验证与利用 | POC: EXP: 集成工具: |
修复建议 | 正式修复方案: 临时修复方案: |
参考链接 | 文章标题:链接 |
2.1 漏洞靶机搭建
使用Ubuntu18.04 内核版本5.4进行搭建
方法一:直接加载漏洞环境(推荐)
git clone https://github.com/brant-ruan/metarget.git
cd metarget/
pip3 install -r requirements.txt
sudo ./metarget cnv install cve-2022-0847
重启之后内核版本就是5.8了
方法二:手工提升或降低版本内核
wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.8/amd64/linux-headers-5.8.0-050800_5.8.0-050800.202008022230_all.deb
下载完毕后进行安装sudo dpkg -i *.deb
重启之后内核版本成功升级为5.8.0
2.2 POC漏洞验证
新建一个普通用户只读文件flag
普通用户是写不进数据的
运行POC后,成功覆写了flag文件
三、漏洞利用实践
EXP 1:
下载EXP
git clone https://github.com/Arinerron/CVE-2022-0847-DirtyPipe-Exploit
cd CVE-2022-0847-DirtyPipe-Exploit
编译并执行程序
root的密码被更改为aaron(可在exp中将aaron改为自己想设置的密码)
EXP 2:
下载exp
这个exp需要事先找到一个具有SUID权限的可执行文件,然后利用这个文件进行提权使用find / -perm -u=s -type f 2>/dev/null找到这类文件
编译exp并进行利用
提权成功
漏洞修复实践
4.1 修复方案1:临时修复方案
在对应的涉及到pipe_buffer->flags的代码添加上将flag置0的代码,除了copy_page_to_iter_pipe以外在push_pipe中也补充上置0的代码:
4.2 修复方案2:标准解决方案
linux内核至如下版本:Linux 5.16.11、5.15.25 和 5.10.102