事件描述
漏洞描述 11 月 15 日,Dawid Golunski 发现 Nginx 存在本地提权漏洞,CVE 编号为 CVE-2016-1247。这个漏洞产生的原因是 Nginx 在新建日志目录时,使用了不安全的权限,导致本地恶意攻击者可以从 Nginx / Web 用户权限 (www-data) 提升到 root 权限。该漏洞影响基于 Debian 的 Linux 发行版的 Nginx 网站服务器。
漏洞利用 该漏洞的利用首先需要攻击者能够获取到系统的 www-data 用户权限,然后利用攻击脚本将原本的日志文件替换为恶意代码文件,当 Nginx daemon 重新打开日志文件时,提权成功,获取 root 权限,成功利用效果如下:
经过分析,该漏洞的利用不仅需要攻击者获取 www-data 用户权限,还需要等待 Nginx daemon 重新打开日志文件才能提权成功,因此执行攻击脚本后需要重启 Nginx,或者 Nginx daemon 接收 USR1 进程信号。然而有意思的是,默认安装的 Nginx 会在每天上午 6 点 25 分,通过 logrotate 脚本调用 do_rotate() 函数来发送 USR1 进程信号,如上图的最后一行所示。也就是说攻击者只要耐心等待,24 小时之内会自动提权为 root 用户。
漏洞危害 攻击者在成功入侵 Nginx 发布的网站之后,默认的用户控制权限是 www-data。利用该漏洞可以轻松地提权到 root 用户权限,从而完全控制服务器。
漏洞影响 Debian 系统Debian 系统在 Nginx 1.6.2-5+deb8u3 中修复 Ubuntu 系统Ubuntu 16.04 LTS:在 1.10.0-0ubuntu0.16.04.3 中修复 Ubuntu 14.04 LTS:在 1.4.6-1ubuntu3.6 中修复 Ubuntu 16.10:在 1.10.1-0ubuntu1.1 中修复 除以上已修复或更高版本,其他 Nginx 服务器版本均受到该漏洞影响。
解决方案
漏洞修复 Debian 和 Ubuntu 已经在官方安全公告中说明该漏洞,可以直接使用系统更新命令,更新 Nginx 软件。
参考链接 Legalhackers advisory: |