CVE-2016-5195(脏牛)是Linux内核2.6.22至2016年10月18日修复前所有版本存在的本地提权漏洞,低权限用户可通过写时复制竞争条件越权修改只读内存,获取root权限;需严格比对uname输出与各发行版修复版本号,并重启验证PoC是否失效。

只要内核版本低于修复阈值,CVE-2016-5195 就仍然有效——补丁不是可选操作,而是必须立即执行的底线防护。
确认当前内核是否仍在风险范围内
别跳过这步。很多运维人员直接升级,却没验证原始漏洞是否存在,结果白忙一场。
- 运行
uname -r(Ubuntu/CentOS/RHEL)或uname -v(Debian),输出如4.4.0-21-generic或#1 SMP Debian 3.16.36-1+deb8u1 - 对照已知修复版本:Ubuntu 16.04 需 ≥
4.4.0-45.66,CentOS 7 需 ≥3.10.0-327.36.3.el7,Debian 8 需 ≥3.16.36-1+deb8u2 - 若版本号小数点后数字更低,或末尾无安全补丁标识(如
+deb8u2中的u2),即为未修复状态
用包管理器升级内核(推荐首选)
手动编译内核风险高、易出错,且难以持续维护。发行版仓库提供的内核包已通过签名验证和依赖检查,是最稳妥路径。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- Ubuntu/Debian:
sudo apt update && sudo apt install --install-recommends linux-image-generic,然后sudo reboot - CentOS/RHEL 7:
sudo yum update kernel(注意不是yum update全量升级),重启后用sudo grub2-set-default 0确保新内核为默认启动项 - 升级后务必运行
uname -r再次确认输出版本号已变更,且与修复列表匹配
验证漏洞是否真正修复
升级≠修复完成。内核更新后若未重启,旧内核仍在运行;即使重启,也需实测确认竞态窗口已被堵死。
- 下载官方 PoC:
wget https://raw.githubusercontent.com/dirtycow/dirtycow.github.io/master/dirtyc0w.c - 编译并运行:
gcc -pthread dirtyc0w.c -o dirtyc0w && ./dirtyc0w /tmp/test(提前touch /tmp/test && chmod 0404 /tmp/test) - 若输出含
mmap failed、Permission denied或内容未被篡改,说明修复生效;若成功覆写只读文件,则补丁未起效,需检查是否误启旧内核或仓库源未同步最新包
最常被忽略的一点:容器环境中的宿主机内核才是关键。哪怕容器里 uname -r 显示已修复,只要宿主机内核老旧,整个集群仍处于裸奔状态。查宿主机,别只盯容器。

















