Linux内核通杀提权漏洞预警

Linux内核在处理内存写时拷贝(Copy-on-Write)时存在条件竞争漏洞,导致可以破坏私有只读内存映射。一个低权限的本地用户能够利用此漏洞获取其他只读内存映射的写权限,有可能进一步导致提权漏洞。
漏洞危害:低权限用户可以利用该漏洞修改只读内存,进而执行任意代码获取 root 权限。影响范围:
该漏洞影响所有 Linux Kernel >= 2.6.22 的版本。2.6.22 是 2007 年发布的版本,也就是说这个漏洞几乎影响 2007 以后的所有版本。
漏洞测试:读取 /proc/version 来获取 LinuxKernel 版本:


4.4.0 版本的Kernel,看样子是受影响的,github 上给出了如下的 POC:

这个 POC 可以利用该漏洞修改任意文件内容,看下面的测试:

调用 gcc 编译这个 payload,报了几个 warning,但还是编译成功了。

使用 root 权限创建一个其他用户只读的 test 文件,权限为 644,内容为 0000。

使用当前用户调用编译出的 a.out 程序把 test 文件的内容修改为 1111,经过漫长的等待以后程序终于执行完成。

可以看到结果,test 文件的内容已经被成功修改。

这样的话,只要修改 /etc/passwd 把当前用户的 uid 改成 0 就可以作为 root 登录了。

修复方案:

更新最新 Linux Kernel 源码,并重新编译。 各大发行版也已经更新 Kernel,也可直接升级最新版本。

参考:

  • git.kernel.org
  • access.redhat.com
  • github.com/dirtycow
  • bobao.360.cn

【via@长亭科技】 本文系授权转载,未经作者授权请勿转载本文。