Что такое ошибка «Dirty COW» и как я могу защитить свою систему от нее?

22

Я только что слышал об этой ошибке "Dirty COW", которая позволяет любому пользователю, имеющему доступ для чтения к файлам, также писать в них и получать административный доступ. Как мне защититься от этой ошибки?

WinEunuuchs2Unix
источник

Ответы:

20

Древняя грязная корова

Эта ошибка существует с версии ядра 2.6.22. Это позволяет локальному пользователю с доступом для чтения получать административные привилегии. Выдано предупреждение ( Softpedia: Linux Kernels 4.8.3, 4.7.9 и 4.4.26 LTS Out to Patch «Ошибка Dirty COW» ), и пользователям настоятельно рекомендуется выполнить обновление до ядра Kernel Linux 4.8.3, ядра Linux 4.7. 9, и ядро ​​Linux 4.4.26 LTS. ЭТА ССЫЛКА ПРОПУСТИТСЯ, потому что эти версии ядра не поддерживаются Ubuntu.

Этот ответ предназначен для пользователей Ubuntu и говорит вам:

  • Рекомендуемые версии ядра для пользователей Ubuntu
  • Как отобразить текущую версию ядра
  • Как применить исправление для поддерживаемых ядер Ubuntu
  • Как применить исправление для неподдерживаемых ядер Ubuntu

Пользователи Ubuntu "Dirty COW" рекомендуют ядра

Ubuntu выпустила обновления для системы безопасности 20 октября 2016 года, чтобы исправить ядро, используемое всеми поддерживаемыми версиями Ubuntu: Softpedia: Canonical Patches Древняя ошибка «Dirty COW» во всех поддерживаемых ОС Ubuntu

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)

Ядро Xenial HWE для Ubuntu 14.04 LTS также было обновлено до версии linux-image-4.4.0-45 (4.4.0-45.66 ~ 14.04.1), а ядро ​​Trusty HWE для Ubuntu 12.04 LTS до версии linux-image -3.13.0-100 (3.13.0-100.147 ~ точный1).

Пожалуйста, немедленно обновите установки Ubuntu, следуя инструкциям, предоставленным Canonical по адресу: https://wiki.ubuntu.com/Security/Upgrades .

Показать вашу текущую версию ядра

Чтобы отобразить текущую версию ядра Kernel, откройте терминал с помощью 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.

Еще раз помните, что версия ядра 4.8.1 не поддерживается Ubuntu.

Как исправить для Ubuntu поддерживаемых ядер

Поскольку Ubuntu выпустила исправление ошибки, все, что нужно сделать пользователям, - это обновить свою систему. Если ежедневные обновления безопасности включены, обновление ядра уже выполнено. Проверьте версию вашего ядра в списке ядер выше.

Если Ubuntu не обновил автоматически версию вашего ядра, запустите:

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

После перезагрузки проверьте текущую версию ядра, повторив инструкции предыдущего раздела.

Как исправить ошибки для неподдерживаемых ядер Ubuntu

В некоторых установках с более новым оборудованием может использоваться неподдерживаемое ядро, например 4.8.1или выше. Если это так, вам нужно будет обновить ядро ​​вручную. Хотя в приведенной выше ссылке на отчет об ошибке сказано, что нужно использовать ядро 4.8.3, по состоянию на 30 октября 2016 года 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

После перезагрузки проверьте текущую версию ядра, повторив инструкции в двух разделах.

WinEunuuchs2Unix
источник
Вместо «эта ссылка вводит в заблуждение», что кажется мне слишком сильным словом, я бы сказал что-то вроде «эти инструкции не относятся к пользователям Ubuntu».
фкрем
@ WinEunuuchs2Unix Я собирался предложить «Эта ссылка, как есть, вводит в заблуждение, потому что упомянутые версии ядра не поддерживаются Ubuntu». Также не уверен, почему вы везде смелые даты?
Томас Уорд
Имея Ubuntu 16.04 LTS, я обнаружил, что эта команда показала мне, что все хорошо: apt list --installed | grep linux-image-4.4.0-45- он вернулся linux-image-4.4.0-45-generic/xenial-updates,xenial-security,now 4.4.0-45.66 amd64 [installed,automatic].
user643722
1

Я вообще не эксперт, но, прочитав немного «Грязную корову», я почувствовал, что действительно хочу проверить, в порядке ли я, выполнив свое последнее обновление всего пару часов назад.

По результатам поиска по ключевым словам я выбрал эту статью и обсуждение как звучащие многообещающе. Теперь мне легко удалось проверить состояние «исправлено COW» моей системы Xenial Xerox, сначала следуя инструкциям, приведенным выше в статье, чтобы отобразить текущую версию ядра (оказывается, это :) 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 и быстрое распространение знаний среди пользователей.

Ано Нима
источник
1
Предупреждение исчезнет, ​​если вы используете apt-getвместо него aptсамо по себе.
WinEunuuchs2Unix
Спасибо, @ WinEunuuchs2Unix. Я учусь каждый день, все время ...
Ано Нима
1

Вам необходимо обновить ваши пакеты, используя apt-get:

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

Также вы можете включить сервис livepach :

По совпадению, незадолго до публикации уязвимости мы выпустили сервис Canonical Livepatch Service для 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 (или системы Ubuntu, обновленные до 16.04), возможно, должны включить это поведение, используя:

    $ sudo dpkg-reinfigure unattended-upgrades

`

GAD3R
источник
Ваши слова звучат так, как будто вы работаете на Canonical, если так, то спасибо за инсайдерскую информацию :)
WinEunuuchs2Unix
@ WinEunuuchs2Unix просто пользователь Linux для новичков :)
GAD3R
Да ладно, спасибо за твой ответ. Я боюсь, что вам придется жить с ложным комментарием о том, что вы служите в Canonical, в течение 11 часов, пока я не вернусь домой и не смогу удалить его со своего компьютера.
WinEunuuchs2Unix
$ sudo snap install canonical-livepatch error: cannot install "canonical-livepatch": snap not foundПомогите?
Херши Геймер,