Dwie z najbardziej nagłośnionych luk w zabezpieczeniach w 2010 roku były bardzo blisko ze sobą powiązane. Zamiast być lukami w zabezpieczeniach oprogramowania, Spectre i Meltdown są lukami w podstawowym projekcie procesorów, co sprawia, że problem jest trudniejszy do rozwiązania. Same problemy są szczególnie poważne, pozwalając na ujawnienie pamięci z innych aplikacji i systemu operacyjnego.
Przegląd
Procesory wykorzystują niewiarygodnie zaawansowane konstrukcje, aby osiągnąć najwyższą wydajność, w tym techniki, w tym wykonanie spekulacyjne i przewidywanie gałęzi. Wykonanie spekulacyjne polega na tym, że procesor zaczyna uruchamiać proces, zanim zorientuje się, czy musi, w celu zaoszczędzenia czasu, gdy ustali, że musi. Przewidywanie rozgałęzień to podzbiór wykonania spekulacyjnego, który próbuje przewidzieć wynik procesu, a następnie rozpoczyna obliczanie następnego kroku w oparciu o tę przewidywaną wartość, umożliwiając procesorowi wykonanie serii instrukcji z zamówienie.
Luka Spectre pochodzi z implementacji tych dwóch funkcji. Pozwala aplikacji na naruszenie technik izolacji pamięci wbudowanych w większość nowoczesnego oprogramowania, umożliwiając ujawnienie pamięci, w tym sekretów, takich jak hasła i klucze szyfrowania. Jednym z problemów Spectre jest to, że do danych można uzyskać dostęp z aplikacji, które nie mają żadnych luk w zabezpieczeniach, ponieważ wymagany jest tylko złośliwy program.
Luka Meltdown opiera się na niektórych technikach pamięciowych, a także na wspomnianym powyżej spekulacyjnym systemie wykonywania. Wykorzystuje „warunek wyścigu” między wykonaniem procesu a sprawdzaniem uprawnień i umożliwia złośliwemu programowi dostęp do pamięci innych aplikacji i systemu operacyjnego.
Wskazówka: „warunek wyścigu” to problem, w którym jedno zadanie ma polegać na innym, ale nie jest egzekwowana poprawna kolejność wykonania. Może to spowodować, że „drugi” proces będzie działał jako pierwszy i użyje niezainicjowanej pamięci, która powinna zawierać wynik „pierwszego” procesu, powodując wyciek poprzedniej zawartości tej pamięci. W tym konkretnym przypadku proces nie powinien działać, dopóki kontrola uprawnień nie sprawdzi, czy jest to dozwolone, ale sprawdzenie uprawnień może nastąpić jako drugie ze względu na optymalizację wydajności.
Efekty
W połowie 2017 r. wiele zespołów niezależnie odkryło i zgłosiło zarówno Meltdown, jak i Spectre prywatnie producentom procesorów, którzy opracowali poprawki. Ze względu na poprawki mające na celu optymalizację wydajności, ostatecznie zmniejszyły one wydajność procesorów nawet o 30% w najgorszych scenariuszach, przy czym spadek wydajności o 2-14% jest bardziej reprezentatywny dla ludzi doświadczenie.
Luki dotyczyły wielu procesorów x86, procesorów IBM POWER i niektórych procesorów opartych na architekturze ARM. Meltdown wpływa na sprzęt zwykle znajdujący się w komputerach osobistych, a także na serwerach w chmurze. Spectre wpływa na komputery osobiste, serwery w chmurze i urządzenia mobilne. Wszystkie procesory firmy Intel od 1995 do połowy 2018 roku były podatne na te problemy (z wyjątkiem linii Itanium i Atom sprzed 2013 roku). Procesory AMD nie zostały dotknięte przez Meltdown, ale były podatne na Spectre.
Poprawki ograniczające zagrożenie dla oprogramowania zostały opracowane i wydane przez dostawców systemów operacyjnych, którzy rozwiązują większość problemów. Od połowy 2018 r. Intel zaktualizował swój projekt procesora, aby uwzględnić rozwiązania sprzętowe dotyczące problemów.
Oba problemy mogą zostać wykorzystane przez złośliwe strony internetowe ze spreparowanym JavaScriptem, więc naprawdę ważne jest, aby upewnij się, że poprawki bezpieczeństwa są zainstalowane w każdym systemie, nawet jeśli utrata wydajności będzie ciężki: Silny. Niestety problemów nie można naprawić za pomocą jednej łatki, ponieważ są to niezwykle złożone problemy z deep integracja ze sprzętem, łatki bezpieczeństwa będą nadal wprowadzane w miarę upływu czasu w miarę pojawiania się nowszych wariantów odkryty.