Meltdown/Spectre.
Недавно мне в репы прилетело новое ядро с патчем на мелтдаун и спектру. Так как исправление данных дыр сжирает от 20% до 50% производительности на старых интел процах (ниже скайлейка), то оно ненужно (кроме того, это должно быть исправлено на аппаратном уровне, а сейчас мы имеем кучу костылей, которые убивают огромный процент перформанса).
К тому же, данные уязвимости актуальны только на серверах с виртуализацией, для домашних хомяков или серверов без виртуализации, это просто является потерей производительности.
Версии ядра популярных дистрибутивов, начиная с которых присутствуют патчи для устранения уязвимостей:
Код:
RHEL 6/ CentOS 6 - 2.6.32-696.18.7
RHEL 7/ CentOS 7 - 3.10.0-693.11.6
Debian 7 - 3.2.0-5-amd64
Debian 8 - 3.16.0-5-amd6
Debian 9 - 4.9.0-5-amd64
Ubuntu 14.04 - 3.13.0-139-generic
Ubuntu 16.04 - 4.4.0-109-generic/ 4.13.0-26-generic
Ubuntu 17.10 - 4.13.0-25-generic
Также ряд хостеров поставляет в своих образах ядра, которые им же и модифицированы, например OVH. В таком случае версия ядра может отличатся о тех, которые описаны выше и там уже могут быть вшиты эти патчи.
Для того чтобы проверить вашу систему берём специальный bash скрипт:
https://github.com/speed47/spectre-meltdown-checker
Сохраняем к себе на сервер и выполняем (от root):
Код:
# sh spectre-meltdown-checker.sh
Если ваш сервер уязвим, то будет написано VULNERABLE, если нет, то NOT VULNERABLE соответственно.
Немного покопав гит кернеля линупса, были найдены замечательные коммиты, которые через передачу параметров кернелю выключают "чудо-патчи" (актуально для ванильных ядер):
https://git.kernel.org/pub/scm/linux...7cc83fefb8d537
https://git.kernel.org/pub/scm/linux...422eea71d473e0
Порядок действий на линупсах примерно такой:
- Редактируем grub.cfg для передачи параметров:
Код:
$ su
# nano /etc/default/grub
- Далее вносим изменения в GRUB_CMDLINE_LINUX_DEFAULT, должно получится чето типа этого:
Код:
GRUB_CMDLINE_LINUX_DEFAULT="pti=off nospectre_v2"
Также, можно вместо nospectre_v2 заюзать:
- Сохраняем, выходим и ре-генерим скрипты груба:
Для винды сносим данные KB и больше никогда их не ставим:
Код:
KB4056892 <-- W10 / Server 2016
KB4056891 <-- W10
KB4056890 <-- W10 / Server 2016
KB4056888 <-- W10
KB4056893 <-- W10
KB4056898 <-- W8 / Server 2012 / W8 Embedded
KB4056895 <-- W8 / Server 2012 / W8 Embedded
KB4056897 <-- W7 / Server 2008 / W7 Embedded
KB4056894 <-- W7 / Server 2008 / W7 Embedded
Microarchitectural Data Sampling.
Новая уязвимость в Intel камнях, патчи под Linux уже подъехали. Галактико в опасностэ! Впрочем, с помощью данных уязвимостей на самом деле можно сделать
интересные вещи. Но мне, как Неуловимому Джо, оно нахрен не нужно на домашних машинах, особенно с учетом еще одних потерь производительности в виде 30-40 процентов.
Для отключения достаточно передать несколько параметров в ядро:
Код:
mds=off mitigations=off
По мауналу выше втыкаем эти параметры в
GRUB_CMDLINE_LINUX_DEFAULT, который лежит в
/etc/default/grub и перегенериваем скрипты загрузчика
update-grub.
Не забываем включить назад HT, ну, либо можно не включать.