Niektóre mikroprocesory firm Intel i AMD są podatne na nowo odkryty atak polegający na wykonaniu spekulatywnym, który może potajemnie przeciekać dane dotyczące haseł i inne wrażliwe materiały, co ponownie skłania obu producentów chipów do powstrzymania tego, co okazuje się być uporczywą luką.
Naukowcy z ETH Zurich nazwali swój atak Retbleed, ponieważ wykorzystuje on oprogramowanie do obrony o nazwie retpoline, który producenci chipów wprowadzili w 2018 r. w celu złagodzenia szkodliwych skutków ataków spekulacyjnych. Ataki wykonania spekulacyjnego, znane również jako widma, wykorzystują fakt, że współczesne procesory, gdy napotkają bezpośrednią lub pośrednią gałąź instrukcji, przewidują adres następnej instrukcji, którą otrzymają i automatycznie ją wykonują, zanim prognoza zostanie potwierdzona. Spectre działa nakłaniając procesor do wykonania instrukcji, która uzyskuje dostęp do poufnych danych w pamięci, która zwykle jest niedostępna dla aplikacji o niskich uprawnieniach. Rebleed następnie wyodrębnia dane po anulowaniu operacji.
Trampolina czy proca?
Retpoline wykorzystuje serię operacji zwrotu, aby odizolować gałęzie pośrednie od ataków spekulacyjnych, tworząc programowy odpowiednik trampoliny, który zapewnia ich bezpieczne odbicie. Innymi słowy, retpolina działa poprzez zastąpienie pośrednich skoków i wezwań zwrotami, o których wielu badaczy zakładało, że nie są wrażliwe. Obrona została zaprojektowana, aby przeciwdziałać wariancie 2 oryginalne spekulacyjne ataki egzekucyjne stan na styczeń 2018 r. Wariant, w skrócie WIT, wymusza na gałęzi pośredniej wykonanie tzw. kodu „gadżetu”, który z kolei generuje dane, które wyciekają kanałem bocznym.
Niektórzy badacze mają ostrzegany od lat że retpoliny nie są wystarczające do złagodzenia ataków spekulacyjnych, ponieważ użyte retpoliny były podatne na WIT. Znany twórca Linuksa, Linus Torvalds odrzucił takie ostrzeżeniai argumentował, że takie exploity są niepraktyczne.
Naukowcy ETH mają to w końcu pokazane że retpoline nie wystarczy, aby zapobiec spekulacyjnym atakom egzekucyjnym. Ich weryfikacja koncepcji działa przeciwko procesorom Intela z mikroarchitekturami Kaby Lake i Coffee Lake, a także mikroarchitekturami AMD Zen 1, Zen 1+ i Zen 2.
„Retpoline, jako środek łagodzący Spectre WIT, nie traktuje instrukcji zwrotu jako wektora ataku” – napisali badacze Johannes Wikner i Kaveh Razavi. „Chociaż istnieje możliwość obrony instrukcji zwrotu poprzez dodanie ważnego wpisu do RSB [return stack buffer] przed wykonaniem instrukcji return traktowanie każdego zwrotu jako potencjalnie możliwego do wykorzystania w ten sposób wiązałoby się z ogromnym obciążeniem. W poprzednich pracach próbowano warunkowo zapełnić RSB nieszkodliwymi celami zwrotów, gdy głębokość stosu wywołań śledzących licznik na procesor osiągnie określony próg, ale nigdy nie została ona zatwierdzona do użytku w górę. Intel ponownie ocenia to łagodzenie w obliczu ponownego krwawienia, ale procesory AMD wymagają innej strategii”.
W e-mailu Razavi wyjaśnił to w następujący sposób:
Wariant 2 Spectre wykorzystywał gałęzie pośrednie, aby uzyskać dowolne spekulacyjne wykonanie w jądrze. Gałęzie pośrednie zamieniono w zwroty za pomocą retpoline w celu złagodzenia wariantu 2 Spectre.
Rebleed pokazuje, że deklaracje zwrotu niestety przeciekają w pewnych warunkach, podobnie jak w przypadku oddziałów pośrednich. Niestety, te warunki występują zarówno na platformach Intel (opartych na Skylake i Skylake), jak i AMD (Zen, Zen+ i Zen2). Oznacza to, że Retpoline niestety początkowo nie przynosiło ulgi.
W odpowiedzi na badanie, zarówno Intel, jak i AMD zaleciły klientom wprowadzenie nowych środków łagodzących, które zdaniem naukowców zwiększyłyby nawet o 28 procent koszty operacyjne.
Retbleed może przeciekać pamięć jądra z procesorów Intela z szybkością około 219 bajtów na sekundę i z 98-procentową dokładnością. Exploit potrafi wydobyć pamięć jądra z procesorów AMD z przepustowością 3,9 kB na sekundę. Naukowcy stwierdzili, że jest on w stanie zlokalizować i ujawnić skrót hasła roota komputera z systemem Linux z pamięci fizycznej w około 28 minut przy pracy z procesorami Intela i około 6 minut w przypadku procesorów AMD.
Retbleed działa przy użyciu kodu, który zasadniczo zatruwa silnik przewidywania rozgałęzień, na którym opierają się procesory, aby zgadywać. Po zakończeniu zatrucia ten BPU tworzy fałszywe prognozy, które atakujący może kontrolować.
„Odkryliśmy, że nawet jako nieuprzywilejowany użytkownik możemy wstrzykiwać gałęzie docelowe znajdujące się w przestrzeni adresowej jądra” – napisali naukowcy w poście na blogu. „Chociaż nie możemy uzyskać dostępu do celów rozgałęzień w przestrzeni adresowej jądra – rozgałęzienie do takiego celu skutkuje błędem strony – gdy jednostka przewidywania rozgałęzień obserwuje gałąź i zakłada, że została wykonana legalnie, aktualizuje się, jeśli jest to adres jądra. „