CVE-2016-5195
约 2 分钟阅读
- Dirty COW - Linux 写时复制处理中的竞态条件,可导致本地权限提升
- COW / Copy-on-Write / 写时复制
- 公开披露:2016-10-19(Red Hat 公告);2016 年 10 月已发现实际利用
- 攻击者需要能够在目标系统运行本地程序,无需目标文件的写权限
- 严重性:CVSS 3.1
7.0 High(CISA-ADP)CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
成因与影响
- Linux 内存子系统在处理私有只读映射的写时复制时存在竞态,涉及
mm/gup.c与get_user_pages() - 写入本应落到进程的私有副本,攻击者却可能使修改作用于文件支持的内存页,绕过普通文件权限
- 可篡改原本只读的文件或特权程序,进而提升权限;漏洞本身是本地提权,需要先有本地执行能力
- 与 Dirty Pipe笔记CVE-2022-0847Dirty Pipe - Linux 管道缓冲区标志未正确初始化,导致只读文件的页缓存可被覆盖 · 公开披露:2022-03-07,发现者 Max Kellermann · 攻击者需要本地执行能力及目标文件的读权限,无需文件写权限 · 严重性:CVSS 3.1 (CISA-ADP)打开:/notes/security/cve/2022-0847 的结果相似,但根因是写时复制竞态,不能套用 Dirty Pipe 的页边界限制
影响范围与修复
- 影响多个旧 Linux 2.x、3.x、4.x 分支中未包含修复的内核
- Linux
4.8分支首个修复版本为4.8.3;旧稳定分支及发行版另有回补- 不能把所有低于
4.8.3的发行版内核都判为未修复
- 不能把所有低于
- 上游修复:
19be0eaffa3a - 安装发行版提供的已修复内核,重启进入新内核,或使用厂商明确覆盖该 CVE 的热补丁
- 文件设为只读、限制普通文件写权限不能替代内核修复
- 若发现特权程序或系统文件被篡改,还需恢复文件完整性并调查凭据泄露;仅更新内核不能撤销已有修改
PoC
dirtycow/dirtycow.github.io中的dirtyc0w.c是基础文件覆写 PoC,接受目标文件和替换内容- 观察方法:在隔离虚拟机中准备一个测试用户可读但不可写的普通文件,比较普通写入和 PoC 后的文件内容
- 正常权限检查:普通写入被拒绝
- 漏洞现象:PoC 借助私有只读映射及并发操作,仍可改变该文件的可见内容
- 该文件确实会被修改;基础 PoC 验证文件覆写,不自动等同于已获得 root shell
- 项目的 PoCs Wiki 还列有修改特权程序或账户文件的变体,不能将这些变体当作只读检测
参考
- Red Hat Dirty COW 公告
- Dirty COW
- NVD CVE-2016-5195链接nvd.nist.gov/vuln/detail/CVE-2016-5195Dirty COW - Linux 写时复制处理中的竞态条件,可导致本地权限提升 · COW / Copy-on-Write / 写时复制 · 公开披露:2016-10-19(Red Hat 公告);2016 年 10 月已发现实际利用 · 攻击者需要能够在目标系统运行本地程序,无需目标文件的写权限笔记:CVE-2016-5195
- CVE 官方记录
- Debian 安全跟踪链接security-tracker.debian.org/tracker/CVE-2016-5195Dirty COW - Linux 写时复制处理中的竞态条件,可导致本地权限提升 · COW / Copy-on-Write / 写时复制 · 公开披露:2016-10-19(Red Hat 公告);2016 年 10 月已发现实际利用 · 攻击者需要能够在目标系统运行本地程序,无需目标文件的写权限笔记:CVE-2016-5195
- Linux 上游修复
19be0eaffa3aGitHubtorvalds/linux/commit/19be0eaffa3ac7d8eb6784ad9bdbc7d67ed8e619 - dirtycow/dirtycow.github.ioGitHubdirtycow/dirtycow.github.io
- 社区维护的漏洞资料与 PoCs 索引GitHubdirtycow/dirtycow.github.io/wiki/PoCs
- dirtyc0w.cGitHub 文件dirtycow/dirtycow.github.io/dirtyc0w.c - 基础只读文件覆写 PoC
关联信息
反向链接、本文链接的其他页面和外部资料。
反向链接
- CVE-2022-0847笔记 · Dirty COW
Dirty Pipe - Linux 管道缓冲区标志未正确初始化,导致只读文件的页缓存可被覆盖 · 公开披露:2022-03-07,发现者 Max Kellermann · 攻击者需要本地执行能力及目标文件的读权限,无需文件写权限 · 严重性:CVSS 3.1 (CISA-ADP)
- CVE-2026-31431笔记 · Dirty COW
Copy Fail - Linux AFALG 加密接口错误地原地处理共享页,可导致本地权限提升 · CVE 记录公开:2026-04-22;研究者公开披露:2026-04-29 · 上游引入版本:Linux · 严重性:CVSS 3.1 (Linux CNA)
站内链接
- CVE-2022-0847笔记 · Dirty Pipe
Dirty Pipe - Linux 管道缓冲区标志未正确初始化,导致只读文件的页缓存可被覆盖 · 公开披露:2022-03-07,发现者 Max Kellermann · 攻击者需要本地执行能力及目标文件的读权限,无需文件写权限 · 严重性:CVSS 3.1 (CISA-ADP)
参考资料
GitHub4 条
- dirtycow/dirtycow.github.iogithub.com/dirtycow/dirtycow.github.io
- dirtycow/dirtycow.github.io/dirtyc0w.cgithub.com/dirtycow/dirtycow.github.io/blob/master/dirtyc0w.c
- dirtycow/dirtycow.github.io/wiki/PoCsgithub.com/dirtycow/dirtycow.github.io/wiki/PoCs
- torvalds/linux/commit/19be0eaffa3ac7d8eb6784ad9bdbc7d67ed8e619github.com/torvalds/linux/commit/19be0eaffa3ac7d8eb6784ad9bdbc7d67ed8e619
其他外链5 条
- access.redhat.com/security/vulnerabilities/DirtyCowaccess.redhat.com/security/vulnerabilities/DirtyCow
- dirtycow.ninjadirtycow.ninja/
- nvd.nist.gov/vuln/detail/CVE-2016-5195nvd.nist.gov/vuln/detail/CVE-2016-5195
- security-tracker.debian.org/tracker/CVE-2016-5195security-tracker.debian.org/tracker/CVE-2016-5195
- www.cve.org/CVERecord?id=CVE-2016-5195www.cve.org/CVERecord?id=CVE-2016-5195