Что касается уязвимости безопасности «Призрак», то «Ретполин» был представлен как решение для снижения риска. Тем не менее, я прочитал пост, в котором упоминалось:
Если вы
CONFIG_RETPOLINE
собираете ядро без , вы не можете собирать модули с помощью retpoline, а затем ожидать их загрузки - потому что символы thunk не экспортируются.Однако если вы собираете ядро с помощью retpoline, вы можете успешно загружать модули, не созданные с помощью retpoline. ( Источник )
Есть ли простой и общий / универсальный / унифицированный способ проверить, включено ли ядро «Retpoline» или нет? Я хочу сделать это так, чтобы мой установщик мог использовать правильную сборку модуля ядра для установки.
источник
$ grep . /sys/devices/system/cpu/vulnerabilities/*
, что предлагается в блоге Грега Кроа-Хартмана .head /sys/devices/system/cpu/vulnerabilities/*
себя ;-). Это в настоящее время охватывает уязвимости Meltdown / Spectre, но должно также охватывать любые будущие уязвимости аналогичного характера (пространство имен преднамеренно универсально).head
дает лучший форматированный вывод.Ответ Стивена Китта является более полным в этом конкретном случае, потому что поддержка retpoline также нуждается в новой версии компилятора.
Но в общем случае в большинстве дистрибутивов файл конфигурации ядра доступен в одном из следующих мест:
/boot/config-4.xx.xx-...
/proc/config.gz
Тогда вы можете просто
zgrep CONFIG_RETPOLINE /boot/config* /proc/config.gz
источник
/boot/config*
, поскольку он может быть обнаруженCONFIG_RETPOLINE
в образе ядра, которое установлено, но не запущено в данный момент, что дает ложное чувство безопасности. Проверка/proc/config.gz
или/sys/...
безопасна, но многие дистрибутивы Linux компилируют ядро без/proc/config.gz
./boot/config-$(uname -r)
, тогда?/boot/config-$(uname -r)
не защищено от ошибок: оно по-прежнему не гарантирует, что конфигурация соответствует работающему ядру. Ядра дистрибутива остаются неизменнымиuname -r
в разных версиях, пока ABI ядра не меняется.