Jeśli chodzi o lukę w zabezpieczeniach „Spectre”, „Retpoline” została wprowadzona jako rozwiązanie zmniejszające ryzyko. Jednak przeczytałem post, w którym wspomniano:
Jeśli zbudujesz jądro bez niego
CONFIG_RETPOLINE
, nie będziesz mógł budować modułów za pomocą retpoliny, a następnie oczekiwać, że się załadują - ponieważ symbole zgubne nie są eksportowane.Jeśli zbudować jądro z retpoline choć, może z powodzeniem załadować moduły, które nie są zbudowane z retpoline. ( Źródło )
Czy istnieje prosty i powszechny / ogólny / zunifikowany sposób sprawdzenia, czy jądro ma włączoną funkcję „Retpoline”? Chcę to zrobić, aby mój instalator mógł użyć właściwej kompilacji modułu jądra do zainstalowania.
źródło
$ grep . /sys/devices/system/cpu/vulnerabilities/*
, co sugeruje blog Grega Kroah-Hartmana .head /sys/devices/system/cpu/vulnerabilities/*
siebie ;-). Obejmuje to obecnie luki w zabezpieczeniach Meltdown / Spectre, ale powinno również obejmować wszelkie przyszłe luki o podobnym charakterze (przestrzeń nazw jest celowo ogólna).head
daje ładniejszy sformatowany wynik.Odpowiedź Stephena Kitta jest bardziej wyczerpująca w tym konkretnym przypadku, ponieważ obsługa retpoliny wymaga również nowej wersji kompilatora.
Ale w ogólnym przypadku większość dystrybucji ma plik konfiguracyjny jądra dostępny w jednej z następujących lokalizacji:
/boot/config-4.xx.xx-...
/proc/config.gz
Więc możesz po prostu
zgrep CONFIG_RETPOLINE /boot/config* /proc/config.gz
źródło
/boot/config*
, ponieważ może to znaleźć sięCONFIG_RETPOLINE
w obrazie jądra, który jest zainstalowany, ale obecnie nie działa, dając fałszywe poczucie bezpieczeństwa. Badanie/proc/config.gz
lub/sys/...
jest bezpieczne, ale wiele dystrybucji Linuksa kompiluje jądro bez/proc/config.gz
./boot/config-$(uname -r)
, więc?/boot/config-$(uname -r)
nie jest głupie: nadal nie gwarantuje, że config pasuje do działającego jądra. Jądra Distro pozostają takie sameuname -r
w wielu wersjach, o ile ABI jądra się nie zmienia.