目录
一,漏洞分析
二,形成原因
三,漏洞检测复现
1、编译poc 文件
2、复现漏洞
四,漏洞修复
方法一
方法二
一,漏洞分析
脏牛(Dirty COW,编号:CVE-2016-5195)是2016年10月18日被曝出的存在于Linux内核中的一款0day漏洞。因为此漏洞是在Linux内核的内存子系统在处理写时拷贝(Copy-on-Write)时发生的,而又给Linux内核的使用带来烦恼,所以将其命名为“Dirty COW”。
漏洞编号:CVE-2016-5195
漏洞类型:内核竞态条件漏洞
漏洞危害:本地提权
影响范围:Linux kernel>2.6.22 (released in 2007)
Linux内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞,导致可以破坏私有只读内存映射。一个低权限的本地用户能够利用此漏洞获取其他只读内存映射的写权限,有可能进一步导致提权漏洞
二,形成原因
漏洞形成原因(写时拷贝技术)
在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了“写时复制“技术,也就是只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。
Linux内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞,导致可以破坏私有只读内存映射。一个低权限的本地用户能够利用此漏洞获取其他只读内存映射的写权限,有可能进一步导致提权漏洞。
竞态条件(race condition)是指设备或系统出现不恰当的执行时序,而得到不正确的结果。
三,漏洞检测复现
工具:
gcc:linux系统下的编译器,用于编译程序dirtyc0w.c:本次实验漏洞验证的POC源码
1、编译poc 文件
切换到cow用户,查看系统内核版本和系统版本
2、复现漏洞
准备用sudo切换为root用户,创建只读文件,再切回cow用户利用poc对文件越权写入。
查看内容
执行POC
查看文件内容
这里可以看到,我们的只读文件内容被改变了。
若文件内容没有改变,说明该系统没有脏牛漏洞。
四,漏洞修复
方法一
1、升级内核修复
CentOS 6/7 系列操作系统:
1) 检查是否有内核升级包:yum check-update |grep kernel
2) 升级内核:yum update kernel
3) 然后重启系统
4) 查看版本:uname -a
Ubuntu 系列操作系统:
Ubuntu 系统必须在/etc/apt/sources.list中开启–security后缀的源地址才能收到更新。
untu 12.04 LTS (precise)
deb http://security.ubuntu.com/ubuntu/ precise-security main
Ubuntu 14.04 LTS (trusty)
deb http://security.ubuntu.com/ubuntu/ trusty-security main
更新包列表:
sudo apt-get update
升级软件包:
sudo apt-get upgrade
重启系统
方法二
还可以根据长亭科技 :
https://mp.weixin.qq.com/s?__biz=MzIwNDA2NDk5OQ==&mid=2651370571&idx=1&sn=68acf07ca2683a9c98fa52e900d97db3&chksm=8d39c5c3ba4e4cd58c21d0a21ca337ded2132625987e174d286f8d175034267bd09807ea9a11&scene=4#wechat_redirect
提供另外一种办法来修复。