Znamy już szczegóły krytycznych błędów w wielu procesorach

dodał 4 stycznia 2018 o 00:28 w kategorii Top  z tagami:
Znamy już szczegóły krytycznych błędów w wielu procesorach

Szczegóły błędów, o których mówi cały świat bezpieczeństwa, zostały ujawnione wcześniej, niż się spodziewaliśmy. Ataki nazwane Meltdown oraz Spectre są faktycznie niebezpieczne i dotyczą wielu rodzin procesorów.

Jann Horn, badacz z dostarczającego niekończący się ciąg błędów zespołu Project Zero, opublikował szczegóły techniczne odkrytych przez siebie błędów w procesorach Intela, AMD i ARM. Informacje miały zostać ujawnione dopiero 9 stycznia, ale ze względu na spekulacje i przecieki pojawiły się już teraz. Poniżej spróbujemy w skrócie przedstawić najważniejsze punkty.

Wyciek informacji z pamięci podręcznej

Na początek kilka słów o tym, jak działają procesory – w ogromnym uproszczeniu. Jednym z podstawowych założeń działania procesorów jest izolacja. System operacyjny zna informacje, których potrzebuje do działania, ale nie powinien ich ujawniać każdej aplikacji. Przykładem niech będzie hasło, którym zaszyfrowany jest dysk twardy. System musi je znać, by zapisywać i odczytywać dane, ale nie musi go znać edytor tekstu, który prosi system o zapisywanie i odczytywanie plików. Na izolacji dostępu pomiędzy procesami oparte jest bezpieczeństwo wielu kluczowych informacji.

Twórcy procesorów zawsze starają się przyspieszyć ich działanie. Jednym z pomysłów jest wróżenie, jakie będą kolejne instrukcje. Procesor wykonuje instrukcje krok po kroku, ale aby działać szybciej, zgaduje, co będzie kolejnym krokiem i „wyprzedza” wykonanie procesu. Jeśli się pomylił – cofa się do punktu, gdzie popełnił błąd, a przetworzone dane zapomina.

Tu pojawiają się dwa problemy. Pierwszy jest taki, że operacje wykonane „z wyprzedzeniem” nie sprawdzają, czy użytkownik miał prawo je wykonać i poznać ich efekt. Ta kontrola następuje dopiero później, jeśli do wykonania instrukcji miało faktycznie dojść. Może się zatem zdarzyć, że odpowiednio zmanipulowany procesor sięgnie do informacji, do których użytkownik nie powinien mieć dostępu. Po ułamku sekundy je porzuca, jednak tu pojawia się drugi problem. Badacz, który odkrył atak, znalazł trzy różne sposoby na wydobycie tych porzuconych informacji z pamięci podręcznej procesora. Stosując bardzo sprytne metody zgadywania jej zawartości był w stanie wykraść z pamięci podręcznej porzucone dane, tym samym uzyskując dostęp do informacji, które nie były dla niego przeznaczone.

Skutki ataku

Badacze, stojący za odkryciami, opisali dwie kategorie ataków: Meltdown i Spectre.

Meltdown umożliwia nieuprzywilejowanemu procesowi odczytywanie zawartości całej pamięci systemowej. Na atak podatne są wszystkie procesory Intela wyprodukowane od roku 1995, oprócz Itanium i Intel Atom sprzed roku 2013 (zatem problem dotyczy zarówno komputerów osobistych jak i serwerów). Nie potwierdzono podatności procesorów AMD i ARM. Dostępne są lub lada moment będą aktualizacje usuwające problem.

Spectre umożliwia złośliwemu procesowi odczytywanie pamięci innych procesów. Podatne są procesory Intela, AMD i ARM, zatem nie tylko komputery osobiste, ale także serwery i smartfony. Trwają prace nad stworzeniem aktualizacji usuwających wykryte problemy. Atak Spectre jest trudniejszy do przeprowadzenia niż atak Meltdown.

Na skutek opisywanych ataków zaburzeniu ulega cały model bezpieczeństwa danych, zarówno w środowiskach lokalnych jak i chmurowych. To naprawdę poważne problemy, chociaż na szczęście ich wykorzystanie jest dalekie od trywialnego. To, co możecie zrobić już dzisiaj, to przynajmniej skonfigurować Google Chrome, by działanie każdej strony izolowała w osobnym fragmencie pamięci. Aktualizacje Windowsa, Androida czy OS X powinny już być lub wkrótce pojawić się na Waszych systemach (o ile używacie wspieranych wersji). Polecamy także kilka wskazówek dla deweloperów, jak uchronić swoje strony przed atakami.

Więcej szczegółów znajdziecie w publikacjach poświęconych Spectre i Meltdown.

Aktualizacja 2018-01-04, 9:00

Wyniki testów wydajności w prawdziwym środowisku. Niebieski – przed łatką, czerwony – po łatce.