BHI (lub Spectre-BHB) to odrodzenie ataków Spectre-v2 na nowoczesne procesory, które wdrażają zabezpieczenia sprzętowe przed atakami typu „memory injection”. Firma Vusec odkryła bardzo sprytny, kompleksowy exploit, który pozwala na kontrolowany wyciek pamięci z jądra w nowoczesnych procesorach Intela. Organizacja zaczęła od zadania sobie pytania czy sprzętowe zabezpieczenia przed Spectre-V2, takie jak Intel EIBRS czy Arm CSV2 spełniły obietnice izolowania uprawnień w różnych sferach wykonywania spekulatywnego (ang. Speculative Execution). Odpowiedź brzmi – nie do końca. Zapewniono pewną izolacje, ale jest ona niekompletna. Stąd właśnie poniższy exploit.

W czasach, gdy znaleziono podatność Spectre, można było łatwo wykorzystać Branch Target Injection (BTI lub Spectre-v2), najniebezpieczniejszy wariant tej luki, na różnych poziomach uprawnień. Na przykład nieuprzywilejowany atakujący z obszaru użytkownika może przekazać dowolny ładunek do pośredniego predyktora gałęzi i nakłonić jądro do spekulatywnego wykonania kodu znalezionego w nowej lokalizacji.

Po ujawnieniu Spectre, dostawcy oprogramowania, tacy jak Ubuntu, wdrożyli tymczasowe środki łagodzące w swoim software, jednak niewystarczające. Kilka lat później Intel i Arm wypuszczają wydajne rozwiązania sprzętowe (tj. eIBRS i CSV2), aby zapobiec takim trywialnym exploitom. Rozwiązania te są złożone, ale ich sedno polega na tym, że predyktor „w jakiś sposób” śledzi poziom uprawnień (użytkownik/jądro), na których wykonywana jest dostarczana gałąź. I, jak można się spodziewać, jeśli cel należy do niższego poziomu uprawnień, wykonanie jądra go nie użyje.

Tutaj w grę wchodzi właśnie BHI. Branch History Injection (lub Spectre-BHB) to nowa odmiana Spectre-v2, która może obejść te zabezpieczenia w celu uproszczenia błędnej wymiany uprawnień. Ograniczenia sprzętowe uniemożliwiają nieuprzywilejowanemu atakującemu wstrzykiwanie wpisów predykcyjnych dla jądra. Jednak predyktor opiera się na historii globalnej, aby wybrać pozycje docelowe do spekulatywnego wykonania. W tym ataku, hacker może zatruć tę historię bezpośrednio z obszaru użytkownika, aby zmusić jądro do błędnego przewidywania bardziej „interesujących” celów jądra (np. gadżetów), z których wyciekają dane.

Konsekwencje wskazane przez Vusec są jednak szersze. Pokazują oni, że BHI ponownie włącza exploity Spectre-v2 z różnymi uprawnieniami, ale także, że podstawowe założenie, że ataki na tym samym poziomie uprawnień są niewykonalne, jest błędne. W rzeczywistości możliwe jest też wykonanie exploitów kernel-to-kernel (tzw. intra-mode BTI), w których atakujący nie wykonuje wstrzykiwania do historii gałęzi z przestrzeni użytkownika. Więcej informacji w naukowym artykule tutaj.


Podsumowanie

Spectre-BHB sprawia, że wszystkie procesory Intel i Arm, które wcześniej były dotknięte przez Spectre-V2, wraz z wieloma chipsetami AMD, są podatne na ataki, co skłania te trzy firmy do wydania aktualizacji oprogramowania aby rozwiązać problem.

Intel zaleca również klientom wyłączenie nieuprzywilejowanych rozszerzonych filtrów pakietów Berkeley (eBPF) Linuksa, włączenie zarówno eIBRS, jak i Supervisor-Mode Execution Prevention (SMEP).

„Ograniczenia Intel eIBRS i Arm CSV2 działają zgodnie z założeniami, ale pozostała powierzchnia ataku jest znacznie ważniejsza niż pierwotnie zakładali dostawcy” – powiedzieli naukowcy.

„Niemniej jednak znalezienie gadżetów, które można wykorzystać, jest trudniejsze niż wcześniej, ponieważ atakujący nie może bezpośrednio wstrzykiwać celów predykcyjnych poza granice uprawnień. Oznacza to, że jądro nie będzie spekulacyjnie przeskakiwać do dowolnych celów dostarczonych przez atakującego, ale tylko spekulacyjnie wykona prawidłowe fragmenty kodu już wykonane w przeszłości.”

Intel wydał już oficjalne zalecenia, co do podatności – link.

Podziel się z innymi tym artykułem!