0
点赞
收藏
分享

微信扫一扫

漏洞复现报告:CVE-2022-0847 Linux 内核漏洞

墨春 2023-08-04 阅读 23


1.1 漏洞信息表

漏洞名称

Linux kernel安全漏洞

发布时间


202237

漏洞编号

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进行搭建

漏洞复现报告:CVE-2022-0847 Linux 内核漏洞_linux



方法一:直接加载漏洞环境(推荐)

git clone https://github.com/brant-ruan/metarget.git

漏洞复现报告:CVE-2022-0847 Linux 内核漏洞_linux_02


cd metarget/

pip3 install -r requirements.txt

漏洞复现报告:CVE-2022-0847 Linux 内核漏洞_git_03


sudo ./metarget cnv install cve-2022-0847

漏洞复现报告:CVE-2022-0847 Linux 内核漏洞_git_04


漏洞复现报告:CVE-2022-0847 Linux 内核漏洞_git_05


重启之后内核版本就是5.8了

漏洞复现报告:CVE-2022-0847 Linux 内核漏洞_ubuntu_06



方法二:手工提升或降低版本内核

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

漏洞复现报告:CVE-2022-0847 Linux 内核漏洞_ubuntu_07


wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.8/amd64/linux-headers-5.8.0-050800-generic_5.8.0-050800.202008022230_amd64.deb

漏洞复现报告:CVE-2022-0847 Linux 内核漏洞_linux_08


wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.8/amd64/linux-image-unsigned-5.8.0-050800-generic_5.8.0-050800.202008022230_amd64.deb

漏洞复现报告:CVE-2022-0847 Linux 内核漏洞_linux_09


wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.8/amd64/linux-modules-5.8.0-050800-generic_5.8.0-050800.202008022230_amd64.deb

漏洞复现报告:CVE-2022-0847 Linux 内核漏洞_git_10


下载完毕后进行安装sudo dpkg -i *.deb

漏洞复现报告:CVE-2022-0847 Linux 内核漏洞_git_11

重启之后内核版本成功升级为5.8.0

漏洞复现报告:CVE-2022-0847 Linux 内核漏洞_git_12



2.2 POC漏洞验证

新建一个普通用户只读文件flag

漏洞复现报告:CVE-2022-0847 Linux 内核漏洞_ubuntu_13


普通用户是写不进数据的

漏洞复现报告:CVE-2022-0847 Linux 内核漏洞_ubuntu_14


运行POC,成功覆写了flag文件

漏洞复现报告:CVE-2022-0847 Linux 内核漏洞_linux_15





三、漏洞利用实践

EXP 1:

下载EXP

git clone https://github.com/Arinerron/CVE-2022-0847-DirtyPipe-Exploit

cd CVE-2022-0847-DirtyPipe-Exploit

漏洞复现报告:CVE-2022-0847 Linux 内核漏洞_git_16


编译并执行程序

漏洞复现报告:CVE-2022-0847 Linux 内核漏洞_git_17


root的密码被更改为aaron(可在exp中将aaron改为自己想设置的密码)

漏洞复现报告:CVE-2022-0847 Linux 内核漏洞_ubuntu_18



EXP 2

下载exp

漏洞复现报告:CVE-2022-0847 Linux 内核漏洞_git_19


这个exp需要事先找到一个具有SUID权限的可执行文件,然后利用这个文件进行提权使用find / -perm -u=s -type f 2>/dev/null找到这类文件

漏洞复现报告:CVE-2022-0847 Linux 内核漏洞_ubuntu_20


编译exp并进行利用

漏洞复现报告:CVE-2022-0847 Linux 内核漏洞_git_21


提权成功

漏洞修复实践

4.1 修复方案1:临时修复方案

在对应的涉及到pipe_buffer->flags的代码添加上将flag置0的代码,除了copy_page_to_iter_pipe以外在push_pipe中也补充上置0的代码:

漏洞复现报告:CVE-2022-0847 Linux 内核漏洞_ubuntu_22


4.2 修复方案2:标准解决方案

linux内核至如下版本:Linux 5.16.11、5.15.25 和 5.10.102

https://xz.aliyun.com/t/11016

https://dirtypipe.cm4all.com/










举报

相关推荐

0 条评论