← LeisureLinux 文章索引
LeisureLinux · 微信公众号文章

比“脏牛”更丝滑?深度解析 Linux 提权核弹:DirtyPipe (CVE-2022-0847)

安全/漏洞 阅读原文(微信)↗

摘要: 无需竞态条件,一行代码改写只读文件。带你复盘这个让 Linux 内核开发者"老脸一红"的高危漏洞。

前言

在 Linux 安全圈,提到"脏"(Dirty)这个字眼,大家首先想到的往往是 2016 年那个威震天下的 Dirty COW (脏牛)。

然而,2022 年爆出的 DirtyPipe (CVE-2022-0847),在利用效率和稳定性上,完全超越了它的前辈。它利用了内核管道(Pipe)机制的逻辑缺陷,让普通用户能像"神"一样,无需权限即可改写系统中的任何只读文件。

今天,我们就来深度拆解这个被戏称为"脏牛 2.0"的内核提权核弹。

1. 什么是 DirtyPipe?

DirtyPipe 是由 Max Kellermann 发现的一个 Linux 内核本地提权漏洞。它的"魅力"在于:极其稳定且利用简单。

* 漏洞编号:CVE-2022-0847

* 影响版本:Linux 内核 5.8 及以上版本(直到 5.16.11, 5.15.24, 5.10.102 修复)。

* 杀伤力:CVSS 7.8。本地普通用户可以瞬间篡改 /etc/passwd、/etc/shadow 或是任何二进制程序,直接获取 Root 权限。

2. 核心原理:管道里的"脏东西"

这个漏洞的根源在于 Linux 内核处理 管道缓冲区(Pipe Buffer) 的一个小失误。

在 Linux 中,管道不仅用于进程间通信,还可以通过 splice() 系统调用将文件内容"零拷贝"到管道中。

* 历史原因:从内核 5.8 开始,为了提升性能,引入了一个新标志 PIPE_BUF_FLAG_CAN_MERGE。它告诉内核:这个缓冲区是可合并的。

* 漏洞触发:当攻击者使用 splice() 将一个只读文件的数据拉入管道时,内核错误地保留了上一个操作留下的"可合并"标志。

* 移花接木:接下来,攻击者向管道写入恶意数据。内核看到"可合并"标志,就直接把数据写到了刚才那个只读文件对应的**页面缓存(Page Cache)**里。

结果就是: 虽然你没有写权限,但内核被你欺骗,亲手帮你把恶意数据改写到了只读文件的物理内存页中。

> 比喻: 就像你租了一个公共储物柜(管道),里面放着别人的贵重文件副本(Page Cache)。因为管理员(内核)忘了清理"可写"标签,你可以直接在那个副本上涂鸦,而这个涂鸦会直接同步到原始文件中。

>

3. 与 Dirty COW 的对决

特性 Dirty COW (脏牛) DirtyPipe
[可靠性]{path-to-node="24,1,0,0"} [依赖竞态条件,可能失败]{path-to-node="24,1,1,0"} [逻辑漏洞,100% 成功]{path-to-node="24,1,2,0"}
[复杂度]{path-to-node="24,2,0,0"} [需要复杂的内存操作]{path-to-node="24,2,1,0"} [几行简单的 C 代码即可]{path-to-node="24,2,2,0"}
[性能]{path-to-node="24,3,0,0"} [消耗 CPU 资源进行竞争]{path-to-node="24,3,1,0"} [瞬间完成,无感操作]{path-to-node="24,3,2,0"}
  1. 谁会受到影响?

由于该漏洞存在于 5.8 之后的内核,因此绝大多数现代发行版都曾身陷囹圄:

* Ubuntu 20.04/21.10/22.04

* Debian 11

* Android 设备(特别是使用 5.10+ 内核的新手机)

* 容器环境:如果宿主机内核易受攻击,容器内的进程可能实现逃逸。

5. 修复与防护建议

LeisureLinux 提醒您:安全第一,升级为王!

* 内核升级:这是最根本的解决办法。请确保内核版本高于:

* 5.16.11 / 5.15.24 / 5.10.102

* 临时缓解:如果无法重启升级,可以尝试限制非特权用户使用 user namespaces:

   sysctl -w kernel.unprivileged_userns_clone=0

注意:这可能会导致 Docker 或 Chrome 某些功能异常。

结语

DirtyPipe 的出现再次提醒我们:即便是在像 Linux 内核这样被无数眼睛盯着的开源项目中,哪怕是一个标志位的逻辑错误,也可能引发巨大的安全隐患。

如果你对该漏洞的 Exploit 代码演示或底层技术细节感兴趣,欢迎关注我们的 B 站同名频道:LeisureLinux,我们将通过视频演示带你直观感受这个漏洞的威力。

想了解更多 Linux 黑科技和运维干货?

* 关注公众号:LeisureLinux

* 视频教程:B 站搜索"LeisureLinux"

互动一下: 你在实际生产中遇到过最棘手的 Linux 漏洞是什么?欢迎在评论区留言交流!

本文整理自微信公众号 LeisureLinux 的原创内容(Linux / AI / 安全 硬核技术)。

· 阅读原文(微信公众号)

· 关注公众号 LeisureLinux,第一时间获取技术深度内容。

LeisureLinux 公众号二维码(微信扫一扫关注)