CVE-2022-0847:Dirty pipe Linux本地提权漏洞
管道pipe是一种特殊的文件系统,可以将两个独立的程序连接在一起,使得它们能够通过管道来进行数据传输。
利用该漏洞,对创建的管道进行某些操作后,可达到篡改只读文件缓存的目的,当系统读取此文件时,便会访问到被篡改的内容,达到修改无写入权限文件的效果。
Part1 漏洞状态
漏洞细节 | 漏洞POC | 漏洞EXP | 在野利用 |
有 | 有 | 有 | 有 |
Part2 漏洞描述
漏洞名称 | Dirty Pipe Linux本地提权漏洞 |
CVE编号 | CVE-2022-0847 |
漏洞类型 | 本地权限提升 |
漏洞等级 | 7.8 高危 (High) |
公开状态 | 公开 |
漏洞描述 | 通过对创建的pipe进行操作,可篡改只读文件缓存,进行权限提升。 |
时间线 | 2022-3-10 NVD发布 2022-2-21 漏洞被修复 |
影响版本 | Linux内核版本大于5.8,小于5.16.11、5.15.25 和 5.10.102版本 |
Centos8 内核版本5.9.1
Part3 漏洞分析
进行漏洞验证,验证程序运行前为cve账户权限,通过该漏洞,将只读文件/etc/passwd内root账户密码修改为"aaron",成功后使用su root,输入修改后的密码,手动切换至root账户,提升权限。
该漏洞的利用逻辑为:
1.创建管道。
2.通过pipe_write(),将所有页面缓存flag置为"PIPE_BUF_FLAG_CAN_MERGE"。
3.通过pipe_read()清空管道
4.通过splice()将有读权限的目标文件,部分读入管道。
5.使用pipe_write(),向管道内继续写入内容,达到篡改目标文件缓存。
完成后,在访问该文件时,一定时间内,系统会优先访问缓存内的内容,达到越权的目的。该漏洞已于Linux 5.16.11、5.15.25 和 5.10.102版本修复。在Splice()的调用链内,对buf->page置0,避免了此问题发生。
Part4 修复建议
升级Linux内核至5.16.11、5.15.25、5.10.102及以上版本。
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
文章目录
请登录/注册后在FreeBuf发布内容哦