Obejście ochrony przed atakiem Spectre i wykorzystanie jej do wyodrębnienia danych z pamięci innego procesu

Badacze z ETH Zurich zidentyfikowali dwa sposoby ominięcia obrony przed atakami Spectre, która wykorzystuje instrukcje procesora IBPB (Indirect Branch Prediction Barriers) do resetowania stanu bloku przewidywania rozgałęzień za każdym razem, gdy nastąpi przełączenie kontekstu (na przykład podczas przesyłania kontroli między przestrzenią użytkownika a jądrem) lub pomiędzy systemem gościa a środowiskiem hosta). Pierwsza metoda dotyczy procesorów Intel, a druga - procesorów AMD. Ponadto badacze po raz pierwszy zaimplementowali działający exploit wykorzystujący lukę Spectre do wycieku zawartości pamięci pomiędzy procesami i zademonstrowali jego zastosowanie do wydobywania haseł z pamięci takich procesów, jak Sudo, Su i Polkit.

Pierwsze obejście luki Spectre jest spowodowane błędem mikrokodu w procesorach Intel i dotyczy systemów z procesorami Intel Core 12., 13. i 14. generacji oraz Intel Xeon 5. i 6. generacji. Problem został rozwiązany w aktualizacji mikrokodu wydanej przez firmę Intel w marcu. Błąd umożliwiał utrzymanie wyników przewidywania rozgałęzień po wykonaniu instrukcji IBPB, która powinna je unieważnić, umożliwiając identyfikację danych pozostałych po spekulatywnym wykonaniu instrukcji w innych procesach lub maszyny wirtualne.

W trakcie badań szczególną uwagę poświęcono opracowaniu metody wycieku zawartości pamięci innych procesów, w tym uprzywilejowanych, takich jak sudo. Ponieważ nie było skutecznych technik wykorzystania luk w zabezpieczeniach Spectre w celu przezwyciężenia izolacji między procesami, wdrożenie zabezpieczeń skupiło się głównie na jądrach i hypervisorze, a pominięto kwestie spekulatywnego wykonywania w procesach manipulujących wrażliwymi danymi. Zatem, aby zaatakować procesy, z reguły nie jest konieczne omijanie zabezpieczeń opartych na IBPB, ponieważ takie zabezpieczenie na poziomie procesu było stosowane tylko w pojedynczych przypadkach. Przygotowany w trakcie badania exploit pokazał możliwość wykorzystania luk Spectre do atakowania procesów wykorzystujących bit suid do wykonywania z podwyższonymi uprawnieniami.

Odtwarzanie wideo

Aby wykorzystać luki Spectre na poziomie procesu, w kodzie procesu wymagane są określone sekwencje instrukcji, co prowadzi do spekulatywnego wykonania kodu w zależności od warunków zewnętrznych, na które atakujący może mieć wpływ. Spekulacyjne dostępy do pamięci, które mają miejsce po wykryciu błędnej predykcji gałęzi, są odrzucane przez procesor, ale ślady ich wykonania pozostają w pamięci podręcznej procesora i można je następnie odzyskać z innych procesów za pomocą analizy kanału bocznego, na przykład analizując zmiany czasów dostępu do danych buforowanych i niezapisanych w pamięci podręcznej.

Obejście ochrony przed atakiem Spectre i wykorzystanie jej do wyodrębnienia danych z pamięci innego procesu

Второй способ обхода защиты от Spectre вызван тем, что детали использования инструкций IBPB отличаются в процессорах от различных производителей и в разных поколениях процессоров одного производителя. Из-за того, что семантика IBPB в прошлых поколениях процессоров AMD отличается от семантики в CPU Intel и новых поколений CPU AMD, в ядре Linux имеющиеся отличия не были учтены и некоторые конфигурации были не защищены должным образом. Вероятно, аналогичные проблемы присутствуют в других операционных системах и в гипервизорах, но в ходе исследования было изучено только ядро Linux, в силу доступности его исходного кода. Проблема подтверждена в процессорах AMD поколения Zen, Zen2 и Zen3 (проблемы на системах с Zen3 не подтверждены исследователями, но упомянуты в отчёте AMD) и устраняется через установку обновления ядра (указано, что для исправления подготовлен патч, который пока не принят в основной состав ядра Linux).

Aby zabezpieczyć się przed lukami spowodowanymi spekulatywnym wykonaniem instrukcji, przy każdym transferze sterowania jądro wywołuje procedurę, która wykonuje instrukcję IBPB w celu opróżnienia bufora przewidywania rozgałęzień. Problem wynika z faktu, że w niektórych systemach AMD oprócz czyszczenia predykcji rozgałęzień wymagane jest osobne czyszczenie predykcji adresów zwrotnych używanych w instrukcjach RET. Aby przeprowadzić atak na systemy z procesorami AMD Zen i Zen2, osoba atakująca może zainicjować fałszywe przewidywanie adresu zwrotnego przed zakończeniem operacji IBPB. W ramach demonstracji metody przygotowano exploit, który wyodrębnia zawartość dowolnych obszarów pamięci jądra, co można wykorzystać do wyodrębnienia skrótu hasła użytkownika root z pamięci podręcznej stron systemu operacyjnego.

Odtwarzanie wideo


Źródło: opennet.ru
Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster