Spook.js, nowa technika wykorzystywania luk Spectre w Chrome

Grupa badaczy z amerykańskich, australijskich i izraelskich uniwersytetów podało, że opisał nową technikę ataku która pozwala wykorzystać luki w zabezpieczeniach Klasa Spectre w przeglądarkach opartych na Chromium.

Atak o kryptonimie Spook.js, pozwala podczas wykonywania kodu JavaScript ominąć mechanizm izolacji witryny i odczytać zawartość całej przestrzeni adresowej bieżącego procesu, czyli uzyskać dostęp do danych stron, które są wykonywane w innych zakładkach, ale są przetwarzane w tym samym procesie.

Ponieważ Chrome uruchamia różne witryny w różnych procesach, praktyczne ataki ograniczają się do usług, które umożliwiają różnym użytkownikom hostowanie ich stron. Metoda ataku Spook.js umożliwia ze strony, w której atakujący może osadzić swój kod JavaScript, określić obecność innych stron otwieranych przez użytkownika tej samej witryny i wydobyć poufne informacje z nich na przykład poświadczenia lub dane bankowe zastąpione przez system autouzupełniania w formularzach internetowych.

Innym zastosowaniem metody jest atak na wtyczki przeglądarki, co pozwala, po zainstalowaniu wtyczki kontrolowanej przez atakującego, wyodrębnić dane z innych wtyczek.

Spook.js ma zastosowanie do dowolnej przeglądarki opartej na silniku Chromium, w tym Google Chrome, Microsoft Edge i Brave. Naukowcy uważają również, że metodę można dostosować do pracy z Firefoksem, ale ponieważ silnik Firefoksa bardzo różni się od Chrome, prace nad stworzeniem takiego exploita pozostawiono na przyszłość.

Aby zabezpieczyć się przed atakami związanymi ze spekulacyjnym wykonywaniem instrukcji przez przeglądarkę, w Chrome zaimplementowano segmentację przestrzeni adresowej: izolacja piaskownicy umożliwia działanie JavaScriptu tylko z 32-bitowymi wskaźnikami i współdzielenie pamięci kontrolera w nienakładających się stosach 4 GB.

Aby zorganizować dostęp do całej przestrzeni adresowej procesu i uniknąć ograniczenia 32-bitowego, badacze zastosowali technikę pomylenia typów, która pozwala silnikowi JavaScript przetwarzać obiekt o niewłaściwym typie, umożliwiając utworzenie 64-bitowego kod oparty na kombinacji dwóch wartości 32-bitowych.

Istotą ataku jest to, że poprzez przetworzenie specjalnie spreparowanego szkodliwego obiektu w silniku JavaScript powstają warunki, które prowadzą do spekulatywnego wykonania instrukcji uzyskujących dostęp do tablicy. Obiekt jest wybierany w taki sposób, że pola kontrolowane przez atakujących znajdują się w obszarze, w którym używany jest wskaźnik 64-bitowy.

Ponieważ typ szkodliwego obiektu nie odpowiada typowi przetwarzanej macierzy, w normalnych warunkach działania te są blokowane w Chrome przez mechanizm deoptymalizacji kodu używanego do uzyskiwania dostępu do macierzy. Aby rozwiązać ten problem, kod ataku Type Confusion jest umieszczany w bloku warunkowym „jeśli”, który nie uruchamia się w normalnych warunkach, ale działa w trybie spekulacyjnym, jeśli procesor nieprawidłowo przewiduje więcej rozgałęzień.

W rezultacie procesor spekulatywnie uzyskuje dostęp do wygenerowanego 64-bitowego wskaźnika i przywraca stan po ustaleniu nieudanej prognozy, ale ślady wykonania są ustawione na współużytkowaną pamięć podręczną i można je przywrócić za pomocą metod określania zawartości pamięci podręcznej za pomocą trzeciego kanały party, analizując zmianę czasu dostępu do danych zbuforowanych i niebuforowanych.

Do analizy zawartości pamięci podręcznej w warunkach niewystarczającej precyzji timera dostępnego w JavaScript wykorzystuje się metodę zaproponowaną przez Google, która oszukuje stosowaną w procesorach strategię eksmisji danych z pamięci podręcznej Tree-PLRU i umożliwia, poprzez zwiększenie liczby cykli, znacznie zwiększyć różnicę czasu w obecności i braku wartości w pamięci podręcznej.

Naukowcy opublikowali prototypowy exploit, który działa w Chrome 89 en systemy z procesorami Intel i7-6700K i i7-7600U. Exploit został stworzony przy użyciu prototypów kodu JavaScript opublikowanych wcześniej przez Google w celu przeprowadzania ataków Spectre.

Wreszcie badacze wspominają, że udało się przygotować działające exploity dla systemów opartych na procesorach Intel i Apple M1, które mają możliwość uporządkowania odczytywanej pamięci z prędkością 500 bajtów na sekundę i dokładnością 96%. Metoda ma mieć zastosowanie do procesorów AMD, ale nie udało się przygotować w pełni funkcjonalnego exploita.

źródło: https://www.spookjs.com


Treść artykułu jest zgodna z naszymi zasadami etyka redakcyjna. Aby zgłosić błąd, kliknij tutaj.

Bądź pierwszym który skomentuje

Zostaw swój komentarz

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

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  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.