什么是“Dirty COW”错误,我该如何保护我的系统免受它的侵害?

Win*_*nix 22 security kernel

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

Win*_*nix 20

古老的脏牛虫

自内核版本 2.6.22 以来,此错误一直存在。它允许具有读取访问权限的本地用户获得管理权限。已发出警告(Softpedia:Linux Kernels 4.8.3, 4.7.9 & 4.4.26 LTS Out to Patch "Dirty COW" Security Flaw),并敦促用户升级到 Kernel Linux kernel 4.8.3, Linux kernel 4.7。 9、Linux 内核 4.4.26 LTS。此链接具有误导性,因为 Ubuntu 不支持这些内核版本。

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

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

Ubuntu 用户“Dirty COW”推荐内核

Ubuntu 于 2016 年 10 月 20 日发布了安全更新,以修补所有受支持的 Ubuntu 版本使用的内核:Softpedia: Canonical Patches Ancient "Dirty COW" Kernel Bug in All Supported Ubuntu OSes

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

  • linux-image-4.8.0-26 (4.8.0-26.28) 用于 Ubuntu 16.10
  • linux-image-4.4.0-45 (4.4.0-45.66) 用于 Ubuntu 16.04 LTS
  • linux-image-3.13.0-100 (3.13.0-100.147) 适用于 Ubuntu 14.04 LTS
  • linux-image-3.2.0-113 (3.2.0-113.155) 适用于 Ubuntu 12.04 LTS
  • 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 的 Trusty HWE 内核到版本 linux-image -3.13.0-100(3.13.0-100.147~精确1)。

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

显示您当前的内核版本

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

uname -a
Run Code Online (Sandbox Code Playgroud)

您启动时使用的内核版本显示如下:

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
Run Code Online (Sandbox Code Playgroud)

请记住,在安装带有补丁的新内核之后,您仍然可以从 Grub 引导旧内核版本。旧版本不会应用补丁,这个内核版本 4.8.1 就是这种情况。

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

如何修复 Ubuntu 支持的内核

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

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

sudo apt-get update
sudo apt-get dist-upgrade
sudo reboot
Run Code Online (Sandbox Code Playgroud)

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

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

某些具有较新硬件的安装可能使用不受支持的内核,例如4.8.1或更高版本。如果是这样,您将需要手动升级内核。尽管上面的错误报告链接说要使用 Kernel 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
Run Code Online (Sandbox Code Playgroud)

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