Spójrz jak pięknie płonie, czyli Spectre mówi światu „buuu”

Z pozornie niepozornej informacji o wykryciu nowej podatności umożliwiającej przeprowadzenie ataku na nasz komputer, zrobiła się afera na miarę cyfrowej apokalipsy. Doniesienia o „dziurze” w procesorach Intela zostały przez nich zbagatelizowane, na co zespół badawczy Google’a udostępnił całość materiałów na temat ataków Meltdown oraz Spectre. Świat zatrząsł się w posadach, gdyż wspomniane przypadłości okazały się być skuteczne również w przypadku procesorów AMD i ARM.

Dzięki temu dziś mamy nieco więcej wglądu na całość zagrożenia. Okazało się, że architektura niemal wszystkich procesorów pozwala programom uruchamianym przez użytkownika dostęp lub odczyt bloków pamięci wykorzystywanych bezpośrednio przez system (kernel). Aby powyższe nabrało odpowiedniej mocy przerażania, należy uświadomić sobie co co można znaleźć w pamięci wykorzystywanej przez system. Hasła, klucze, bufory danych i innych wrażliwych informacji do których żaden proces nie powinien mieć dostępu.

Meltdown

Podatność którą wykazano w procesorach ARM i Intela produkowanych po 1995 i stosujących out-of-order execution. Użytkownicy AMD mogą odetchnąć, gdyż wspomnianego ataku nie udało się skutecznie przeprowadzić na tych procesorach. Sam Linus Torvalds zaproponował poprawkę do kernela wykrywają procesory AMD i tym samem omijające konieczność stosowania obejścia / poprawki (o tym poniżej).

W dużym skrócie (obszerniejsze informacje w pliku PDF powyżej), wykorzystano tutaj niedoskonałość w przewidywaniu przez procesor kolejnej instrukcji jaka będzie wykonana przez program. Pobierane są dla niej (instrukcji) dane i gdy okazuje się, że procesor źle przewidział co nastąpi dalej, niefrasobliwie pozostawia te dane w pamięci. Zatem oczywistym jest, że ktoś może te dane zbierać bajt po bajcie, wymuszając na procesorze tak generowanie i preparowanie danych, że po jakimś czasie atakujący będzie w posiadaniu całkiem bogatej wiedzy o tym, co się przewinęło przez bufory.

Jako, że wszystko się da załatać, to również i na tę dziurę sprzętową (bo to wina procesora) jest sposób. Stosując Kernel Page Table Isolation (KPTI) wystarczy przenieść pamięć kernela w wydzieloną przestrzeń pamięci wirtualnej… I stracić w najgorszym wypadku do 30 – 40% wydajności procesora. Im stare konstrukcje, tym bardziej odczują wspomnianą łatkę.

Na dzień dzisiejszy załatano system Windows 10 (KB4056892) i macOS (10.13.2). W Linuksie poprawki trafiły do kernela 4.15 i trwają prace, aby przenieść je do wcześniejszych wydań.

Spectre

Ponowne uchybienia w architekturze Intela, AMD, ARM. Ponownie umożliwiają wrogiej nam jednostce przejęcie informacji obrabianych lub zgromadzonych przez inny proces. A nawet przez proces w ramach którego dany kod jest wykonywany (kod w Javascript wydłubujący dane z przeglądarki WWW która go uruchomiła).

W tym przypadku sytuacja jest nieco bardziej skomplikowana, gdyż przeprowadzenie samego ataku to dość żmudny proces. Podobnie jak niemal niemożliwym jest wykonanie łatki aby uniknąć wspomnianej sytuacji (patrz PDF powyżej). Na dzień dzisiejszy nie ma zdecydowanego rozwiązania oprócz wymiany procesora. Uwaga – niestety najnowsze Ryzeny również są podatne na atak Spectre.

Zatem, co dalej? Sytuacja jest nieciekawa. Z jednej strony producenci procesorów mają ciężki orzech do zgryzienia. Sprawy nie da się zatuszować. Wymieniać procesorów również raczej nie. Pozostaje namawianie do zakupu nowych konstrukcji, które… Muszą powstać. Od strony użytkownika wygląda to równie smętnie. Trzeba kupić nowy procesor lub pogodzić się ze stratą wydajności (mierzalną). Firmy hostingowe, cloudy i cała ta strona biznesu nie ma raczej wyjścia. Amazon, Microsoft i inni w pośpiechu próbują załagodzić nieco potencjalne zagrożenia.