什么是“Dirty COW”错误,如何保护我的系统免受攻击?

我刚刚听说过这个错误“Dirty COW”,它允许任何对文件具有读访问权限的用户也可以写入文件并获得管理访问权限。 我如何防止此错误?

古老的脏COW Bug

自内核版本2.6.22以来,这个bug一直存在。 它允许具有读访问权限的本地用户获得管理权限。 已发出警告( Softpedia:Linux Kernels 4.8.3,4.7.9和4.4.26 LTS Out to Patch“Dirty COW”安全漏洞 ),并敦促用户升级到内核Linux内核4.8.3,Linux内核4.7。 9,Linux内核4.4.26 LTS。 这个链接很糟糕,因为Ubuntu不支持这些内核版本。

这个答案是为Ubuntu用户量身定制的,并告诉您:

  • Ubuntu用户的推荐内核版本
  • 如何显示当前的内核版本
  • 如何为Ubuntu支持的内核应用修复程序
  • 如何应用不支持的Ubuntu内核修复

Ubuntu用户“Dirty COW”推荐内核

Ubuntu于2016年10月20日发布了安全更新,以修补所有受支持的Ubuntu版本使用的内核: Softpedia:Canonical Patches所有支持的Ubuntu操作系统中的古代“Dirty COW”内核错误

Canonical正在敦促所有用户通过安装来立即修补他们的系统:

  • 适用于Ubuntu 16.10的linux-image-4.8.0-26(4.8.0-26.28)
  • 用于Ubuntu 16.04 LTS的linux-image-4.4.0-45(4.4.0-45.66)
  • 用于Ubuntu 14.04 LTS的linux-image-3.13.0-100(3.13.0-100.147)
  • 用于Ubuntu 12.04 LTS的linux-image-3.2.0-113(3.2.0-113.155)
  • linux-image-4.4.0-1029-raspi2(4.4.0-1029.36)

用于Ubuntu 14.04 LTS的Xenial HWE内核也更新为版本linux-image-4.4.0-45(4.4.0-45.66~14.04.1),以及用于Ubuntu 12.04 LTS版本linux-image的Trusty HWE内核-3.13.0-100(3.13.0-100.147~precision1)。

请按照Canonical提供的说明立即更新您的Ubuntu安装: https : //wiki.ubuntu.com/Security/Upgrades 。

显示当前的内核版本

要显示当前运行的内核版本,请使用Ctrl + Alt + T打开终端,然后键入:

uname -a 

然后, 您启动的内核版本显示如下:

 Linux dell 4.8.1-040801-generic #201610071031 SMP Fri Oct 7 14:34:10 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux 

请记住,在使用补丁安装新内核后,您仍然可以从Grub启动旧内核版本。 较旧的版本将不会应用此修补程序,这是此内核版本4.8.1的情况。

再次记住Ubuntu不支持内核版本4.8.1。

如何修复Ubuntu支持的内核

由于Ubuntu已经发布了该bug的修复程序,所有用户需要做的就是升级他们的系统。 如果启用了每日安全更新,则内核升级已完成。 检查您的内核版本到上面的内核列表。

如果Ubuntu没有自动升级你的内核版本,那么运行:

 sudo apt-get update sudo apt-get dist-upgrade sudo reboot 

重新启动后,重复上一节说明检查当前的内核版本。

如何修复不受支持的Ubuntu内核

某些使用较新硬件的安装可能正在使用不受支持的内核,例如4.8.1或更高版本。 如果是这样,您将需要手动升级内核。 虽然上面的错误报告链接说使用内核4.8.3 ,截至2016年10月30日, 4.8.5是最新的,这是如何安装它:

 cd /tmp wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.8.5/linux-headers-4.8.5-040805_4.8.5-040805.201610280434_all.deb wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.8.5/linux-headers-4.8.5-040805-generic_4.8.5-040805.201610280434_amd64.deb wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.8.5/linux-image-4.8.5-040805-generic_4.8.5-040805.201610280434_amd64.deb sudo dpkg -i *.deb sudo reboot 

重新启动后,通过重复两个部分的说明来检查当前的内核版本。

我根本不是专家,但是在阅读了“Dirty COW”之后,我觉得我真的想在几小时前完成最近的更新之后检查一下我是否还好。

根据我的关键字搜索结果,我选择了这篇文章和讨论,听起来很有希望。 现在,我已经轻松地设法validation了我的Xenial Xerox系统的“COW-patched”状态,首先按照上面的文章说明显示当前的内核版本 (原来,它是: linux-image-4.4.0.-45 ) 。 虽然uname -a没有详细说明补丁,但它显示了当前安装的内核版本,这允许我遵循用户643722的建议 – 并且成功地如此:

 apt list --installed | grep linux-image-4.4.0-45 

虽然显示了一个意想不到的额外线…

 WARNING: apt does not have a stable CLI interface. Use with caution in scripts. 

…在下一行中遵循了所希望的信息:

 linux-image-4.4.0-45-generic/xenial-updates,xenial-security,now 4.4.0-45.66 amd64 [Installiert,automatisch] 

感谢所有人 – 快速将解决方案实施到Linux / Ubuntu贡献者的更新中,以及在用户之间快速传播知识。

您需要使用apt-get升级包:

 sudo apt-get update && sudo apt-get dist-upgrade 

您还可以启用livepach服务 :

巧合的是,在漏洞发布之前,我们发布了针对Ubuntu 16.04 LTS的Canonical Livepatch服务。 成千上万的用户在他们的Ubuntu 16.04 LTS系统上启用了规范实时补丁,前几个小时收到并在后台自动应用修复到Dirty COW,而无需重启!

  1. 转到https://ubuntu.com/livepatch并检索您的livepatch令牌安装canonical-livepatch snap

    $ sudo snap install canonical-livepatch

  2. 使用令牌启用服务

    $ sudo canonical-livepatch enable [TOKEN]

  3. 使用以下方式随时检查状态:

    $ canonical-livepatch status –verbose

  4. 升级

    `$ sudo apt安装无人值守升级

  5. 旧版本的Ubuntu(或升级到16.04的Ubuntu系统)可能需要使用以下命令启用此行为:

    $ sudo dpkg-reconfigure无人值守升级

`