Поиск по сайту:

Тестирование уязвимостей процессора Spectre и Meltdown и обновление микрокода в Linux


На этой странице

  1. Как проверить, уязвим ли ваш сервер Linux для ошибок процессора Spectre
  2. Установка
  3. Как проверить Linux на наличие уязвимостей Spectre и Meltdown
  4. Как установить/обновить прошивку микрокода Intel в Linux?
    1. Как узнать текущий статус микрокода

    Введение в уязвимости ЦП Spectre и Meltdown

    Один из способов блокировать эти атаки — очищать кэши памяти в определенное время, удаляя удаленную информацию до того, как злоумышленник сможет получить к ней доступ. Загрузка кеша после каждого системного вызова, вероятно, заблокирует широкий спектр спекулятивных атак, но также замедлит работу системы до такой степени, что пользователи будут искать способы деактивировать механизм. Безопасность информации очень важна, но затраты слишком высоки, когда очистка кэшей памяти сокращает драгоценное производственное время.

    Атаки, использующие спекулятивное выполнение, включают в себя убеждение процессора спекулировать маршрутом, по которому не пойдет неспекулятивное выполнение. Например, функция ядра может содержать проверку ограничения, которая предотвратит доступ кода за пределы конца массива, что вызовет возврат ошибки. Атака, использующая уязвимость Spectre, пропустит эту проверку спекулятивным образом, получив доступ к данным, для доступа к которым был написан код. Возврат ошибки является подсказкой о том, что, возможно, происходит что-то неуместное, но к тому времени ущерб будет уже нанесен.

    Как проверить, уязвим ли ваш сервер Linux для ошибок процессора Spectre

    Spectre & Meltdown Checker – это сценарий оболочки, который проверяет следующие процессоры Intel/AMD/ARM и другие на наличие ошибок:

    • CVE-2017-5753: обход проверки границ (вариант Spectre 1). Вам необходимо перекомпилировать программное обеспечение и ядро с помощью модифицированного компилятора, который вводит код операции LFENCE в нужные позиции в результирующем коде. Влияние снижения производительности на производительность незначительно.
    • CVE-2017-5715: внедрение целевой ветви (вариант Spectre 2). Влияние снижения производительности в зависимости от вашего ЦП.

    • CVE-2017-5754: мошенническая загрузка кэша данных (Meltdown). Вы должны установить обновленную версию ядра с исправлениями PTI/KPTI. Достаточно обновить ядро. Влияние снижения производительности от низкого до среднего.

    spectre-meltdown-checker.sh – это простой сценарий оболочки, позволяющий определить, уязвимо ли ядро Linux (установка) к трем CVE типа спекулятивное выполнение.

    Установка

    Сценарий должен запускаться от имени пользователя root. Вы можете просмотреть исходный код ниже. Используйте команду wget или команду curl, чтобы получить исходный код на вашем компьютере с Linux:

    $ cd /tmp/
    $ wget https://raw.githubusercontent.com/speed47/spectre-meltdown-checker/master/spectre-meltdown-checker.sh

    ИЛИ

    $ git clone https://github.com/speed47/spectre-meltdown-checker.git

    Примеры результатов:

    Клонирование в spectre-meltdown-checker...

    удаленный: Подсчет объектов: 155, готово.

    remote: Сжатие объектов: 100% (20/20), готово.

    удаленный: Всего 155 (дельта 18), повторно использовано 21 (дельта 10), повторно использовано в упаковке 125

    Получение объектов: 100% (155/155), 49,78 КиБ | 145,00 КиБ/с, готово.

    Разрешение дельт: 100% (88/88), выполнено.

    Как проверить Linux на наличие уязвимостей Spectre и Meltdown

    Запустите скрипт от имени пользователя root с помощью команды sudo или команды su:

    $ sudo sh spectre-meltdown-checker.sh

    Примеры выходных данных рабочего стола Ubuntu Linux:

    Еще один вывод с моего сервера CentOS 7.x, где Meltdown/Spectre v1 был исправлен с помощью ядра:

    $ sudo sh spectre-meltdown-checker.sh

    Как установить/обновить прошивку микрокода Intel в Linux?

    Микрокод — это не что иное, как прошивка процессора, предоставляемая Intel или AMD. Ядро Linux может обновлять прошивку процессора без обновления BIOS во время загрузки. Микрокод процессора хранится в оперативной памяти, и ядро обновляет микрокод при каждой загрузке. Эти обновления микрокода от Intel/AMD необходимы для исправления ошибок или внесения опечаток, чтобы избежать ошибок процессора. На этой странице показано, как установить обновление микрокода AMD или Intel с помощью диспетчера пакетов или обновлений микрокода процессора, предоставляемых Intel в Linux.

    Как узнать текущий статус микрокода

    Выполните следующую команду от имени пользователя root:

    # dmesg | grep microcode

    Примеры выходных данных:

    Как установить прошивку микрокода Intel в Linux с помощью диспетчера пакетов

    Инструмент для преобразования и развертывания обновления микрокода процессора для x86/amd64 поставляется с Linux. Процедура установки прошивки микрокода AMD или Intel в Linux выглядит следующим образом:

    1. Откройте приложение терминала.

    1. Тип пользователя Debian/Ubuntu Linux: sudo apt install intel-microcode

    1. Тип пользователя CentOS/RHEL Linux: sudo yum install microcode_ctl

    Имена пакетов для популярных дистрибутивов Linux следующие:

    • microcode_ctl и linux-firmware — пакет обновления микрокода CentOS/RHEL

    • intel-microcode — пакет обновления микрокода Debian/Ubuntu и клонов для процессоров Intel.
    • amd64-microcode — Debian/Ubuntu и клоны прошивки микрокода для процессоров AMD
    • linux-firmware — прошивка микрокода Arch Linux для процессоров AMD (устанавливается по умолчанию и никаких действий с вашей стороны не требуется)
    • intel-ucode — прошивка микрокода Arch Linux для процессоров Intel.
    • microcode_ctl, linux-firmware и ucode-intel — пакет обновления микрокода Suse/OpenSUSE Linux

    Предупреждение. В некоторых случаях обновление микрокода может вызвать проблемы с загрузкой, такие как зависание сервера или автоматический сброс во время загрузки. Делайте это на свой страх и риск.

    Примеры

    Введите следующую команду apt command/apt-get на Debian/Ubuntu Linux для процессора Intel:

    $ sudo apt-get install intel-microcode

    Примеры выходных данных:

    Вы должны перезагрузить бокс, чтобы активировать обновление микрокода:

    $ sudo reboot

    Проверьте это после перезагрузки:

    # dmesg | grep 'microcode'

    Если вы используете RHEL/CentOS, попробуйте установить или обновить следующие два пакета с помощью команды yum:

    $ sudo yum install linux-firmware microcode_ctl
    $ sudo reboot
    $ sudo dmesg | grep 'microcode'

    Как обновить/установить микрокод, загруженный с сайта Intel?

    Используйте следующий метод только в том случае, если он рекомендован вашим поставщиком, в противном случае придерживайтесь пакетов Linux, как описано выше. Большинство сопровождающих дистрибутивов Linux обновляют микрокод через диспетчер пакетов. Метод менеджера пакетов безопасен, проверен многими пользователями.

    Как установить большой двоичный объект микрокода процессора Intel для Linux (выпуск 20180108)?

    Посетите сайт AMD или Intel, чтобы получить последнюю версию прошивки микрокода. Сначала извлеките его с помощью команды tar:

    $ mkdir firmware
    $ cd firmware
    $ tar xvf ~/path/to/file/microcode-20180108.tgz
    $ ls –l

    Примеры выходных данных:

    Убедитесь, что /sys/devices/system/cpu/microcode/reload завершает работу:

    $ ls -l /sys/devices/system/cpu/microcode/reload

    Вы должны скопировать все файлы из intel-ucode в /lib/firmware/intel-ucode/ с помощью команды cp:

    $ sudo cp -v intel-ucode/* /lib/firmware/intel-ucode/

    Вы только что скопировали каталог intel-ucode в /lib/firmware/. Напишите для интерфейса перезагрузки значение 1, чтобы перезагрузить файлы микрокода:

    # echo 1 > /sys/devices/system/cpu/microcode/reload

    Обновите существующий initramfs, чтобы в следующий раз он загружался через ядро:

    $ sudo update-initramfs -u
    $ sudo reboot

    Проверка того, что микрокод был обновлен при загрузке или перезагружен с помощью команды echo:

    # dmesg | grep microcode

    Это все. Вы только что обновили прошивку для вашего процессора Intel.