Nowy atak na struktury mikroarchitektoniczne procesorów Intel i AMD

Zespół badaczy z University of Virginia i University of California przedstawił nowy rodzaj ataku na mikroarchitektoniczne struktury procesorów Intel i AMD, odkryty podczas inżynierii wstecznej nieudokumentowanych możliwości procesorów. Proponowana metoda ataku polega na wykorzystaniu pośredniej pamięci podręcznej mikrooperacji w procesorach, która może służyć do wydobywania informacji gromadzonych w trakcie spekulatywnego wykonywania instrukcji.

W celach optymalizacyjnych procesor rozpoczyna wykonywanie niektórych instrukcji w trybie spekulatywnym, nie czekając na zakończenie poprzednich obliczeń, a jeśli stwierdzi, że przewidywanie było nieprawidłowe, przywraca operację do stanu pierwotnego, ale dane przetworzone podczas wykonywania spekulatywnego są przechowywane w pamięci podręcznej, której zawartość można ustalić.

Należy zauważyć, że nowa metoda znacznie przewyższa ataki Spectre v1 pod względem wydajności, utrudnia ich wykrycie i nie jest blokowana przez istniejące metody ochrony przed atakami typu side-channel, których celem jest blokowanie luk w zabezpieczeniach spowodowanych spekulatywnym wykonywaniem instrukcji (na przykład użycie instrukcji LFENCE blokuje wyciek na ostatnich etapach spekulatywnego wykonywania, ale nie chroni przed wyciekiem przez struktury mikroarchitektoniczne).

Metoda ta dotyczy modeli procesorów Intel i AMD wydanych po 2011 roku, w tym serii Intel Skylake i AMD Zen. Nowoczesne procesory rozbijają złożone instrukcje procesora na prostsze mikrooperacje podobne do RISC, które są buforowane w oddzielnej pamięci podręcznej. Ta pamięć podręczna zasadniczo różni się od pamięci podręcznych wyższego poziomu, nie jest bezpośrednio dostępna i działa jako bufor strumieniowy, umożliwiając szybki dostęp do wyników dekodowania instrukcji CISC i przekształcania ich w mikroinstrukcje RISC. Naukowcy znaleźli jednak sposób na stworzenie warunków, które powstają, gdy dostęp do pamięci podręcznej jest konfliktowy, i pozwalają ocenić zawartość pamięci podręcznej mikrooperacji poprzez analizę różnic w czasie wykonywania niektórych działań.

Nowy atak na struktury mikroarchitektoniczne procesorów Intel i AMD

Pamięć podręczna micro-op w procesorach Intel jest segmentowana względem wątków procesora (Hyper-Threading), natomiast procesory AMD Zen korzystają ze współdzielonej pamięci podręcznej, co stwarza warunki do wycieku danych nie tylko w obrębie pojedynczego wątku wykonawczego, ale także pomiędzy różnymi wątkami w SMT (wyciek danych jest możliwy pomiędzy kodem wykonywanym na różnych logicznych rdzeniach procesora).

Badacze zaproponowali podstawową metodę wykrywania zmian w pamięci podręcznej mikrooperacji oraz kilka scenariuszy ataków, które umożliwiają tworzenie ukrytych kanałów transmisji danych i wykorzystanie podatnego kodu do wycieku poufnych danych, zarówno w obrębie jednego procesu (na przykład w celu wycieku danych procesowych podczas wykonywania kodu stron trzecich w silnikach z JIT), jak i w maszyny wirtualne) oraz między jądrem i procesami w przestrzeni użytkownika.

Podczas przeprowadzania wariantu ataku Spectre z wykorzystaniem pamięci podręcznej mikrooperacji badacze byli w stanie osiągnąć wydajność 965.59 Kbps przy współczynniku błędów 0.22% i 785.56 Kbps przy użyciu korekcji błędów w przypadku zorganizowania wycieku w ramach jednej przestrzeni adresowej i jednego poziomu uprawnień. W przypadku wycieku obejmującego różne poziomy uprawnień (między przestrzenią jądra i użytkownika) wydajność wyniosła 85.2 kbps z dodaną korekcją błędów i 110.96 kbps ze współczynnikiem błędów na poziomie 4%. Podczas ataku na procesory AMD Zen poprzez stworzenie przecieku między różnymi logicznymi rdzeniami procesora, wydajność wyniosła 250 kbps przy współczynniku błędów 5.59% i 168.58 kbps z korekcją błędów. W porównaniu do klasycznej metody Spectre v1, nowy atak okazał się 2.6 razy szybszy.

Oczekuje się, że ochrona przed atakami na pamięć podręczną mikrooperacji będzie wymagała zmian, które spowodują większe obniżenie wydajności niż włączenie ochrony Spectre. Jako optymalny kompromis proponuje się blokowanie takich ataków nie poprzez wyłączenie buforowania, ale na poziomie monitorowania anomalii i identyfikowania stanów buforowania typowych dla ataków.

Podobnie jak w atakach Spectre, wyciek informacji z jądra lub innych procesów wymaga wykonania określonej sekwencji poleceń (gadżetów) w procesie ofiary, co prowadzi do spekulatywnego wykonania instrukcji. W jądrze Linux Znaleziono około 100 podobnych gadżetów, które zostaną usunięte, ale okresowo można znaleźć obejścia umożliwiające ich generowanie, na przykład takie, które obejmują uruchamianie specjalnie zaprojektowanych programów BPF w jądrze.

Źródło: opennet.ru

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster