Retbleed: nowy atak spekulatywnej egzekucji uderzający w firmy Intel i AMD

Wiadomości ostatnio to zepsułyGrupa badaczy z ETH Zurich zidentyfikowała nowy atak do spekulatywnego mechanizmu wykonywania skoków pośrednich w CPU, co pozwala na wydobycie informacji z pamięci jądra lub zorganizowanie ataku na system hosta z maszyn wirtualnych.

Luki nosiły kryptonim Retbleed (już skatalogowany pod CVE-2022-29900, CVE-2022-29901) i mają podobny charakter do ataków Spectre-v2.

Różnica sprowadza się do zorganizowania spekulatywnego wykonania dowolnego kodu poprzez przetwarzanie instrukcji „ret” (return), która pobiera adres do skoku ze stosu, zamiast pośredniego przeskakiwania za pomocą instrukcji „jmp”, ładowania adresu z pamięci lub rejestr procesora.

O nowym ataku wspomina się, że atakujący może stworzyć warunki do przewidywania fork niepoprawne i zorganizuj celowy spekulacyjny skok do bloku kodu, który nie jest zamierzony przez logikę wykonania programu.

Ostatecznie procesor ustali, że prognoza rozgałęzienia była nieuzasadniona i wycofa operację do stanu pierwotnego, ale przetwarzane dane Podczas realizacji spekulacyjnej będą siedzieć w pamięci podręcznej oraz bufory mikroarchitektoniczne. Jeśli błędnie wykonany blok wykonuje dostęp do pamięci, to jego spekulacyjne wykonanie doprowadzi do instalacji w ogólnej pamięci podręcznej i odczytania danych z pamięci.

Aby określić dane pozostające w pamięci podręcznej po spekulacyjnym wykonaniu operacji, atakujący może użyć metod określania danych szczątkowych za pośrednictwem kanałów stron trzecich, na przykład analizując zmiany czasu dostępu do danych w pamięci podręcznej, a nie w pamięci podręcznej.

Do celowego wydobycia informacji z obszarów o różnym poziomie uprawnień (na przykład z pamięci jądra) wykorzystywane są „urządzenia”: skrypty obecne w jądrze, odpowiednie do spekulatywnego odczytu danych z pamięci, w zależności od warunków zewnętrznych można na nie wpływać przez napastnika.

W celu ochrony przed klasycznymi atakami klasy Spectre, które wykorzystują pośrednie i warunkowe instrukcje rozgałęzienia, większość systemów operacyjnych wykorzystuje technikę „retpoline”, która polega na zastąpieniu pośrednich operacji rozgałęzienia instrukcją „ret”, dla której wymagane jest oddzielne przewidywanie stanu stosu jednostka jest używana w procesorach, nie używa bloku przewidywania rozgałęzień.

Przy wprowadzeniu retpoline w 2018 r. uważano, że manipulacja adresami w stylu Spectre jest niepraktyczna dla spekulatywnego rozwidlenia z instrukcją „ret”.

Badacze, którzy opracowali metodę ataku Retbleed zademonstrował możliwość stworzenia warunków mikroarchitektonicznych zainicjować spekulatywne przejście za pomocą instrukcji „ret” i wydać gotowy zestaw narzędzi do identyfikowania odpowiednich sekwencji instrukcji (gadżetów) w celu wykorzystania luki w jądrze Linux, w której występują takie warunki.

W trakcie badania przygotowany został działający exploit co pozwala, w systemach z procesorami Intela, z nieuprzywilejowanego procesu w przestrzeni użytkownika wyodrębniać dowolne dane z pamięci jądra z szybkością 219 bajtów na sekundę i z 98% dokładnością.

En procesorów AMD, wydajność exploita jest znacznie wyższa, ponieważ szybkość wycieku wynosi 3,9 KB na sekundę. Jako praktyczny przykład pokazano, jak wykorzystać proponowany exploit do określenia zawartości pliku /etc/shadow. W systemach z procesorami Intela atak mający na celu określenie skrótu hasła roota przeprowadzono w ciągu 28 minut, a w systemach z procesorami AMD w 6 minut.

Atak został potwierdzony dla 6-8 generacji procesorów Intel wydanych przed III kwartałem 2019 r. (w tym Skylake) oraz procesory AMD oparte na mikroarchitekturach Zen 1, Zen 1+ i Zen 2, które zostały wydane przed II kwartałem 2021 r. W nowszych modelach procesorów, takich jak AMD Zen3 i Intel Alder Lake, a także procesory ARM, problem jest blokowany przez istniejące mechanizmy ochrony. Na przykład użycie instrukcji IBRS (Indirect Branch Restricted Speculation) pomaga chronić przed atakiem.

Przygotowałem zestaw zmian dla jądra Linux i hipernadzorcy Xen, które programowo blokują problem na starszych procesorach. Proponowana łatka jądra Linuksa zmienia 68 plików, dodaje 1783 wierszy i usuwa 387 wierszy.

Niestety ochrona wiąże się ze znacznymi kosztami ogólnymi: w tekstach tworzonych na procesorach AMD i Intel spadek wydajności szacuje się na od 14% do 39%. Bardziej preferowane jest stosowanie ochrony opartej na instrukcjach IBRS, dostępnych w nowszych generacjach procesorów Intel i obsługiwanych od jądra Linux 4.19.

Wreszcie, jeśli chcesz dowiedzieć się więcej na ten temat, możesz zapoznać się z szczegóły w poniższym linku.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: AB Internet Networks 2008 SL
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.