漏洞编号
CVE-2016-5195
漏洞名称
脏牛(Dirty COW)
官方定级
高危
漏洞危害
黑客通过远程入侵获取低权限用户后,利用该漏洞在全版本Linux系统服务器上实现本地提权,从而获取到服务器root权限。
漏洞利用条件
黑客通过远程入侵获取低权限用户后,才能进一步在操作系统本地利用该漏洞。
漏洞影响范围
Linux Kernel >= 2.6.22 的所有 Linux 系统
意味着从 2007 年发布 2.6.22 版本开始,直到2016年10月18日为止,这中间发行的所有 Linux 系统都受影响。
我们建议您使用以下方式自查是否存在此漏洞:
使用
uname –a
查看 Linux 系统的内核版本,如:Linux AYxxxx 2.6.32-431.23.3.el6.x86_64 #1 SMP Thu Jul 31 17:20:51 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
上述内核版本
2.6.32-431.23.3.el6.x86_64
受漏洞影响。Linux AYxxxx 2.6.18-308.el5 #1 SMP Tue Feb 21 20:06:06 EST 2012 x86_64 x86_64 x86_64 GNU/Linux
上述内核版本
2.6.18-308.el5
不受漏洞影响。
阿里云安全团队在第一时间针对 ECS 提供的 Linux 操作系统镜像进行测试,详细的受影响范围见下表。
发行版 版本 架构 是否受影响 官方补丁状态 备注 CentOS 5.8 X64 是 已发布 阿里云默认配置可更新 CentOS 5.1 i386/x64 是 已发布 阿里云默认配置可更新 CentOS 6.5 i386/x64 是 已发布 阿里云默认配置可更新 CentOS 7 X64 是 已发布 阿里云默认配置可更新 CentOS 7.2 X64 是 已发布 阿里云默认配置可更新 Ubuntu 12.04 i386/x64 是 已发布 阿里云默认配置可更新 Ubuntu 14.04 i386/x64 是 已发布 阿里云默认配置可更新 Debain 6.0.9 i386/x64 是 无 已停止维护,建议升级系统 Debain 7.5.0 i386/x64 是 已发布 阿里云默认配置可更新 Debain 8.0.4 X64 是 已发布 阿里云默认配置可更新 Aliyun Linux 15.1 i386/x64 是 未发布 - SUSE Linux Enterprise Server 11 SP1 X64 是 已发布 仅限购买SLES企业服务用户 SUSE Linux Enterprise Server 11 SP2 X64 是 已发布 仅限购买SLES企业服务用户 SUSE Linux Enterprise Server 11 SP3 X64 是 已发布 仅限购买SLES企业服务用户 SUSE Linux Enterprise Server 12 SP1 X64 是 已发布 仅限购买SLES企业服务用户 Open SUSE 13.1 i386/x64 是 已发布 阿里云默认配置可更新 CoreOS 681.2.0 X64 是 已发布 阿里云默认配置可更新,但更新速度较慢 FreeBSD 10.1 X64 否 已发布 Free BSD 系统UNIX,非Linux内核
漏洞修复方案
注意:
因为涉及到操作系统内核的升级,我们强烈建议您正确关闭正在运行的服务,并做好业务数据备份工作。同时创建服务器磁盘快照,避免修复失败造成不可逆的影响。
如果您的服务器安装了第三方的防护软件(例如云锁、安全狗),则有可能导致内核升级不成功,建议您先卸载这些软件,等到升级内核成功后再重新安装启用。
CentOS 5/6/7 系列操作系统
阿里云已经更新了CentOS 5/6/7 Aliyun mirror源,使用默认配置,就可以更新软件列表,随后一键升级内核。操作步骤如下:
检查是否有内核升级包:
yum check-update |grep kernel
升级内核:
yum update kernel
确认新版本的内核或
initrd/initramfs
是否有xen-vbd和virtio_blk驱动:lsinitrd /boot/initramfs-2.6.32-642.6.2.el6.x86_64.img |grep -i -E 'xen-blkfront|virtio_blk'
查看补丁样例:
#lsinitrd /boot/initramfs-2.6.32-642.6.2.el6.x86_64.img |grep -i -E 'xen-blkfront|virtio_blk'
具体视版本而定,可以到
cd /boot/
目录下面查看对应的initrd文件(Centos5.1)或initramfs文件(centos6/7)。# lsinitrd /boot/initramfs-2.6.32-642.6.2.el6.x86_64.img |grep -i -E 'xen-blkfront|virtio_blk'
-rwxr--r-- 1 root root 23448 Nov 4 14:51 lib/modules/2.6.32-642.6.2.el6.x86_64/kernel/drivers/block/virtio_blk.ko
-rwxr--r-- 1 root root 54888 Nov 4 14:51 lib/modules/2.6.32-642.6.2.el6.x86_64/kernel/drivers/block/xen-blkfront.ko
如果有,则重启。
如果没有,则需要给
initrd/initramfs
安装驱动,然后重新执行步骤3,并重启。- centos 5:
#mkinitrd -f --allow-missing \
--with=xen-vbd --preload=xen-vbd \
--with=xen-platform-pci --preload=xen-platform-pci \
--with=virtio_blk --preload=virtio_blk \
--with=virtio_pci --preload=virtio_pci \
--with=virtio_console --preload=virtio_console \
--with=hvc_console --preload=hvc_console \
$target_initrd $vmlinuz
具体视版本而定,可以到
cd /boot/
目录下面查看,替换$target_initrd $vmlinuz
。- centos 6/7 :
#mkinitrd -f --allow-missing \
--with=xen-blkfront --preload=xen-blkfront \
--with=virtio_blk --preload=virtio_blk \
--with=virtio_pci --preload=virtio_pci \
--with=virtio_console --preload=virtio_console \
$target_initrd $vmlinuz
安装驱动样例(以Centos6.8 64bit为准):
#mkinitrd -f --allow-missing --with=xen-blkfront --preload=xen-blkfront --with=virtio_blk --preload=virtio_blk --with=virtio_pci --preload=virtio_pci --with=virtio_console --preload=virtio_console initramfs-2.6.32-642.6.2.el6.x86_64.img 2.6.32-642.6.2.el6.x86_64
具体视版本而定,可以到
cd /boot/
目录下面查看,替换$target_initrd $vmlinuz
。执行步骤3后,查看是否有驱动,然后重启系统。
# lsinitrd /boot/initramfs-2.6.32-642.6.2.el6.x86_64.img |grep -i -E 'xen-blkfront|virtio_blk'
-rwxr--r-- 1 root root 23448 Nov 4 16:21 lib/modules/2.6.32-642.6.2.el6.x86_64/kernel/drivers/block/virtio_blk.ko
-rwxr--r-- 1 root root 54888 Nov 4 16:21 lib/modules/2.6.32-642.6.2.el6.x86_64/kernel/drivers/block/xen-blkfront.ko
查看升级后的内核版本:
uname -a
或者rpm -q --changelog kernel | grep 'CVE-2016-5195'
,也可以使用云盾安骑士验证。
注意:更新完毕后可能会安装两个内核,但不影响系统运行。
# uname -a
Linux iZ2ze1zpafrqftmdfh0b3cZ 2.6.32-642.6.2.el6.x86_64 #1 SMP Wed Oct 26 06:52:09 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
或者
#rpm -q --changelog kernel | grep 'CVE-2016-5195'
- [mm] close FOLL MAP_PRIVATE race (Larry Woodman) [1385116 1385117] {CVE-2016-5195}
Ubuntu 系列操作系统
阿里云已经更新了Ubuntu mirror源,可以直接在默认配置下更新软件列表,随后一键升级内核。操作流程如下:
查看是否有更新包:
dpkg -l | grep linux
更新包列表:
apt-get update
orapt update
升级内核:
- Ubuntu12.04版本:
apt-get install linux-generic
- Ubuntu14.04版本:
apt-get upgrade
或apt upgrade
- Ubuntu12.04版本:
重启系统。
查看升级后的内核版本:
uname -a
或者zcat /usr/share/doc/linux-image-3.13.0-101-generic/changelog.Debian.gz | grep -i 'CVE-2016-5195'
,也可以使用云盾安骑士验证。
注意:更新完毕后可能会安装两个内核,但不影响系统运行。
# uname -a
Linux iZ2ze1zpaXXXXb3cZ 2.6.32-642.6.2.el6.x86_64 #1 SMP Wed Oct 26
或者
# zcat /usr/share/doc/linux-image-3.13.0-101-generic/changelog.Debian.gz | grep -i 'CVE-2016-5195'
* CVE-2016-5195
Debian 系列操作系统
阿里云已经更新了Debian mirror源,可以直接在默认配置下更新软件列表,随后一键升级内核。操作流程如下:
查看是否有更新包:
dpkg -l | grep linux
更新包列表:
apt-get update
升级内核:
apt-get upgrade
重启系统。
查看升级后的内核版本:
uname -a
或者zcat /usr/share/doc/linux-image-3.16.0-4-amd64/changelog.Debian.gz | grep -i 'CVE-2016-5195'
,也可以使用云盾安骑士验证。
注意:更新完毕后可能会安装两个内核,但不影响系统运行。
# uname -a
Linux iZ2ze1zpaXXXXb3cZ 2.6.32-642.6.2.el6.x86_64 #1 SMP Wed Oct 26 06:52:09 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
或者
# zcat /usr/share/doc/linux-image-3.16.0-4-amd64/changelog.Debian.gz |grep -i 'CVE-2016-5195'
(CVE-2016-5195)
SUSE Linux Enterprise Server 系列操作系统(仅限购买SLES企业服务用户)
使用
http://mirrors.aliyuncs.com/SLES/SLES12-SP1-Updates/sle-12-x86_64/
源进行更新。您可以编辑
vim /etc/zypp/repos.d/SLES12-SP1-Updates.repo
关闭其他更新源,即修改http://mirrors.aliyun.com/SLES/SLES12-SP1-Updates/sle-12-x86_64/ enabled=0
,然后更新列表zypper refresh
。安装最新内核:
zypper install kernel-default xen-kmp-default
确认下新版本的内核或
initrd / initramfs
是否有xen-vbd和virtio_blk驱动:lsinitrd /boot/initrd-3.12.62-60.64.8-default | grep -i -E 'xen-vbd|virtio_blk'
查看补丁样例:
lsinitrd /boot/initrd-3.12.62-60.64.8-default | grep -i -E 'xen-vbd|virtio_blk'
Arguments: --logfile --force --force-drivers 'xen-vbd xen-vnif xen-platform-pci.ko virtio virtio_console virtio_net virtio_blk virtio_pci'
-rw-r--r-- 1 root root 55335 Sep 23 15:55 lib/modules/3.12.62-60.62-default/updates/blkfront/xen-vbd.ko
-rw-r--r-- 1 root root 31591 Oct 19 04:40 lib/modules/3.12.62-60.64.8-default/kernel/drivers/block/virtio_blk.ko
lrwxrwxrwx 1 root root 61 Nov 7 14:17 lib/modules/3.12.62-60.64.8-default/weak-updates/updates/blkfront/xen-vbd.ko -> ../../../../3.12.62-60.62-default/updates/blkfront/xen-vbd.ko
如果有,则重启。
如果没有,则需要给
initrd / initramfs
安装驱动,然后重新执行步骤3并重启。mkinitrd -k /boot/vmlinuz-3.12.62-60.64.8-default -i /boot/initrd-3.12.62-60.64.8-default
(具体版本根据实际安装为准)查看升级后的内核版本:
uname -a
或者rpm -q --changelog kernel | grep 'CVE-2016-5195'
,也可以使用云盾安骑士验证。
注意:更新完毕后可能会安装两个内核,但不影响系统运行。
# uname -a
Linux iZwz9cl4i8oy1pmjw7g4rxZ 3.12.62-60.64.8-default #1 SMP Tue Oct 18 12:21:38 UTC 2016 (42e0a66) x86_64 x86_64 x86_64 GNU/Linux
或者
# rpm -q --changelog kernel-default | grep 'CVE-2016-5195'
- patches.fixes/mm-remove-gup_flags-FOLL_WRITE-games-from-__get_user_pages.patch: (bnc1004418, CVE-2016-5195).
Open SUSE 系列操作系统
更新列表:
zypper refresh
安装最新内核:
zypper install kernel-default xen-kmp-default
确认下新版本的内核或
initrd / initramfs
是否有xen-vbd和virtio_blk驱动。lsinitrd /boot/initrd-3.12.62-55-default | grep -i -E 'xen-vbd|virtio_blk'
样例:
# lsinitrd /boot/initrd-3.12.62-55-default | grep -i -E 'xen-vbd|virtio_blk'
lib/modules/3.12.62-55-default/kernel/drivers/block/virtio_blk.ko
lib/modules/3.12.62-55-default/updates/blkfront/xen-vbd.ko
如果有,则重启。
如果没有,则需要给
initrd / initramfs
安装驱动,然后重新执行步骤3并重启:# mkinitrd -k /boot/vmlinuz-3.12.62-55-default -i /boot/initrd-3.12.62-55-default
(具体版本根据实际安装为准)查看升级后的内核版本:
uname -a
或者rpm -q --changelog kernel | grep 'CVE-2016-5195'
,也可以使用云盾安骑士验证。
注意:更新完毕后可能会安装两个内核,但不影响系统运行。
# uname -a
Linux iZwz9XXXshamswbvrZ 3.12.62-55-default #1 SMP Thu Oct 20 08:47:11 UTC 2016 (b0aa9a6) x86_64 x86_64 x86_64 GNU/Linux
或者
# rpm -q --changelog kernel-default | grep 'CVE-2016-5195'
- patches.fixes/mm-remove-gup_flags-FOLL_WRITE-games-from-__get_user_pages.patch: (bnc1004418, CVE-2016-5195).
CoreOS 系列操作系统
使用命令update_engine_client -update
安装所有可用更新,包括新内核,并重启机器。
重要提示
对于阿里云官方发布的其余系列的操作系统,Linux 官方正在研发漏洞对应的系统补丁,待补丁发布后,将系统更新到最新版本即可修复漏洞。
对于自定义镜像用户可以关注操作系统原厂商更新状态,自己根据自身业务判断升级内核,修复该漏洞。
情报来源:
- http://dirtycow.ninja
- https://github.com/dirtycow
- https://access.redhat.com/security/cve/CVE-2016-5195
- https://security-tracker.debian.org/tracker/CVE-2016-5195
- http://people.canonical.com/~ubuntu-security/cve/2016/CVE-2016-5195.html
- https://www.suse.com/security/cve/CVE-2016-5195.html
- http://people.canonical.com/~ubuntu-security/cve/2016/CVE-2016-5195.html
- https://security-tracker.debian.org/tracker/CVE-2016-5195