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_64aarch64kernelchangelog 中均找不到 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
Copyright (C) CESTC Com.

CVE-2022-0847-DirtyPipe-Exploit相关推荐

  1. Python 中少为人知的 10 个安全陷阱

    作者:Dennis Brinkrolf 译者:豌豆花下猫@Python猫 原题:10 Unknown Security Pitfalls for Python 英文:https://blog.sona ...

  2. 爬取--- https://www.exploit-db.com/ 下载POC较完善的代码【2】

    OK 1,先进行爬取基础信息! 运行程序:[通过生成的CVE列表,多生成几个文件.后面会有用处的!] cve编号写入cve_num0.json成功![备份] cve编号写入cve_num1.json成 ...

  3. 警惕!Python 中少为人知的 10 个安全陷阱!

    作者:Dennis Brinkrolf 译者:豌豆花下猫@Python猫 原题:10 Unknown Security Pitfalls for Python 英文:https://blog.sona ...

  4. CVE 2013-2094 exploit 实验笔记

    CVE 2013-2094 exploit 实验笔记 1. links 2. 实验流程 2.1 安装ubuntu64 虚拟机 2.2 编译 2.6.38 内核 2.3 开始exploitation 3 ...

  5. 前一千页CVE 对应影响产品信息 JSON文件格式转成HTML

    第一部分代码: 下面代码不完整.完整代码:密码myname import os import json import re def show_files(path, all_files):global ...

  6. MonoCon:使用辅助学习的单目3D目标检测框架(AAAI 2022)

    作者丨慕弋云子@知乎 来源丨https://zhuanlan.zhihu.com/p/455897310 编辑丨3D视觉工坊 本文已被收录在单目3D目标检测的综述文章中.如果你对单目3D目标检测的相关 ...

  7. 给kali的metasploit下添加一个新的exploit

    首先在/usr/share/metasploit-framework/modules/exploits/目录下新建一个自定义文件夹,例如fwdtest cp example.rb ./fwdtest/ ...

  8. cve 爬虫_好用的Google漏洞爬虫:Google Mass Explorer

    *本文中涉及到的相关漏洞已报送厂商并得到修复,本文仅限技术研究与讨论,严禁用于非法用途,否则产生的一切后果自行承担. 这是一款基于谷歌搜索引擎的自动化爬虫. 爬虫介绍 爬虫大体机制就是:先进行一次谷歌 ...

  9. Malware FAQ: How does the Ptrace exploit work o...

    2019独角兽企业重金招聘Python工程师标准>>> Author: Sangram Gayal This paper covers an internal incident th ...

  10. vmware 蓝屏_网络安全小百科--利用微软CVE 2019-0708漏洞让对方系统蓝屏死机

    漏洞背景: Windows 系列服务器于 2019 年 5 月 15 号,被爆出高危漏洞,该服务器漏洞利用方式是通过远程桌面端口3389进行攻击的.这个漏洞是今年来说危害严重性最大的漏洞,跟之前的永恒 ...

最新文章

  1. 对比学习系列论文SDCLR(二)-Self-Damaging Contrastive Learning
  2. 权威认可!PolarDB-X高分通过中国信通院《分布式事务数据库稳定性专项评测》
  3. SAP UI5 应用开发教程之六十七 - 基于 OData V4 的 SAP UI5 List-Detail(列表-明细)布局的实现方式试读版
  4. 教徒计划出品:升级ESXI41-ESXI5
  5. Navicat Premium 未保存和已执行SQL存储位置
  6. iOS 国际化多语言设置 xcode7
  7. php json 默认值,php操作JSON格式数据的实现代码
  8. 判断二叉树是否对称的代码
  9. 【JavaScript】我所知道的JavaScript
  10. tomcat相关问题汇总
  11. 海思uboot启动流程详细分析(二)
  12. IOS 获取.plist文件的数据
  13. 蚌埠电大计算机课心得体会,电大心得体会
  14. Windows中cmd命令启动Oracle数据
  15. jsmind源码初探
  16. Vue-组件自定义事件-绑定-解绑
  17. 三国志战略版:【满红杀手】名将卡包新武将_许攸分析
  18. Android 给WebView设置UA
  19. redis资源未释放引发的问题
  20. 图像处理之计算任意点与轮廓点集中距离最近的点坐标

热门文章

  1. Maven-pon.xml模板(ssm自用)持续更新
  2. AcWing 204. 表达整数的奇怪方式 / Strange Way To Express Integers
  3. vue的实例属性$options
  4. 记录一次 Ubuntu 16.04 path 错误救机
  5. mongodb 权限设置--用户名、密码、端口
  6. MongoDB初试备份及恢复
  7. 转:获得数据库自增长ID(ACCESS)与(SQLSERVER)
  8. php 上传100m文件,PHP向MySQL中insert100M以上的文件
  9. pycharm安装javascript插件_IDEA必备插件系列-Rainbow
  10. fastica和pca区别_PCA与ICA