CVE-2022-0847
约 2 分钟阅读
- Dirty Pipe - Linux 管道缓冲区标志未正确初始化,导致只读文件的页缓存可被覆盖
- 公开披露:2022-03-07,发现者 Max Kellermann
- 攻击者需要本地执行能力及目标文件的读权限,无需文件写权限
- 严重性:CVSS 3.1
7.8 High(CISA-ADP)CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
- CWE:CWE-665(初始化不当,Red Hat CNA)
成因与影响
copy_page_to_iter_pipe()、push_pipe()创建管道缓冲区时未正确初始化pipe_buffer.flags- 残留的
PIPE_BUF_FLAG_CAN_MERGE使后续管道写入可能合并到文件页缓存,而不是独立的管道数据页 - 可篡改其他进程读到的文件内容,进一步通过特权程序提升权限
- 修改首先发生在页缓存,不一定持久写入磁盘;磁盘文件未变化也不能据此认定未受攻击
- 只读挂载、immutable 文件属性也不能阻止这种页缓存写入
影响范围与修复
- 公开利用路径从 Linux
5.8起成立;标志初始化缺陷更早存在,但5.8的合并逻辑使其可被这样利用
| 上游分支 | 首个修复版本 |
|---|---|
| 5.16 | 5.16.11 |
| 5.15 | 5.15.25 |
| 5.10 | 5.10.102 |
- 上述稳定版本于 2022-02-23 发布;发行版包应按厂商回补公告判断
- 更新实际运行的内核并重启;容器共享宿主机内核,更新容器用户空间软件包不能修复宿主机漏洞
- 重启可能清除被修改的页缓存,但启动到仍有漏洞的内核不能消除风险
利用限制
- 需要能读取目标文件
- 单次覆盖不能从内存页边界开始,也不能跨越页边界
- 不能利用这一写入机制扩大文件长度
- 与 Dirty COW笔记CVE-2016-5195Dirty COW - Linux 写时复制处理中的竞态条件,可导致本地权限提升 · COW / Copy-on-Write / 写时复制 · 公开披露:2016-10-19(Red Hat 公告);2016 年 10 月已发现实际利用 · 攻击者需要能够在目标系统运行本地程序,无需目标文件的写权限打开:/notes/security/cve/2016-5195 不同,公开的 Dirty Pipe 利用路径不依赖抢占竞态窗口
PoC
- Max Kellermann 的原始披露内含 C 语言文件覆写 PoC,可用于观察对只读文件页缓存的修改
- 用可丢弃的测试文件和页内偏移观察现象;目标需要可读,仍受前述页边界与文件长度限制
- 原理示意:
只读文件页 --splice--> 管道缓冲区引用
|
+-- 写入标记数据
正常:标记进入管道自己的数据页,文件内容不变
漏洞:残留的合并标志使标记写入源文件页缓存- 关键观察是源文件内容被影响;向管道成功写入数据本身不能证明漏洞
- 页缓存污染可能影响其他读取同一文件的进程;不应把没有磁盘持久变化当成无副作用
参考
- 发现者披露:The Dirty Pipe Vulnerability - 含原理分析、文件覆写 PoC 和限制条件
- CVE 官方记录
- NVD CVE-2022-0847链接nvd.nist.gov/vuln/detail/CVE-2022-0847Dirty Pipe - Linux 管道缓冲区标志未正确初始化,导致只读文件的页缓存可被覆盖 · 公开披露:2022-03-07,发现者 Max Kellermann · 攻击者需要本地执行能力及目标文件的读权限,无需文件写权限 · 严重性:CVSS 3.1 (CISA-ADP)笔记:CVE-2022-0847
关联信息
反向链接、本文链接的其他页面和外部资料。
反向链接
- CVE-2016-5195笔记 · Dirty Pipe
Dirty COW - Linux 写时复制处理中的竞态条件,可导致本地权限提升 · COW / Copy-on-Write / 写时复制 · 公开披露:2016-10-19(Red Hat 公告);2016 年 10 月已发现实际利用 · 攻击者需要能够在目标系统运行本地程序,无需目标文件的写权限
站内链接
- CVE-2016-5195笔记 · Dirty COW
Dirty COW - Linux 写时复制处理中的竞态条件,可导致本地权限提升 · COW / Copy-on-Write / 写时复制 · 公开披露:2016-10-19(Red Hat 公告);2016 年 10 月已发现实际利用 · 攻击者需要能够在目标系统运行本地程序,无需目标文件的写权限
参考资料
其他外链3 条
- dirtypipe.cm4all.comdirtypipe.cm4all.com/
- nvd.nist.gov/vuln/detail/CVE-2022-0847nvd.nist.gov/vuln/detail/CVE-2022-0847
- www.cve.org/CVERecord?id=CVE-2022-0847www.cve.org/CVERecord?id=CVE-2022-0847