Celem pamięci podręcznej jest utrzymywanie jak największej ilości przydatnych danych w taki sposób, żeby błędy braku strony były obsługiwane szybko. Większość pamięci procesu użytkownika znajduje się w pamięci podręcznej stron lub pliku wymiany (ang. swap cache). Pamięć podręczna jest "warstwą" systemu znajdującą się pomiędzy jądrem i kodem obsługującym dyskowe operacje wejścia wyjścia. Strony wymiatane z pamięci procesu nie są natychmiast zapisywane na dysk, ale dodawane właśnie do pamięci podręcznej.
Atak side-channel opisany przez zespół badawczy działa poprzez mechanizmy zawarte w systemach operacyjnych Windows i Linux, które pozwalają programistom lub aplikacjom sprawdzić, czy strona pamięci jest obecna w pamięci podręcznej strony systemu operacyjnego. Te dwa mechanizmy to wywołanie systemowe "mincore" dla systemu Linux i wywołanie systemowe "QueryWorkingSetEx" dla systemu Windows.
Następnie naukowcy wykorzystali złośliwy proces uruchomiony w systemie w celu utworzenia stanów eksmisji pamięci podręcznej stron, które zwalniają stare strony pamięci z pamięci podręcznej strony. Ponieważ system pamięci podręcznej stron systemu operacyjnego zapisuje eksmitowane dane na dysku, uruchamia różne błędy lub ładuje nowe strony do pamięci podręcznej stron, naukowcy twierdzą, że mogą wywnioskować, jakie dane są przetwarzane w pamięci podręcznej stron, nawet przez inne procesy lub aplikacje.
Atak side-channel opisany przez zespół badawczy działa poprzez mechanizmy zawarte w systemach operacyjnych Windows i Linux, które pozwalają programistom lub aplikacjom sprawdzić, czy strona pamięci jest obecna w pamięci podręcznej strony systemu operacyjnego. Te dwa mechanizmy to wywołanie systemowe "mincore" dla systemu Linux i wywołanie systemowe "QueryWorkingSetEx" dla systemu Windows.
Następnie naukowcy wykorzystali złośliwy proces uruchomiony w systemie w celu utworzenia stanów eksmisji pamięci podręcznej stron, które zwalniają stare strony pamięci z pamięci podręcznej strony. Ponieważ system pamięci podręcznej stron systemu operacyjnego zapisuje eksmitowane dane na dysku, uruchamia różne błędy lub ładuje nowe strony do pamięci podręcznej stron, naukowcy twierdzą, że mogą wywnioskować, jakie dane są przetwarzane w pamięci podręcznej stron, nawet przez inne procesy lub aplikacje.
W wyjaśnieniu ataku autorzy napisali:
Nasz atak pozwala na nieuprawnione monitorowanie niektórych dostępów do pamięci innych procesów, z przestrzenną rozdzielczością 4KB i czasową rozdzielczością 2 mikrosekundy na Linuksie (ograniczone do 6,7 pomiarów na sekundę) i 466 nanosekund w systemie Windows (ograniczone do 223 pomiarów na sekundę); jest to mniej więcej ten sam rząd wielkości, co obecne ataki pamięci podręcznej typu "state-of-the-art".
Co to dokładnie oznacza? Wartości te pozwalają na przechwytywanie więcej niż 6 naciśnięć klawiszy na sekundę, więc jest to wystarczająca ilość do dokładnego przechwycenia wprowadzanych informacji, np. haseł.
Wartości zwracane przez atak na pamięć podręczną strony podczas wprowadzania hasła w systemie Linux (u góry) i podczas pisania w edytorze w systemie Windows (na dole). W Windowsie zaobserwowano zdarzenia zarówno przy naciśnięciu jak i puszczeniu klawisza klawiatury i osiągnięto wysoką częstotliwość ataku. W obu przypadkach nie występują zakłócenia między naciśnięciami klawiszy. Źródło: Page Cache Attacks (https://arxiv.org/pdf/1901.01161.pdf) |
Po wyszczególnieniu informacji podstawowych dotyczących pamięci podręcznych sprzętu, ataków pamięci podręcznej i pamięci podręcznych oprogramowania autorzy dostarczają model zagrożenia atakiem, w którym naukowcy zakładają, że "napastnik i ofiara mają dostęp do tej samej pamięci podręcznej strony systemu operacyjnego. W Linuksie zakładają również, że atakujący ma dostęp do odczytu strony docelowej, która może być dowolną stroną dowolnego pliku dostępnego dla atakujących w systemie".
Przegląd ataku Źródło: Page Cache Attacks (https://arxiv.org/pdf/1901.01161.pdf) |
Technika przedstawiona w dokumentacji ataku pozwala w 2,68 sekund eksmitować strony na Linuxie. W systemie Windows trwa to wolniej, ze średnim czasem wykonania 10,1 sekund.
Wszystkie wymienione powyżej ataki są możliwe do przeprowadzenia lokalnie, gdzie nieuprzywilejowany proces uruchamia złośliwy kod na docelowym komputerze ofiary (np. poprzez malware). Atak można jednak zmodyfikować tak, aby atakujący "bombardował" zdalnie komputer złośliwym kodem w celu pobrania danych z jego pamięci. Jednak zdalne ataki nie są aż tak skuteczne, ponieważ nie mogą ominąć np. piaskownic i wymagają precyzyjnego dostosowania w oparciu o sprzęt ofiary (nie są sprzętowo niezależne, jak lokalne ataki).
Opóźnienie podczas zdalnego ataku side-channel na pamięć podręczną stron Źródło: Page Cache Attacks (https://arxiv.org/pdf/1901.01161.pdf) |
Powyższy rysunek przedstawia histogram opóźnienia podczas przeprowadzanego zdalnego ataku side-channel na 100 kilobajtowy plik pamięci podręcznej stron (ok. 25 stron). Ponadto, opóźnienia zwiększają się wraz z ilością pozyskiwanych atakiem stron.
Mounir Hahad, szef Juniper Threat Labs w Juniper Networks stwierdził, że "ta klasa ataku prezentuje znacznie niższą barierę złożoności niż wcześniejsze ataki side-channel z wykorzystaniem sprzętu i może być łatwo stosowana zarówno przez pojedynczych hackerów jak i cyber-gangi".
Autorzy ataków ujawnili lukę firmie Microsoft a ta już naprawiła sposób, w jaki Windows radzi sobie z odczytami cache strony. Dyskusje o tym, jak radzić sobie z łatkami na Linuksa wciąż trwają.
Ponadto, jeden z naukowców pracujących nad atakiem stwierdził, że nie testowano ataku na MacOS, ale ponieważ system ten również wykorzystuje mechanizmy pamięci podręcznej stron, ataki tego typu są jak najbardziej możliwe do przeprowadzenia.
Więcej informacji w języku angielskim znajdziecie w dokumentacji ataku:
https://arxiv.org/pdf/1901.01161.pdf
Źródło:
Daniel Gruss, Erik Kraft, Trishita Tiwari, Michael Schwarz, Ari Trachtenberg, Jason Hennessey, Alex Ionescu, Anders Fogh - Page Cache Attacks (https://arxiv.org/pdf/1901.01161.pdf)
zdnet.com
zdnet.com
Brak komentarzy:
Prześlij komentarz