Grupa badaczy z Politechniki w Grazu (Austria) i Centrum Bezpieczeństwa Informacji im. Helmholtza (CISPA),
Atak Foreshadow wykorzystuje fakt, że podczas uzyskiwania dostępu do pamięci pod adresem wirtualnym, co skutkuje wyjątkiem (błąd strony terminala), procesor spekulacyjnie oblicza adres fizyczny i ładuje dane, jeśli są one dostępne w pamięci podręcznej L1. Dostęp spekulacyjny jest wykonywany przed zakończeniem przeszukiwania tablicy stron pamięci i niezależnie od stanu wpisu tablicy stron pamięci (PTE), tj. przed sprawdzeniem obecności danych w pamięci fizycznej i ich czytelności. Po zakończeniu sprawdzania dostępności pamięci, w przypadku braku flagi Present w PTE, operacja jest odrzucana, ale dane pozostają w pamięci podręcznej i można je odzyskać metodami określania zawartości pamięci podręcznej kanałami bocznymi (analizując zmiany czasu dostępu do danych buforowanych i niebuforowanych).
Badacze wykazali, że istniejące metody ochrony przed Foreshadow są nieskuteczne i wdrażane przy błędnej interpretacji problemu. Słaby punkt
Foreshadow można wykorzystać niezależnie od mechanizmów bezpieczeństwa jądra, które wcześniej uważano za wystarczające. W rezultacie badacze wykazali możliwość przeprowadzenia ataku Foreshadow na systemy ze stosunkowo starymi jądrami, w których włączone są wszystkie dostępne tryby ochrony Foreshadow, a także z nowymi jądrami, w których wyłączona jest jedynie ochrona Spectre-v2 (za pomocą opcja jądra Linuksa nospectre_v2).
Okazało się, że
pobieranie wstępne podczas dostępu do pamięci, ale występuje, gdy spekulatywne dereferencje rejestrów przestrzeni użytkownika w jądrze. Ta błędna interpretacja przyczyny luki początkowo doprowadziła do założenia, że wyciek danych w Foreshadow może nastąpić wyłącznie poprzez pamięć podręczną L1, natomiast obecność pewnych fragmentów kodu (gadżetów pobierania wstępnego) w jądrze może przyczynić się do wycieku danych poza pamięć podręczną L1, na przykład w pamięci podręcznej L3.
Zidentyfikowana cecha otwiera także możliwość tworzenia nowych ataków, których celem są procesy tłumaczenia adresów wirtualnych na fizyczne w izolowanych środowiskach oraz ustalania adresów i danych przechowywanych w rejestrach procesora. W ramach demonstracji badacze wykazali możliwość wykorzystania zidentyfikowanego efektu do wyodrębniania danych z jednego procesu do drugiego z wydajnością około 10 bitów na sekundę w systemie z procesorem Intel Core i7-6500U. Pokazano także możliwość wycieku zawartości rejestru z enklawy Intel SGX (wyznaczenie 32-bitowej wartości zapisanej w rejestrze 64-bitowym zajęło 15 minut). Niektóre rodzaje ataków okazały się możliwe do zrealizowania w JavaScript i WebAssembly, np. możliwe było określenie adresu fizycznego zmiennej JavaScript i wypełnienie rejestrów 64-bitowych wartością kontrolowaną przez atakującego.
Aby zablokować atak Foreshadow poprzez pamięć podręczną L3, skuteczna jest metoda ochrony Spectre-BTB (Branch Target Buffer) zaimplementowana w zestawie poprawek retpoline. Dlatego naukowcy uważają, że konieczne jest pozostawienie włączonej funkcji repoline nawet w systemach z nowymi procesorami, które mają już ochronę przed znanymi lukami w mechanizmie wykonywania spekulatywnego procesora. Jednocześnie przedstawiciele Intela oświadczyli, że nie planują dodawania do procesorów dodatkowych zabezpieczeń przed Foreshadow i uznają za wystarczające włączenie ochrony przed atakami Spectre V2 i L1TF (Foreshadow).
Źródło: opennet.ru