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

57

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

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

    
задан Martin Vysny 04.01.2018 в 08:55
источник

6 ответов

59
  • Grepping CONFIG_PAGE_TABLE_ISOLATION в конфигурации ядра как предлагаемый Raniz не помогает на рабочем столе Ubuntu, но может помочь в облачных экземплярах:

    grep CONFIG_PAGE_TABLE_ISOLATION=y /boot/config-'uname -r' && \
    echo "patched :)" || echo "unpatched :("
    
  • Вы можете проверить с помощью /proc/cpuinfo как JonasCz :

    grep -q "cpu_insecure\|cpu_meltdown\|kaiser" /proc/cpuinfo && echo "patched :)" \
    || echo "unpatched :("
    
  • Или из dmesg (спасибо Джейсон Крейтон ):

    dmesg | grep -q "Kernel/User page tables isolation: enabled" \
    && echo "patched :)" || echo "unpatched :("
    
  • Вы можете скомпилировать тестовую программу из Рафаэля Карвалью для обнаружения Meltdown:

    sudo apt-get install git build-essential
    cd /tmp
    git clone https://github.com/raphaelsc/Am-I-affected-by-Meltdown.git
    cd Am-I-affected-by-Meltdown
    make
    sudo sh -c "echo 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).
  • Проверьте с помощью инструмента Ссылка :

    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)

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

Установите 4.4.0-109-generic ( см. USN-3522-3 ).

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

Также есть:

ответ дан N0rbert 12.01.2018 в 21:47
источник
15

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

dmesg | grep 'page tables isolation'

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

ответ дан AadhilRF 04.01.2018 в 09:33
12

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

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

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

    
ответ дан JonasCz 04.01.2018 в 09:16
8

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

Ссылка

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

    
ответ дан Compte droid 10.01.2018 в 10:34
2

Вы можете проверить /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
    
ответ дан Raniz 04.01.2018 в 09:28
0

В моем экземпляре 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-общий или более поздний.

    
ответ дан drKreso 12.01.2018 в 11:17