Meltdown i Spectre: podsumowanie informacji o lukach w procesorach

poprzednie następne

W środę upublicznione zostały informacje o lukach w zabezpieczeniu procesorów Intela, ARM i AMD. W ich efekcie możliwe są ataki nazwane już przez Google jako Meltdown i Spectre, polegające na odczytaniu chronionej pamięci kernela przez zwykłą aplikację. Atak Meltdown jest prostszy do przeprowadzenia i poważniejszy w skutkach niż Spectre. Według niektórych informacji, może on zostać wykonany nawet poprzez przeglądarkę internetową, z użyciem zamieszczonego na stronie internetowej spreparowanego kodu JavaScript - z tego powodu w Google Chrome zaleca się włącznie pełnej izolacji procesów kart. Na ten atak podatne są procesory Intela i ARM, natomiast procesory AMD nie są podatne.

Meltdown jest też oznaczony kodem CVE-2017-5754, oraz znany inaczej jako rogue data cache load (ang. złośliwe ładowanie danych z bufora). To właśnie na tą lukę wydana została łatka przez Microsoft.

Na czym opiera się luka? W dość dużym uproszczeniu wykorzystany zostaje mechanizm predykcji skoków procesora, który próbuje odgadnąć, jaka instrukcja będzie wykonywana w następnej kolejności, i pobiera dla niej dane. Jeśli mechanizm przewidzi źle, musi wycofać przewidywany kod i uruchomić kod, który faktycznie znajduje się w programie. W praktyce okazuje sie, że w buforach pozostają dane pobrane do przewidywanego kodu. W efekcie wykorzystując ten mechanizm można w dużym uproszczeniu w normalnym procesie użytkownika podawać procesorowi takie instrukcje, przez które procesor będzie pobierał dane z obszaru chronionej pamięci, nie przeprowadzając kontroli uprawnień dostępu.

Na Meltdown podatne są wszystkie procesory Intela wyprodukowane od 1995 roku (za wyjątkiem 32-bitowych Atomów z lat 2008-2012), oraz prawdopodobnie wszystkie lub prawie wszystkie procesory ARM od Cortex A15 w górę. Procesory AMD nie są podatne na ten atak

Drugi z ataków, Spectre, jest znacznie trudniejszy i bardziej czasochłonny w realizacji. Spectre można przeprowadzić na dwa sposoby - jako bounds check bypass (Spectre I), oraz branch target injection (Spectre II). Na ten atak podatne są wszystkie procesory Intela wyprodukowane od 1995 roku oraz wszystkie procesory ARM od Cortex A8 w górę. Procesory AMD są podatne na atak Spectre I, natomiast nie udało się jeszcze dowieść podatności na atak Spectre II, ani też zaprzeczyć jej. Firma AMD twierdzi, że prawdopodobieństwo podatności na Spectre II jest bliskie zeru.