Obecna luka w zabezpieczeniach procesora Meltdown Intel jest obecnie usuwana poprzez włączenie izolacji tablicy stron. Istnieje pytanie, jak to wyłączyć: Jak wyłączyć Izolowanie tabeli stron, aby odzyskać wydajność utraconą z powodu dziury w zabezpieczeniach procesora Intel?
Moje pytanie jest odwrotne: czy istnieje sposób sprawdzenia działającego systemu, czy mechanizm PTI działa w systemie, a zatem system jest chroniony? W szczególności szukam cat /proc/something
lub cat /sys/something
nie sprawdzam wersji jądra, parametru konfiguracyjnego itp.
Grepping CONFIG_PAGE_TABLE_ISOLATION w konfiguracji jądra, jak sugeruje Raniz, nie pomaga w Ubuntu na komputerze, ale może pomóc w wystąpieniach chmury:
Możesz to sprawdzić,
/proc/cpuinfo
jak sugerował JonasCz :Lub z
dmesg
(dzięki Jason Creighton ):Możesz skompilować program testowy z Raphaela Carvalho do wykrywania Meltdown:
w systemie załatanym powinien kończyć się wyjściem
Sprawdź za pomocą narzędzia z https://github.com/speed47/spectre-meltdown-checker :
W systemie załatanym powinien on pokazywać:
Nie instaluj 4.4.0-108-generic na Xenial! To łamie boot / restart / wyłączenie / zawiesza funkcjonalność !
Zainstaluj 4.4.0-109-generic ( szczegóły w USN-3522-3 )!
Jak już napisał Robie Basak , w Ubuntu znajduje się strona o statusie luk w Spectre i Meltdown .
Są też:
źródło
dmesg | grep isolation && echo "patched :)" || echo "unpatched :("
polecenie wymienione poniżej jest niepotrzebnie niebezpieczne : nie pokazuje, która linia faktycznie została dopasowana, i chętnie wydrukowałoby „załatane :)”, gdyby dopasowano przypadkowe inne wystąpienie „izolacji” .../proc/cpuinfo
Poleciłbym przeciw drugiej sugestii (grepping dla cpu_insecure). Jeśli umieścisz to w skrypcie i masz procesor w przyszłości, w którym problem został rozwiązany w jego mikroarchitekturze,/proc/cpuinfo
nie będzie już mówić,cpu_insecure
a twój skrypt uwierzy, że jądro nie jest ładowane, nawet jeśli jest załatane . Odradzałbym także trzecią sugestię, ponieważ jest zbyt prawdopodobne, że w pewnym momencieisolation
w danychdmesg
wyjściowych może znajdować się słowo, które nie odnosi się do izolacji tabeli stron jądra.isolation
dopasuje obaKernel/User page tables isolation: enabled
iKernel/User page tables isolation: disabled on command line
.Uruchom następujące polecenie:
Jeśli wyświetla się włączone, PTI jest włączone. Jeśli nic nie jest wyświetlane lub na terminalu jest wyświetlany komunikat „wyłączone”, oznacza to, że PTI jest wyłączony. Ubuntu nie opublikował jeszcze łatki, więc nie wyświetli żadnej wiadomości.
źródło
dmesg
wyjściowych. Sprawdź,/var/log/kern.log*
czy cofnie się wystarczająco daleko, aby wyświetlać komunikaty rozruchowe. Ubuntu zapisywałdmesg
dane wyjściowe podczas uruchamiania/var/log/dmesg
, ale wydaje się, że już tego nie robi.dmesg: invalid option -- 'w'
.-H
jest również nieprawidłowy. Usunięcie flag działało dla mnie dobrze, jak w tej odpowiedziMożesz sprawdzić za pomocą
cat /proc/cpuinfo
, jeśli zgłasza sięcpu_insecure
jako „błędy”, wtedy PTI jest włączony.Jeśli jest pusty (lub po prostu nie wyświetla listy
cpu_insecure
), najprawdopodobniej używasz jądra, które nie zostało jeszcze załatane (Ubuntu nie ma), lub masz procesor AMD (dla którego nie można go włączyć, ponieważ nie są wrażliwe).Obecnie wszystkie procesory są traktowane jako wrażliwe w najnowszym jądrze 4.15.
źródło
cpu_insecure
dla dowolnego procesora x86; 4.14.12 i nowsze ustawią go tylko dla procesorów Intel (w tym tych, które są zbyt stare lub zbyt prymitywne, aby były podatne na atak. Oba ustawią go, nawet jeśli KPTI jest wyłączone.Znalazłem ten świetny skrypt sh do testowania luk w systemie Meltdown / Spectre:
https://github.com/speed47/spectre-meltdown-checker
Skrypt sprawdza Twój system pod kątem znanych łat Meltdown i Spectre w twoim systemie, aby poinformować Cię, czy luki te są teraz ograniczane przez Twój system operacyjny
źródło
Można sprawdzić /proc/config.gz za
CONFIG_PAGE_TABLE_ISOLATION=y
co oznacza, że jądro zostało skompilowane z KPTI.To jest na moim poprawionym systemie Arch Linux z systemem 4.14.11-1:
źródło
/proc/
nie jest domyślnie włączona w jądrach Ubuntu./boot/config-$( uname -r )
Zamiast tego (znacznie mniej eleganckie) obejście to grep .Na mojej instancji AWS Ubuntu 14.04.5 LTS EC2 uruchomiłem
Powinien powiedzieć:
Do aktualizacji zrobiłem:
Myślę też, że to jest OK:
Aby sprawdzić wersję jądra:
Musi być wersja ogólna 3.13.0-139 lub nowsza.
źródło