CVE-2022-0847-DirtyPipe-Exploit
CVE-2022-0847-DirtyPipe-Exploit
荣涛 2022-03-10
文档修改日志
日期 | 修改内容 | 修改人 | 备注 |
---|---|---|---|
2022-03-10 | 创建 | 荣涛 |
引言
CVE-2022-0847-DirtyPipe-Exploit
普通用户修改root密码的漏洞现状,
影响版本
5.8 <= Linux 内核版本 < 5.16.11 / 5.15.25 / 5.10.102
CentOS-Stream9
x86_64
和aarch64
的kernel
的changelog
中均找不到 CVE-2022-0847
的解决日志。
x86_64
- 5.14.0-39.el9.x86_64 存在漏洞(能复现)
- 5.14.0-70.el9.x86_64 存在漏洞(能复现)
AArch64
- 5.14.0-70.el9.aarch64 不存在漏洞(不能复现,鲲鹏服务器虚拟机测试)
CCLinux 2203
x86_64
- 5.15.13-0.el9.x86_64 存在漏洞(能复现)
AArch64
- 5.15.13-0.el9.aarch64 不存在漏洞(不能复现,双子芯74服务器虚拟机测试)
分析
复现该漏洞代码关键的系统调用总结为:
int pipefd[2];
pipe(pipefd);
fd = open("/etc/passwd", readonly);
splice(fd, &offset, pipefd[1], NULL, 1, 0);
write(pipefd[1], data, data_size);
通过分析源代码,代码版本为 5.10.13(存在漏洞的版本)
首先看系统调用splice(2)
,在复现漏洞中是这么用的,给出代码概要
splice(infd, outfd, len)__do_splice(infd, outfd, len)do_splice(infd, outfd, len)splice_pipe_to_pipe - 如果 infd 和 outfd 都是管道 (略)do_splice_from - 如果 infd 是管道, outfd 不知管道 (略)do_splice_to - 如果 infd 不是管道, outfd 是管道 (CVE-2022-0847复现测试例)in->f_op->splice_read(..., len, ...) - 对应函数 generic_file_splice_read()generic_file_splice_read(len)call_read_iter() - 对应 file->f_op->read_iter() 不同的文件系统不同ext4_file_operations.ext4_file_read_iter()xfs_file_operations.xfs_file_read_iter()xfs_file_read_iter() 如果为xfs文件系统xfs_file_dax_read() - dax (略)xfs_file_dio_aio_read() - aio (略)xfs_file_buffered_aio_read()- 其他 有个追踪点可以用 "trace_xfs_file_buffered_read"generic_file_read_iter() - filemap.c 文件中定义generic_file_buffered_read() - 这将读取一整页 page buffer (关注点)
内核调用栈:
generic_file_read_iter+1
xfs_file_buffered_read+80
xfs_file_read_iter+110
generic_file_splice_read+255
splice_file_to_pipe+179
do_splice+692
__do_splice+222
__x64_sys_splice+148
do_syscall_64+59
entry_SYSCALL_64_after_hwframe+68pagecache_get_page+1
filemap_fault+103
__xfs_filemap_fault+102
__do_fault+54
do_fault+704
__handle_mm_fault+971
handle_mm_fault+197
do_user_addr_fault+443
exc_page_fault+98
asm_exc_page_fault+30
再看对应的write(2)
write(fd, data, data_len)ksys_write(fd, buf, count)vfs_write()file->f_op->write() - 如果不为空,首选执行,xfs 为空 (略)new_sync_write - 如果 file->f_op->write_iter 不为空xfs 对应 xfs_file_write_iter()call_write_iter() - 对应 file->f_op->write_iter()ext4_file_operations.ext4_file_write_iter()xfs_file_operations.xfs_file_write_iter()xfs_file_write_iter()xfs_file_dax_write() - dax (略)xfs_file_dio_aio_write() - aio (略)xfs_file_buffered_aio_write() - 追踪点'trace_xfs_file_buffered_write'iomap_file_buffered_write()iomap_apply()iomap_write_actor()iov_iter_copy_from_user_atomic()iomap_write_end()
调用栈
iomap_write_end+1
iomap_write_actor+238
iomap_apply+269
iomap_file_buffered_write+92
xfs_file_buffered_write+161
new_sync_write+287
vfs_write+475
ksys_write+95
do_syscall_64+59
entry_SYSCALL_64_after_hwframe+68add_to_page_cache_lru+1
pagecache_get_page+518
grab_cache_page_write_begin+29
iomap_write_begin+409
iomap_write_actor+156
iomap_apply+269
iomap_file_buffered_write+92
xfs_file_buffered_write+161
new_sync_write+287
vfs_write+475
ksys_write+95
do_syscall_64+59
entry_SYSCALL_64_after_hwframe+68__page_cache_alloc+1
pagecache_get_page+456
grab_cache_page_write_begin+29
iomap_write_begin+409
iomap_write_actor+156
iomap_apply+269
iomap_file_buffered_write+92
xfs_file_buffered_write+161
new_sync_write+287
vfs_write+475
ksys_write+95
do_syscall_64+59
entry_SYSCALL_64_after_hwframe+68
参考链接
- 复现代码:https://github.com/Arinerron/CVE-2022-0847-DirtyPipe-Exploit
CVE-2022-0847-DirtyPipe-Exploit相关推荐
- Python 中少为人知的 10 个安全陷阱
作者:Dennis Brinkrolf 译者:豌豆花下猫@Python猫 原题:10 Unknown Security Pitfalls for Python 英文:https://blog.sona ...
- 爬取--- https://www.exploit-db.com/ 下载POC较完善的代码【2】
OK 1,先进行爬取基础信息! 运行程序:[通过生成的CVE列表,多生成几个文件.后面会有用处的!] cve编号写入cve_num0.json成功![备份] cve编号写入cve_num1.json成 ...
- 警惕!Python 中少为人知的 10 个安全陷阱!
作者:Dennis Brinkrolf 译者:豌豆花下猫@Python猫 原题:10 Unknown Security Pitfalls for Python 英文:https://blog.sona ...
- CVE 2013-2094 exploit 实验笔记
CVE 2013-2094 exploit 实验笔记 1. links 2. 实验流程 2.1 安装ubuntu64 虚拟机 2.2 编译 2.6.38 内核 2.3 开始exploitation 3 ...
- 前一千页CVE 对应影响产品信息 JSON文件格式转成HTML
第一部分代码: 下面代码不完整.完整代码:密码myname import os import json import re def show_files(path, all_files):global ...
- MonoCon:使用辅助学习的单目3D目标检测框架(AAAI 2022)
作者丨慕弋云子@知乎 来源丨https://zhuanlan.zhihu.com/p/455897310 编辑丨3D视觉工坊 本文已被收录在单目3D目标检测的综述文章中.如果你对单目3D目标检测的相关 ...
- 给kali的metasploit下添加一个新的exploit
首先在/usr/share/metasploit-framework/modules/exploits/目录下新建一个自定义文件夹,例如fwdtest cp example.rb ./fwdtest/ ...
- cve 爬虫_好用的Google漏洞爬虫:Google Mass Explorer
*本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担. 这是一款基于谷歌搜索引擎的自动化爬虫. 爬虫介绍 爬虫大体机制就是:先进行一次谷歌 ...
- Malware FAQ: How does the Ptrace exploit work o...
2019独角兽企业重金招聘Python工程师标准>>> Author: Sangram Gayal This paper covers an internal incident th ...
- vmware 蓝屏_网络安全小百科--利用微软CVE 2019-0708漏洞让对方系统蓝屏死机
漏洞背景: Windows 系列服务器于 2019 年 5 月 15 号,被爆出高危漏洞,该服务器漏洞利用方式是通过远程桌面端口3389进行攻击的.这个漏洞是今年来说危害严重性最大的漏洞,跟之前的永恒 ...
最新文章
- 对比学习系列论文SDCLR(二)-Self-Damaging Contrastive Learning
- 权威认可!PolarDB-X高分通过中国信通院《分布式事务数据库稳定性专项评测》
- SAP UI5 应用开发教程之六十七 - 基于 OData V4 的 SAP UI5 List-Detail(列表-明细)布局的实现方式试读版
- 教徒计划出品:升级ESXI41-ESXI5
- Navicat Premium 未保存和已执行SQL存储位置
- iOS 国际化多语言设置 xcode7
- php json 默认值,php操作JSON格式数据的实现代码
- 判断二叉树是否对称的代码
- 【JavaScript】我所知道的JavaScript
- tomcat相关问题汇总
- 海思uboot启动流程详细分析(二)
- IOS 获取.plist文件的数据
- 蚌埠电大计算机课心得体会,电大心得体会
- Windows中cmd命令启动Oracle数据
- jsmind源码初探
- Vue-组件自定义事件-绑定-解绑
- 三国志战略版:【满红杀手】名将卡包新武将_许攸分析
- Android 给WebView设置UA
- redis资源未释放引发的问题
- 图像处理之计算任意点与轮廓点集中距离最近的点坐标
热门文章
- Maven-pon.xml模板(ssm自用)持续更新
- AcWing 204. 表达整数的奇怪方式 / Strange Way To Express Integers
- vue的实例属性$options
- 记录一次 Ubuntu 16.04 path 错误救机
- mongodb 权限设置--用户名、密码、端口
- MongoDB初试备份及恢复
- 转:获得数据库自增长ID(ACCESS)与(SQLSERVER)
- php 上传100m文件,PHP向MySQL中insert100M以上的文件
- pycharm安装javascript插件_IDEA必备插件系列-Rainbow
- fastica和pca区别_PCA与ICA