Как проверить, что KPTI включен на моей Ubuntu?

Текущий Крах уязвимость процессора Intel в настоящее время исправляется путем включения изоляции таблицы страниц. Существует вопрос, как выключить это: Как отключить Изоляцию Таблицы страниц для восстановления производительности, потерянной из-за патча дыры в системе безопасности Intel CPU?

Мой вопрос противоположен: существует ли способ проверить рабочую систему, является ли механизм PTI эффективным в системе, и таким образом система защищена? Я конкретно ищу cat /proc/something или cat /sys/something, не проверка версию ядра или параметр конфигурации и т.п.

65
задан 4 January 2018 в 12:10

7 ответов

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

$ cat /sys/devices/system/cpu/vulnerabilities/*
Mitigation: PTE Inversion
Mitigation: Clear CPU buffers; SMT vulnerable
Mitigation: PTI
Mitigation: Speculative Store Bypass disabled via prctl and seccomp
Mitigation: usercopy/swapgs barriers and __user pointer sanitization
Mitigation: Full generic retpoline, IBPB: conditional, IBRS_FW, STIBP: conditional, RSB filling
6
ответ дан 22 November 2019 в 23:34
  • Отображение CONFIG_PAGE_TABLE_ISOLATION в конфигурации ядра как , предложенное Ранизом, не помогает на настольном Ubuntu, но может помочь в облачных экземплярах:

     grep CONFIG_PAGE_TABLE_ISOLATION = y / boot  / config-`uname -r` && \
    эхо "исправлено :)" ||  echo "исправлено :("
     

  • Вы можете проверить с помощью / proc / cpuinfo , как JonasCz предложил :

     grep -q "cpu_insecure \ | cpu_meltdown \ | kaiser" / proc / cpuinfo && echo "исправлено  :) "\
     ||  echo "исправлено :("
     

  • Или из dmesg (спасибо Джейсону Крейтону ):

     dmesg |  grep -q "Изоляция таблиц страниц ядра / пользователей: включена" \
     && echo "исправлено :)" ||  echo "исправлено :("
     

  • Вы можете скомпилировать тестовую программу из Рафаэля Карвалью для обнаружения Meltdown:

     sudo apt-get install git build-essential
    cd / tmp
    git clone https://github.com/raphaelsc/Am-I-affected-by-Meltdown.git
    cd "Я пострадал от кризиса"
    сделать
    sudo sh -c "эхо 0> / proc / sys / kernel / kptr_restrict"
     ./meltdown-checker
     

в исправленной системе он должен заканчиваться выводом

...
so far so good (i.e. meltdown safe) ...

System not affected (take it with a grain of salt though as false negative
may be reported for specific environments; Please consider running it once again).

  • Проверить с помощью инструмента из https://github.com/speed47/spectre-meltdown-checker :

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

В системе с исправлениями должно отображаться следующее:

Spectre and Meltdown mitigation detection tool v0.27

Checking for vulnerabilities against live running kernel Linux 4.4.0-109-generic #132-Ubuntu SMP Tue Jan 9 19:52:39 UTC 2018 x86_64
...
CVE-2017-5754 [rogue data cache load] aka 'Meltdown' aka 'Variant 3'
* Kernel supports Page Table Isolation (PTI):  YES 
* PTI enabled and active:  YES 
> STATUS:  NOT VULNERABLE  (PTI mitigates the vulnerability)

Не устанавливайте 4.4.0-108-generic на Xenial! Это нарушает функции загрузки / перезагрузки / выключения / приостановки !

Установите 4.4.0-109-generic ( см. USN-3522-3 для получения подробной информации)!


Как Роби Басак уже писал , есть страница о состоянии уязвимостей Spectre и Meltdown в Ubuntu .

Также есть:

63
ответ дан 22 November 2019 в 23:34

Выполните следующую команду:

dmesg | grep 'page tables isolation'

Если отображается "Включено", значит PTI включен. Если ничего не отображается или вы видите в терминале «отключено», то PTI отключен. Ubuntu еще не опубликовал патч, поэтому он не отображает никаких сообщений.

18
ответ дан 22 November 2019 в 23:34

Вы можете проверить с помощью cat / proc / cpuinfo , если он сообщает cpu_insecure в разделе «Ошибки», то PTI включен.

Если он пуст (или просто не содержит cpu_insecure ), то, скорее всего, вы используете ядро, которое еще не было исправлено (в Ubuntu нет), или у вас есть процессор AMD (для которого это, вероятно, не должны быть включены, поскольку они не уязвимы).

В настоящее время все процессоры рассматриваются как уязвимые в последней версии ядра 4.15.

13
ответ дан 22 November 2019 в 23:34

Я нашел этот отличный сценарий sh для тестирования уязвимостей Meltdown / Spectre в вашей системе:

https://github.com/speed47/spectre-meltdown-checker

Проверка сценария вашей системе известные патчи Meltdown и Spectre, чтобы сообщить вам, устранены ли эти уязвимости вашей ОС

8
ответ дан 22 November 2019 в 23:34

Вы можете проверить / proc / config.gz для CONFIG_PAGE_TABLE_ISOLATION = y , что означает, что ядро ​​было скомпилировано с помощью KPTI.

Это в моей исправленной системе Arch Linux под управлением 4.14.11-1:

$ zgrep CONFIG_PAGE_TABLE_ISOLATION /proc/config.gz 
CONFIG_PAGE_TABLE_ISOLATION=y
2
ответ дан 22 November 2019 в 23:34

На моем экземпляре AWS Ubuntu 14.04.5 LTS EC2 я запустил

grep CONFIG_PAGE_TABLE_ISOLATION /boot/config-$(uname -r)

Он должен сказать:

CONFIG_PAGE_TABLE_ISOLATION=y

Для обновления, которое я сделал:

sudo apt-get update && sudo apt-get install linux-image-generic

Думаю, это тоже нормально:

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

Чтобы проверить версию ядра:

uname -r

Должен быть 3.13.0-139-generic или новее.

1
ответ дан 22 November 2019 в 23:34

Другие вопросы по тегам:

Похожие вопросы: