本文来自每天一个入狱小技巧
简介
这是 CVE-2022-0847 的故事,它是自 5.8 以来 Linux 内核中的一个漏洞,它允许覆盖任意只读文件中的数据。这会导致权限提升,因为非特权进程可以将代码注入根进程。
它类似于CVE-2016-5195 “Dirty Cow”,但更容易被利用。
该漏洞已 在 Linux 5.16.11、5.15.25 和 5.10.102 中修复。
原理
在我的第一个漏洞利用(我用于 bisect 的“writer”/“splicer”程序)中,我假设这个 bug 只能在特权进程写入文件时被利用,并且它取决于时间。
当我意识到真正的问题是什么时,我能够大大扩大漏洞:即使在没有写入器的情况下,也可以在没有时间限制的情况下,在(几乎)任意位置使用任意数据覆盖页面缓存. 限制是:
-
攻击者必须具有读取权限(因为它需要将
splice()
页面放入管道) -
偏移量不能在页面边界上(因为该页面的至少一个字节必须已拼接到管道中)
-
写入不能跨越页面边界(因为将为其余部分创建一个新的匿名缓冲区)
-
文件无法调整大小(因为管道有自己的页面填充管理,并且不会告诉页面缓存附加了多少数据)
要利用此漏洞,您需要:
-
创建管道。
-
用任意数据填充管道(
PIPE_BUF_FLAG_CAN_MERGE
在所有环条目中设置标志)。 -
排干管道(在环上的所有实例中设置标志)。
struct pipe_buffer
struct pipe_inode_info
-
将目标文件(以 开头
O_RDONLY
)中的数据从目标偏移之前的位置拼接到管道中。 -
将任意数据写入管道;此数据将覆盖缓存的文件页面,而不是创建新的异常,因为已设置。
struct pipe_buffer
PIPE_BUF_FLAG_CAN_MERGE
为了让这个漏洞更有趣,它不仅可以在没有写权限的情况下工作,它还可以用于不可变文件、只读 btrfs 快照和只读挂载(包括 CD-ROM 挂载)。这是因为页面缓存始终是可写的(由内核),并且写入管道从不检查任何权限。
影响版本
Linux kali 5.10.0-kali7-amd64 #1 SMP Debian 5.10.28-1kali1 (2021-04-12) x86_64 GNU/Linux
复现
时间线
-
2021-04-29:关于文件损坏的第一个支持票
-
2022-02-19:文件损坏问题被确定为 Linux 内核错误,结果证明这是一个可利用的漏洞
-
2022-02-20:向Linux 内核安全团队发送错误报告、漏洞利用和补丁
-
2022-02-21:在 Google Pixel 6 上重现错误;发送给 Android 安全团队的错误报告
-
2022-02-21: 按照 Linus Torvalds、Willy Tarreau 和 Al Viro 的建议,将补丁发送到 LKML(不含漏洞详细信息)
-
2022-02-23:带有我的错误修复的Linux稳定版本 (5.16.11、5.15.25、5.10.102)
-
2022-02-24:Google 将我的错误修复合并到 Android 内核中
-
2022-02-28:通知linux-distros 邮件列表
-
2022-03-07:公开披露
exp下载
公众号后台回复20220308获取下载链接
参考链接
https://github.com/Arinerron/CVE-2022-0847-DirtyPipe-Exploit
https://github.com/imfiver/CVE-2022-0847
https://dirtypipe.cm4all.com/
本文最终解释权归本文作者所有!!!
任何公众号场、本项目涉及的任何工具,仅用于商业商业用途,不能保证其合法性和使用性,并能用于研究项目中的应用,目标和有效的实施情况自己判断;
文章、项目内场所有资源文件,杜绝任何靶本公众号、自媒体进行形式的擅自转载、发布
公众对脚本及任何概不负责包括不由任何脚本错误导致的工具损失或损害及任何法律责任;
直接使用本或公众发布的技术、靶场、文章项目中涉及的脚本工具,但在某些行为不符合任何国家/地区或相关地区的情况下进行传播时,引发的隐私或其他任何法律问题的后果概不负责;
如果任何单位或个人认为项目或文章的内容可能侵犯其权利,则应及时通知并证明其身份,证明我们将在收到证明文件后删除相关内容;
以方式或使用此项目的任何人或直接使用项目的直接用户都应仔细阅读此声明;
本公众号保留更改或补充,免责随时声明的权利;
访问本公众号的任何文章或项目,请您立即接受此免责声明。
您在本声明未发出之时,或者使用访问已接受此声明,请查看本公众号。
此致
由于、利用的信息而造成的任何或直接的此文传播后果,均由用户本人负责,作者不承担任何直接责任。
一切法律后果均由攻击者承担!!!
日站不规范,亲人两行泪!!!
日站不规范,亲人两行泪!!!
日站不规范,亲人两行泪!!!
原文始发于微信公众号(阿乐你好):CVE-2022-0847linux内核提权漏洞复现/原理讲解
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论