Ulepszone wersje ataków na procesory zignorują sprzętowe zabezpieczenia

Strona główna Aktualności

O autorze

Podejmowane ostatnio próby zneutralizowania luk Meltdown i Spectre na poziomie architektury sprzętowej, mogą okazać się nic nie warte. Informatycy z Nvidii i Princeton University zdołali ulepszyć te słynne ataki na procesory, wychodząc poza to, co zaprezentowano w zaprezentowanych w styczniu przykładowych exploitach. Wygląda na to, że jeśli Intel chce naprawdę stworzyć procesory odporne na te ataki, to będzie musiał ograniczyć liczbę stosowanych w nich rdzeni. Najlepiej do jednego. Niemożliwe? Oczywiście. Dlatego do końca świata współczesnych architektur mikroprocesorowych będziemy korzystać ze szkodzących wydajności I/O łatek software’owych.

Udostępniony na łamach serwisu arXiv.org artykuł pt. MeltdownPrime and SpectrePrime: Automatically-Synthesized Attacks Exploiting Invalidation-Based Coherence Protocols przedstawia nowe podejście do wydobywania wrażliwych danych przetwarzanych przez oprogramowanie działające na podatnych na Meltdown i Spectre ataków. Powstało ono na drodze, można by powiedzieć, eksperymentalnej.

Naukowcy stworzyli specjalistyczny symulator, na którym formalnie modelowane są mikroarchitektury procesorów, by analizować na nich określone wzorce uruchomieniowe, w tym towarzyszące wywołaniom ataków Meltdown i Spectre poprzez analizę opóźnień odczytu cache procesora. Na tych modelach testowano nowe metody wykorzystania błędów w architekturze do odczytu wrażliwych danych. Ostatecznie opracowano w ten sposób dwie ulepszone techniki, które otrzymały nazwy MeltdownPrime i SpectrePrime.

Tak samo jak w poprzednich wariantach, mamy do czynienia z nadużyciem pamięci cache w procesorze. Jak interesujący się tematem Czytelnic zapewne wiedzą, problem z Meltdown i Spectre wział się z przetwarzania instrukcji poza kolejnością (out-of-order), pozwalającego efektywniej wykorzystać dostępne zasoby obliczeniowe, oraz spekulatywnego wykonywania rozkazów, w których procesor próbuje przewidzieć ścieżki rozgałęzień kodu, zyskując niezły przyrost wydajności, jeśli zgadywanie okaże się udane.

Wszystkie te operacje wykonywane są na wielu rdzeniach, z wykorzystaniem całej hierarchii pamięci cache, różniących się szybkością i pojemnością – a to prowadzi regularnie do sytuacji, w której w systemie mamy wiele kopii tych samych danych. By nad tym zapanować, stosowane są protokoły koherencji (spójności) cache, mające zapewnić, że wszystkie rdzenie mają pewien uwspólniony widok stanu zbuforowanych w tych hierarchiach pamięci cache danych. Protokoły regulują więc stany cache, określając ich ważność i prawa dostępu.

I właśnie tutaj zostają wykorzystane nowe ataki MeltdownPrime i SpectrePrime. Wykorzystują one metody unieważnienia protokołów koherencji w precyzyjnie kontrolowanym czasowo ataku, dając wgląd w to jak ofiara korzysta z cache procesora. Jak wyjaśniają badacze, chodzi tu o atak typu Prime+Probe, który ma zapewnić taki sam poziom dokładności jak wcześniej stosowany ataku Flush+Reload, udostępniając te same informacje.

Różnica polega na tym, że o ile ataki Meltdown i Spectre są możliwe wskutek zanieczyszczania cache podczas spekulacji nad rozgałęzieniami kodu, do MeltdownPrime i SpectrePrime dochodzi wskutek spekulatywnego wysyłania żądań zapisu w systemach, które wykorzystują bazujący na unieważnieniach protokół koherencji pamięci cache. Protokół ten może unieważnić linie cache (czyli jednostki danych przekazywane między cache i pamięcią operacyjną) dla współdzielonych rdzeni w wyniku spekulatywnych żądań zapisu, nawet jeśli dana operacja zostaje później porzucona – tłumaczą twórcy nowej wersji ataków. Wykorzystuje się tutaj przeciwko sobie poszczególne rdzenie, próbujące uzyskać wyłączność na zapis danych pod dany adres.

Opracowane dla Meltdowna i Spectre zabezpieczenia programowe powinny być wystarczające, by zneutralizować zagrożenie ze strony MeltdownPrime i SpectrePrime. Według badaczy próby neutralizacji zagrożeń poprzez zmiany w architekturze sprzętowej będą jednak nieskuteczne.

Jak na razie MeltdownPrime istnieje tylko teoretycznie. Udało się jednak napisać w języku C exploita dla SpectrePrime. Został on z powodzeniem uruchomiony na MacBooku Pro z procesorem Intel Core i7, działającym pod kontrolą systemu macOS Sierra 10.12.16 (a więc jeszcze bez wprowadzonych przez Apple software’owych łatek na Spectre). W serii stu uruchomień przyniósł on praktycznie taki sam poziom skuteczności (97,9%), jaki osiągnęło Spectre (99,95%).

© dobreprogramy
s