LVI — nowa klasa ataków na mechanizm spekulacyjnego wykonywania w CPU

Opublikowane informacje o nowej klasie ataków LVI (Load Value Injection, CVE-2020-0551) na mechanizm spekulacyjnego wykonywania w procesorach Intel, które mogą być wykorzystywane do organizowania wycieków kluczy i danych poufnych z enclav Intel SGX oraz innych procesów.

Nowa klasa ataków opiera się na manipulacjach z tymi samymi mikroarchitektonicznymi strukturami, co w atakach MDS (Microarchitectural Data Sampling), Spectre i Meltdown. Nowe ataki nie są blokowane przez istniejące metody ochrony przed Meltdown, Spectre, MDS i innymi podobnymi atakami. Aby skutecznie zabezpieczyć się przed LVI, konieczne są zmiany sprzętowe w CPU. Przy organizacji ochrony programowej, poprzez dodanie przez kompilator instrukcji LFENCE po każdej operacji ładowania z pamięci oraz zastąpienie instrukcji RET na POP, LFENCE i JMP, występują zbyt duże narzuty — według oceny badaczy pełna programowa ochrona prowadzi do spadku wydajności o 2-19 razy.

Częściowo trudność w zablokowaniu problemu rekompensuje fakt, że obecnie atak ma bardziej teoretyczny niż praktyczny charakter (atak jest teoretycznie możliwy, ale bardzo trudny do zrealizowania i powtarzalny tylko w syntetycznych testach).
Firma Intel przypisała problemowi umiarkowany poziom niebezpieczeństwa (5.6 w skali 10) oraz wydała aktualizację oprogramowania układowego i SDK dla środowiska SGX, w których próbowała zablokować przeprowadzenie ataku obejściem. Proponowane metody ataków są obecnie stosowane tylko w procesorach Intel, ale nie można wykluczyć możliwości dostosowania LVI do innych procesorów, wobec których zastosowanie mają ataki klasy Meltdown.

Problem został wykryty w kwietniu ubiegłego roku przez badacza Jo Vana Bulcka z Uniwersytetu w Louvain, po czym przy udziale 9 badaczy z innych uniwersytetów opracowano pięć podstawowych metod przeprowadzania ataków, z których każda dopuszcza istnienie bardziej specyficznych wariantów. Niezależnie w lutym tego roku badacze z firmy Bitdefender również odkryli jeden z wariantów ataku LVI i poinformowali o nim Intela. Warianty ataków różnią się użyciem różnych mikroarchitektonicznych struktur, takich jak bufor pamięci (SB, Store Buffer), bufor ładowania (LFB, Line Fill Buffer), bufor kontekstu FPU i pamięć podręczna pierwszego poziomu (L1D), wcześniej stosowanych w takich atakach jak ZombieLoad, RIDL, Fallout, LazyFP, Foreshadow i Meltdown.

LVI - nowa klasa ataków na mechanizm spekulacyjnego wykonywania w CPU

Głównym różnicy LVI od ataków MDS polega na tym, że MDS manipuluje definicją zawartości struktury mikroarchitektonicznej, pozostałej w pamięci podręcznej po spekulatywnym przetwarzaniu wyjątków (fault) lub operacji load i store, podczas gdy
ataki LVI pozwalają na wstrzyknięcie danych atakującego do struktur mikroarchitektonicznych, aby wpłynąć na następne spekulatywne wykonywanie kodu ofiary. Dzięki wskazanym manipulacjom atakujący może wydobyć zawartość tajnych struktur danych w innych procesach podczas wykonywania określonego kodu na docelowym rdzeniu CPU.

LVI - nowa klasa ataków na mechanizm spekulacyjnego wykonywania w CPU

Dla exploatacji problemu w kodzie procesu-ofiary muszą występować specjalne sekwencje kodu (gadżety), w których ładowana jest kontrolowana przez atakującego wartość, a załadowanie tej wartości prowadzi do wystąpienia wyjątków (fault, abort lub assist), które odrzucają wynik i ponownie wykonują instrukcję. Podczas obsługi wyjątku powstaje spekulatywne okno, w którym następuje wyciek przetwarzanych w gadżecie danych. W szczególności procesor zaczyna wykonywać w trybie spekulatywnym fragment kodu (gadżet), a następnie stwierdza, że przewidywanie się nie sprawdziło, i cofa operacje do stanu początkowego, ale dane przetworzone w trakcie spekulatywnego wykonywania osiadają w pamięci podręcznej L1D i mikroarchitektonicznych buforach i są dostępne do wydobycia z nich z użyciem znanych metod ustalania pozostałych danych przez kanały boczne.

Wyjątek „assist”, w przeciwieństwie do „fault”, jest obsługiwany wewnątrz procesora bez wywoływania programowych odpowiedników. Assist może wystąpić na przykład, gdy konieczne jest zaktualizowanie bitu A (Accessed) lub D (Dirty) w tabeli stron pamięci. Główna trudność w przeprowadzeniu ataku na inne procesy polega na tym, jak zainicjować wystąpienie assist, manipulując procesem ofiary. Obecnie nie istnieją niezawodne metody, aby to osiągnąć, ale w przyszłości nie można wykluczyć ich znalezienia. Możliwość przeprowadzenia ataku została jak dotąd potwierdzona tylko dla enclave'ów Intel SGX, a inne scenariusze są teoretyczne lub reprodukowane w warunkach syntetycznych (wymaga to dodania do kodu określonych gadżetów).

LVI - nowa klasa ataków na mechanizm spekulacyjnego wykonywania w CPU

LVI - nowa klasa ataków na mechanizm spekulacyjnego wykonywania w CPU

Możliwe wektory ataków:

  • Wycieki danych z struktur jądra do procesu na poziomie użytkownika. Ochrona jądra Linux przed atakami typu Spectre 1 oraz mechanizm ochrony SMAP (Supervisor Mode Access Prevention) znacznie zmniejszają prawdopodobieństwo ataku LVI. Wprowadzenie dodatkowej ochrony do jądra może być wymagane w przyszłości, gdy będą identyfikowane prostsze metody przeprowadzania ataków LVI.
  • Wycieki danych między różnymi procesami. Do przeprowadzenia ataku wymagane jest posiadanie określonych fragmentów kodu w aplikacji oraz określenie metody generowania wyjątków w docelowym procesie.
  • Wycieki danych z środowiska hosta do systemu gościa. Atak ten zaklasyfikowany jest jako zbyt skomplikowany, wymagający wykonania różnych trudnych czynności oraz przewidywania aktywności w systemie.
  • Wycieki danych między procesami w różnych systemach gościa. Wektor ataku jest podobny do organizacji wycieków danych między różnymi procesami, ale dodatkowo wymaga wykonania skomplikowanych manipulacji, aby obejść izolację między systemami gościa.

Badacze opublikowali serwerów, nie pozbędziesz się problemu "rozrostu" indeksów z czasem. Oczywiste jest, że jeśli możesz sobie pozwolić na codzienne wprowadzanie nowego serwera, to twoje problemy będą leżeć w zupełnie innej płaszczyźnie niż konkretna baza danych. prototypy z pokazem zasad przeprowadzania ataku, ale jak na razie nie nadają się one do przeprowadzania rzeczywistych ataków. Pierwszy przykład pozwala na przekierowanie spekulacyjnego wykonania kodu w procesie-ofierze w podobny sposób do programowania opartego na zwrotach (ROP, Return-Oriented Programming). W tym przykładzie ofiarą jest specjalnie przygotowany proces, zawierający niezbędne gadgety (zastosowanie ataku na rzeczywiste zewnętrzne procesy jest utrudnione). Drugi przykład pozwala na wniknięcie w obliczenia przy szyfrowaniu AES wewnątrz enklawy Intel SGX i zorganizowanie wycieku danych podczas spekulacyjnego wykonania instrukcji w celu odzyskania wartości klucza wykorzystywanego do szyfrowania.


Odtwarzaj wideo

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster