漏洞編號: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
不受漏洞影響。
漏洞修復方案
**因爲涉及到操作系統內核的升級,我們強烈建議您:正確關閉正在運行的服務,並做好業務數據備份工作。同時創建服務器磁盤快照,避免修復失敗造成不可逆的影響。
如果您的服務器安裝了第三方的防護軟件有可能會導致內核升級不成功,例如:雲鎖、安全狗,建議您先卸載後升級內核成功後再安裝啓用。
1.CentOS 5/6/7 系列操作系統
阿里雲已經更新了CentOS 5/6/7Aliyun mirror源,可以直接在默認配置下,您可以更新軟件列表,隨後一鍵升級內核:
1).檢查是否有內核升級包:yum check-update |grep kernel
2).升級內核:yum update kernel
3).確認下新版本的內核或 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
4).如果有,則可以重啓
5).如果沒有,則需要給initrd/initramfs安裝驅動,然後執行第三步後重啓:
centos 5:
(具體是版本而定,可以到cd /boot/ 目錄下面查看,替換$target_initrd $vmlinuz)
#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
#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
6).執行第三步後,查看是否有驅動,然後重啓系統
# 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
7).查看升級後的內核版本:uname -a
或者rpm -q --changelog kernel | grep 'CVE-2016-5195'
,也可以使用雲盾安騎士驗證
注:更新完畢後可能會安裝兩個內核,但不影響系統運行。
# uname -aLinux 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源,可以直接在默認配置下,您可以更新軟件列表,隨後一鍵升級內核:
1).查看是否有更新包:dpkg -l | grep linux
2).更新包列表:apt-get update
or apt update
3).升級內核:
Ubuntu12.04版本:apt-get install linux-generic
Ubuntu14.04版本:apt-get upgrade或apt upgrade
4).然後重啓系統
5).查看升級後的內核版本:uname -a
或者zcat /usr/share/doc/linux-image-3.13.0-101-generic/changelog.Debian.gz | grep -i 'CVE-2016-5195'
,也可以使用雲盾安騎士驗證
注:更新完畢後可能會安裝兩個內核,但不影響系統運行。
# uname -aLinux 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
3.Debian 系列操作系統
阿里雲已經更新了Ubuntu mirror源,可以直接在默認配置下,您可以更新軟件列表,隨後一鍵升級內核:
1).查看是否有更新包:dpkg -l | grep linux
2).更新包列表:apt-get update
3).升級內核:apt-get upgrade
4).然後重啓系統
5).查看升級後的內核版本:uname -a
或者zcat /usr/share/doc/linux-image-3.16.0-4-amd64/changelog.Debian.gz | grep -i 'CVE-2016-5195'
,也可以使用雲盾安騎士驗證
注:更新完畢後可能會安裝兩個內核,但不影響系統運行。
# uname -aLinux 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)
4.SUSE Linux Enterprise Server 系列操作系統(僅限購買SLES企業服務用戶)
1).使用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
2).安裝最新內核:zypper install kernel-default xen-kmp-default
3).確認下新版本的內核或 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
4).如果有,可以重啓
5).如果沒有,則需要給 initrd / initramfs 安裝驅動,然後執行第三步後重啓:mkinitrd -k /boot/vmlinuz-3.12.62-60.64.8-default -i /boot/initrd-3.12.62-60.64.8-default
(具體版本根據實際安裝爲準)
6).查看升級後的內核版本:uname -a
或者rpm -q --changelog kernel | grep 'CVE-2016-5195'
,也可以使用雲盾安騎士驗證
注:更新完畢後可能會安裝兩個內核,但不影響系統運行。
# uname -aLinux 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).
5.Open SUSE 系列操作系統
1).更新列表:zypper refresh
2).安裝最新內核:zypper install kernel-default xen-kmp-default
3).確認下新版本的內核或 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
4).如果有,可以重啓
5).如果沒有,則需要給 initrd / initramfs 安裝驅動,然後執行第三步後重啓:# mkinitrd -k /boot/vmlinuz-3.12.62-55-default -i /boot/initrd-3.12.62-55-default
(具體版本根據實際安裝爲準)
6).查看升級後的內核版本:uname -a
或者rpm -q --changelog kernel | grep 'CVE-2016-5195'
,也可以使用雲盾安騎士驗證
注:更新完畢後可能會安裝兩個內核,但不影響系統運行。
# uname -aLinux 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).
6.CoreOS 系列操作系統
安裝所有可用更新,包括新內核:
update_engine_client -update重啓機器
7.重要提示
1). 對於阿里雲官方發佈的其餘系列的操作系統,Linux 官方正在研發漏洞對應的系統補丁,待補丁發佈後,將系統更新到最新版本即可修復漏洞。
2). 對於自定義鏡像用戶可以關注操作系統原廠商更新狀態,自己根據自身業務判斷升級內核,修復該漏洞。