Zaproponowano metodę ataku polegającą na zdalnym ustalaniu fragmentów pamięci na serwerze

Grupa badaczy z Politechniki w Grazu (Austria), znana wcześniej z opracowywania ataków MDS, NetSpectre, Throwhammer i ZombieLoad, opublikowała nową metodę ataku kanałem bocznym (CVE-2021-3714) na mechanizm deduplikacji pamięci , która pozwala określić obecność w pamięci określonych danych, zorganizować bajt po bajcie wyciek zawartości pamięci lub określić układ pamięci w celu ominięcia zabezpieczenia opartego na randomizacji adresów (ASLR). Nowa metoda różni się od zaprezentowanych wcześniej wariantów ataków na mechanizm deduplikacji tym, że przeprowadza atak z zewnętrznego hosta, stosując jako kryterium zmianę czasu odpowiedzi na żądania wysyłane do atakującego za pośrednictwem protokołów HTTP/1 i HTTP/2. Możliwość przeprowadzenia ataku wykazano dla serwerów opartych na systemach Linux i Windows.

Ataki na mechanizm deduplikacji pamięci wykorzystują różnicę w czasie przetwarzania operacji zapisu jako kanał do wycieku informacji w sytuacjach, gdy zmiana danych prowadzi do klonowania zdeduplikowanej strony pamięci przy użyciu mechanizmu Copy-On-Write (COW) . Podczas działania jądro wykrywa identyczne strony pamięci z różnych procesów i łączy je, odwzorowując identyczne strony pamięci w jeden obszar pamięci fizycznej, aby przechowywać tylko jedną kopię. Kiedy jeden z procesów próbuje zmienić dane powiązane z deduplikowanymi stronami, następuje wyjątek (błąd strony) i przy wykorzystaniu mechanizmu Copy-On-Write automatycznie tworzona jest osobna kopia strony pamięci, która jest przydzielana do procesu. Dokończenie kopii zajmuje dodatkowy czas, co może świadczyć o tym, że zmiany danych zakłócają inny proces.

Naukowcy wykazali, że opóźnienia wynikające z mechanizmu COW można wychwycić nie tylko lokalnie, ale także analizując zmiany w czasach dostarczania odpowiedzi w sieci. Zaproponowano kilka metod określania zawartości pamięci zdalnego hosta poprzez analizę czasu wykonania żądań za pośrednictwem protokołów HTTP/1 i HTTP/2. Do zapisywania wybranych szablonów wykorzystywane są standardowe aplikacje webowe przechowujące w pamięci informacje otrzymane w żądaniach.

Ogólna zasada ataku sprowadza się do wypełnienia strony pamięci na serwerze danymi, które potencjalnie powtarzają zawartość strony pamięci już istniejącej na serwerze. Następnie osoba atakująca czeka, aż jądro wykona deduplikację i połączenie strony pamięci, następnie modyfikuje kontrolowane zduplikowane dane i ocenia czas odpowiedzi, aby określić, czy trafienie się powiodło.

Zaproponowano metodę ataku polegającą na zdalnym ustalaniu fragmentów pamięci na serwerze

Podczas eksperymentów maksymalny współczynnik wycieku informacji wyniósł 34.41 bajtów na godzinę w przypadku ataku za pośrednictwem sieci globalnej i 302.16 bajtów na godzinę w przypadku ataku za pośrednictwem sieci lokalnej, co jest szybsze niż w przypadku innych metod wydobywania danych kanałami stron trzecich (na przykład w ataku NetSpectre szybkość przesyłania danych wynosi 7.5 bajta na godzinie pierwszej).

Zaproponowano trzy działające opcje ataku. Pierwsza opcja pozwala określić, jakie dane znajdują się w pamięci serwera WWW korzystającego z Memcached. Atak sprowadza się do załadowania określonych zestawów danych do pamięci Memcached, wyczyszczenia zdeduplikowanego bloku, ponownego zapisania tego samego elementu i stworzenia warunku wystąpienia kopiowania COW poprzez zmianę zawartości bloku. Podczas eksperymentu z Memcachedem w 166.51 sekundy udało się ustalić wersję biblioteki libc zainstalowaną w systemie działającym na maszynie wirtualnej.

Druga opcja umożliwiła sprawdzenie zawartości rekordów w systemie DBMS MariaDB podczas korzystania z magazynu InnoDB poprzez odtworzenie zawartości bajt po bajcie. Atak odbywa się poprzez wysyłanie specjalnie zmodyfikowanych żądań, co skutkuje jednobajtowymi niezgodnościami na stronach pamięci i analizowaniem czasu odpowiedzi w celu ustalenia, czy przypuszczenie co do zawartości bajtu było prawidłowe. Szybkość takiego wycieku jest niska i wynosi 1.5 bajta na godzinę w przypadku ataku z sieci lokalnej. Zaletą tej metody jest możliwość odzyskania nieznanej zawartości pamięci.

Trzecia opcja umożliwiła całkowite ominięcie mechanizmu zabezpieczającego KASLR w ciągu 4 minut i uzyskanie informacji o przesunięciu pamięci obrazu jądra maszyny wirtualnej, w sytuacji, gdy adres przesunięcia znajduje się na stronie pamięci, w której inne dane się nie zmieniają. Atak został przeprowadzony z hosta znajdującego się 14 przeskoków od atakowanego systemu. Obiecujemy, że przykłady kodu implementujące prezentowane ataki zostaną opublikowane na GitHubie.

Źródło: opennet.ru

Dodaj komentarz