我刚刚听说了这个漏洞“Dirty COW”,它允许任何具有文件读取权限的用户写入文件并获得管理权限。我该如何防范这个漏洞?
答案1
古老的“脏牛”虫
此错误自内核版本 2.6.22 以来一直存在。它允许具有读取权限的本地用户获得管理权限。已发出警告(Softpedia:Linux 内核 4.8.3、4.7.9 和 4.4.26 LTS 将修复“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 已修复所有支持的 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 的 Trusty HWE 内核已更新至版本 linux-image-3.13.0-100(3.13.0-100.147~precise1)。
请按照 Canonical 提供的说明立即更新您的 Ubuntu 安装:https://wiki.ubuntu.com/Security/Upgrades。
显示当前内核版本
要显示当前运行的内核版本,请使用Ctrl++打开终端,然后输入:AltT
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 已发布该错误的修复程序,因此用户只需升级系统即可。如果启用了每日安全更新,则内核升级已完成。请检查上面的内核列表,了解您的内核版本。
如果 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
重启后,重复前面两节的说明来检查当前内核版本。
答案2
我根本不是专家,但是在阅读了一些有关“Dirty COW”的内容后,我真的很想检查一下在几个小时前完成最新更新后我是否还好。
从我的关键词搜索结果中,我选择了这篇文章和讨论,因为它听起来很有希望。现在,我可以轻松地验证我的 Xenial Xerox 系统的“COW 补丁”状态,方法是首先按照上述文章的说明进行操作显示当前内核版本(结果,它是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 贡献者迅速将解决方案纳入更新,并在用户之间迅速传播知识。
答案3
您需要使用以下命令升级您的软件包apt-get
:
sudo apt-get update && sudo apt-get dist-upgrade
您还可以启用livepach 服务:
巧合的是,就在漏洞公布前,我们发布了适用于 Ubuntu 16.04 LTS 的 Canonical Livepatch 服务。在最初几个小时内,数千名在 Ubuntu 16.04 LTS 系统上启用了 canonical-livepatch 的用户自动在后台接收并应用了 Dirty COW 修复程序,无需重启!
去https://ubuntu.com/livepatch并检索你的 livepatch 令牌 安装 canonical-livepatch snap
$ sudo snap install canonical-livepatch
使用您的令牌启用服务
$ sudo canonical-livepatch 启用 [TOKEN]
使用以下方式随时检查状态:
$ canonical-livepatch 状态--verbose
升级
`$ sudo apt install 无人值守升级
旧版本的 Ubuntu(或升级到 16.04 的 Ubuntu 系统)可能需要使用以下命令启用此行为:
$ sudo dpkg-reconfigure 无人值守升级
`