LVI to nowa klasa ataków na spekulacyjny mechanizm wykonawczy w procesorze

Opublikowany informacja o nowej klasie ataków LVI (Wstrzykiwanie wartości obciążenia, CVE-2020-0551) na spekulatywnym mechanizmie wykonawczym w procesorach Intel, który może zostać wykorzystany do wycieku kluczy i tajnych danych z enklaw Intel SGX i innych procesów.

Nowa klasa ataków opiera się na manipulacji tymi samymi strukturami mikroarchitektury, które są wykorzystywane w atakach MDS (Próbkowanie danych mikroarchitektonicznych), Widmo i Meltdown. Jednocześnie nowe ataki nie są blokowane przez istniejące metody ochrony przed Meltdown, Spectre, MDS i innymi podobnymi atakami. Skuteczna ochrona LVI wymaga zmian sprzętowych w procesorze. Organizując ochronę programowo, dodając przez kompilator instrukcję LFENCE po każdej operacji ładowania z pamięci i zastępując instrukcję RET POP, LFENCE i JMP, rejestruje się zbyt duży narzut - zdaniem badaczy pełna ochrona oprogramowania doprowadzi do zmniejszenia wydajność 2-19 razy.

Część trudności w zablokowaniu problemu równoważy fakt, że atak jest obecnie bardziej teoretyczny niż praktyczny (atak jest teoretycznie możliwy, ale bardzo trudny do zrealizowania i powtarzalny jedynie w testach syntetycznych).
Intel przywłaszczony problem ma umiarkowany poziom zagrożenia (5.6 na 10) i wydany aktualizację oprogramowania sprzętowego i SDK dla środowiska SGX, w którym próbował obejść atak, próbując zablokować atak. Proponowane metody ataku mają obecnie zastosowanie wyłącznie do procesorów Intel, jednak nie można wykluczyć możliwości zaadaptowania LVI dla innych procesorów, do których można zastosować ataki klasy Meltdown.

Problem został zidentyfikowany w kwietniu ubiegłego roku przez badacza Jo Van Bulcka z Uniwersytetu w Leuven, po czym przy udziale 9 badaczy z innych uniwersytetów opracowano pięć podstawowych metod ataku, z których każda pozwala na istnienie bardziej specyficznych opcje. Niezależnie, w lutym tego roku badacze z Bitdefender również odkryty jeden z wariantów ataku LVI i zgłosił go firmie Intel. Warianty ataku wyróżniają się wykorzystaniem różnych struktur mikroarchitektonicznych, takich jak bufor pamięci masowej (SB, Store Buffer), bufor wypełniający (LFB, Line Fill Buffer), bufor przełączania kontekstu FPU oraz używana wcześniej pamięć podręczna pierwszego poziomu (L1D) w atakach np ZombieLoad, RIDL, Fallout, LeniwyFP, Zwiastować и Odwilż.

LVI to nowa klasa ataków na spekulacyjny mechanizm wykonawczy w procesorze

Główny korona LVI przeciwko atakom MDS polega na tym, że MDS manipuluje określeniem zawartości struktur mikroarchitektonicznych pozostałych w pamięci podręcznej po spekulatywnej obsłudze błędów lub operacjach ładowania i przechowywania, podczas gdy
Ataki LVI umożliwiają wstawienie danych atakującego do struktur mikroarchitekturowych w celu wywarcia wpływu na późniejsze spekulatywne wykonanie kodu ofiary. Korzystając z tych manipulacji, osoba atakująca może wyodrębnić zawartość prywatnych struktur danych w innych procesach podczas wykonywania określonego kodu na docelowym rdzeniu procesora.

LVI to nowa klasa ataków na spekulacyjny mechanizm wykonawczy w procesorze

dla problem eksploatacji w kodzie procesu ofiary Powinien się spotkać specjalne sekwencje kodu (gadżety), w których ładowana jest wartość kontrolowana przez atakującego, a załadowanie tej wartości powoduje zgłoszenie wyjątków (błąd, przerwanie lub asysta), odrzucanie wyniku i ponowne wykonanie instrukcji. Po przetworzeniu wyjątku pojawia się okno spekulacyjne, podczas którego wyciekają dane przetwarzane w gadżecie. W szczególności procesor zaczyna wykonywać fragment kodu (gadżet) w trybie spekulacyjnym, po czym stwierdza, że ​​przewidywanie nie było uzasadnione i przywraca operacje do stanu pierwotnego, jednak dane przetworzone podczas wykonywania spekulacyjnego są deponowane w pamięci podręcznej L1D oraz bufory mikroarchitektoniczne i można je odzyskać przy użyciu znanych metod określania danych resztkowych za pośrednictwem kanałów stron trzecich.

Wyjątek „wspomagający”, w przeciwieństwie do wyjątku „błędu”, jest obsługiwany wewnętrznie przez procesor bez wywoływania programów obsługi oprogramowania. Pomoc może wystąpić na przykład wtedy, gdy bit A (dostęp) lub D (brud) w tabeli stron pamięci wymaga aktualizacji. Główną trudnością w przeprowadzeniu ataku na inne procesy jest to, jak zainicjować wystąpienie asysty poprzez manipulację procesem ofiary. Nie ma obecnie na to niezawodnych sposobów, ale niewykluczone, że zostaną one znalezione w przyszłości. Możliwość przeprowadzenia ataku została dotychczas potwierdzona jedynie dla enklaw Intel SGX, pozostałe scenariusze mają charakter teoretyczny lub są możliwe do odtworzenia w warunkach syntetycznych (wymaga dodania określonych gadżetów do kodu)

LVI to nowa klasa ataków na spekulacyjny mechanizm wykonawczy w procesorze

LVI to nowa klasa ataków na spekulacyjny mechanizm wykonawczy w procesorze

Możliwe wektory ataku:

  • Wyciek danych ze struktur jądra do procesu na poziomie użytkownika. Zabezpieczenia jądra Linuksa przed atakami Spectre 1, a także mechanizm ochronny SMAP (Supervisor Mode Access Prevention), znacząco zmniejszają prawdopodobieństwo ataku LVI. Dodanie dodatkowej ochrony do jądra może być konieczne, jeśli w przyszłości zostaną zidentyfikowane prostsze metody ataku LVI.
  • Wyciek danych pomiędzy różnymi procesami. Atak wymaga obecności określonych fragmentów kodu w aplikacji oraz zdefiniowania metody zgłaszania wyjątku w docelowym procesie.
  • Wyciek danych ze środowiska hosta do systemu gościa. Atak jest klasyfikowany jako zbyt złożony, wymagający różnych, trudnych do wdrożenia kroków i przewidywania aktywności w systemie.
  • Wyciek danych pomiędzy procesami w różnych systemach-gościach. Wektor ataku jest bliski zorganizowania wycieku danych pomiędzy różnymi procesami, ale dodatkowo wymaga skomplikowanych manipulacji w celu ominięcia izolacji między systemami-gościami.

Opublikowane przez badaczy kilka prototypy z demonstracją zasad przeprowadzania ataku, ale nie nadają się one jeszcze do przeprowadzania prawdziwych ataków. Pierwszy przykład pozwala przekierować spekulatywne wykonanie kodu w procesie ofiary, podobnie jak programowanie zorientowane na powrót (RPO,Programowanie zorientowane na zwrot). W tym przykładzie ofiarą jest specjalnie przygotowany proces zawierający niezbędne gadżety (przeprowadzenie ataku na rzeczywiste procesy strony trzeciej jest trudne). Drugi przykład pozwala nam ingerować w obliczenia podczas szyfrowania AES wewnątrz enklawy Intel SGX i organizować wyciek danych podczas spekulacyjnego wykonywania instrukcji mających na celu przywrócenie wartości klucza użytego do szyfrowania.


Źródło: opennet.ru

Dodaj komentarz