SLAP & FLOP: podatności związane z mechanizmami spekulacji i predykcji w Apple Silicon

Karol Mazurek

Współczesne procesory (CPU) wykorzystują mechanizmy spekulacji (ang. speculative execution)
oraz przewidywania (ang. prediction) w celu zwiększenia wydajności. Niestety optymalizacje
te wprowadzają nowe podatności związane z bezpieczeństwem. Dwa związane z nimi ataki wykorzystują predykcyjne mechanizmy Apple Silicon do wycieku wrażliwych danych poprzez wykonania spekulacyjne, są to:

W tym artykule omówimy te ataki, ich konsekwencje oraz możliwe metody ich ograniczania. Miłej lektury!

SLAP: Speculative Load Address Prediction

SLAP wykorzystuje mechanizm przewidywania adresów ładowania (ang. Load Address Predictor, LAP)
w procesorach Apple, który przewiduje adresy pamięci dla instrukcji załadowania na podstawie wcześniejszych wzorców dostępu. Jeśli przewidziany adres znajduje się w pamięci podręcznej (cache), procesor spekuluje i ładuje dane z tego adresu, zanim zweryfikuje rzeczywisty adres pamięci.

Odkrycie mechanizmu Load Address Predictor

Badacze z Georgia Institute of Technology oraz Ruhr University Bochum zidentyfikowali istnienie mechanizmu LAP na procesorach Apple M2, M3 oraz serii A (A15 i nowsze). Przeprowadzili eksperymenty, które wykazały znaczące przyspieszenie wykonywania kodu podczas ładowania danych w schemacie sekwencyjnym (ang. striding pattern, czyli wzrastające adresy pamięci w uporządkowany sposób). To przyspieszenie wskazuje, że LAP spekulacyjnie ładuje przewidywane adresy jeszcze przed ich rzeczywistą weryfikacją.

Ogólny schemat przeglądarkowej wersji narzędzia do treningu LAP. Powyższy diagram przedstawia wersję narzędzia do treningu LAP uruchomioną w przeglądarce. Wykonanie architektoniczne (ang. architectural execution) oznaczono niebieskimi strzałkami, natomiast wykonanie spekulacyjne (ang. speculative execution) przedstawiono za pomocą czerwonych strzałek oraz wyróżnionego obszaru.

Źródło: http://predictors.fail/files/SLAP.pdf

Eksploitacja LAP

  • Odczyty poza zakresem pamięci: Manipulując mechanizmem LAP, atakujący może oszukać CPU, aby spekulacyjnie załadowało wrażliwe dane spoza przydzielonego obszaru pamięci.
  • Omijanie ASLR (Losowe Rozmieszczenie Przestrzeni Adresowej, ang. Address Space Layout Randomization): Spekulacyjne wykonanie LAP ujawnia informacje o układzie pamięci, co pozwala ominąć mechanizmy ASLR.
  • Ataki na przeglądarkę (ang. Browser Attacks): Atak SLAP wykorzystujący JavaScript pozwala
    na wyciąganie wrażliwych danych ze stron internetowych, wykorzystując sposób, w jaki Safari zarządza obiektami JavaScript.

Rzeczywiste skutki

SLAP może być użyty do wykradania poufnych danych z sesji przeglądarki użytkownika, takich jak e-maile z Gmaila czy dane logowania do stron internetowych. Atak jest trudny do wykrycia i działa wewnątrz zamkniętego środowiska pracy przeglądarki (ang. browser sandbox).

FLOP: False Load Output Predictions

FLOP atakuje mechanizm przewidywania wartości załadowania (ang. Load Value Predictor, LVP)
w procesorach Apple, który przewiduje wartości danych ładowanych z pamięci, aby przyspieszyć wykonywanie kodu. Gdy LVP błędnie przewidzi wartość, CPU może operować na nieprawidłowych danych, co potencjalnie prowadzi do wycieku wrażliwych informacji.

Odkrycie wykorzystania mechanizmu Load Value Predictor

Badacze zaobserwowali, że procesory Apple optymalizują zależności typu Read-After-Write (RAW)
za pomocą mechanizmu LVP. LVP uaktywnia się, gdy ta sama wartość jest wielokrotnie ładowana
z pamięci, co pozwala na spekulacyjne wykonanie kolejnych operacji z przewidywaną wartością.

Źródło: https://predictors.fail/files/FLOP.pdf

Eksploitacja LVP

  • Zamiana typów w Safari: Manipulując LVP, atakujący może oszukać silnik JavaScript przeglądarki Safari, aby używał przewidywanej wartości jako wskaźnika, co prowadzi do dowolnego dostępu do pamięci.
  • Przejęcie wykonywania WebAssembly w Chrome: W Chrome, FLOP może błędnie przewidzieć wywołania funkcji WebAssembly, prowadząc do spekulacyjnego wykonania niepożądanych funkcji.
  • Ataki na poziomie jądra: Jeśli atakujący znajdą odpowiednie mechanizmy w jądrze systemu, FLOP może zostać wykorzystany do obejścia zabezpieczeń jądra, zwiększając zakres ataku.

Rzeczywiste skutki

FLOP umożliwia atakującym wyciąganie prywatnych danych z sesji przeglądarki, takich jak historia przeglądania, tokeny uwierzytelniające, a nawet dane kart kredytowych przechowywane w aplikacjach webowych – podobnie jak SLAP. Możliwość spekulacyjnego wykonywania dowolnych funkcji czyni go poważnym wektorem ataku.

Różnice między SLAP oraz FLOP

CechaSLAP (Spekulacyjne Przewidywanie Adresu Załadowania)FLOP (Błędne Przewidywanie Wyniku Załadowania)
MechanizmPrzewiduje adresy pamięci dla operacji ładowaniaPrzewiduje wartości ładowanych danych
Zakres atakuSpekulacyjny rozkład adresówSpekulacyjne wykonanie na nieaktualnych wartościach
Dotknięte CPUApple M2, M3, A15, A16, A17Apple M3, M4, A17 Pro
Kluczowy wektor atakuOdczyty poza zakresem pamięciZamiana typów, przejęcie funkcji
Przykłady ataków w przeglądarceEksploatacja silnika JavaScript w SafariPrzekierowanie funkcji WebAssembly w Chrome

Strategie łagodzenia skutków ataków

Oprogramowanie

  • Wyłączenie spekulacji w JavaScript: Przeglądarki mogą wdrożyć ścisłe sprawdzanie typów, aby zapobiec spekulacyjnym błędom typów.
  • Wymuszenie izolacji pamięci: Przeglądarki internetowe powinny izolować obszary pamięci, aby zapobiegać spekulacyjnym wyciekom danych między domenami.
  • Wykorzystanie Data-Independent Timing (DIT): Ustawienie bitu DIT w architekturze ARM ISA wyłącza LVP, zapobiegając błędnym przewidywaniom.

Sprzęt

  • Bariery spekulacyjne: Apple może wprowadzić mikroarchitektoniczne bariery ograniczające spekulacyjne dostępy do pamięci.
  • Ograniczenie LVP i LAP: Redukcja okna predykcji lub wdrożenie kontroli integralności dla przewidywanych adresów i wartości może złagodzić te podatności.
  • Łatki naprawiające: Apple może wydać aktualizacje firmware’u modyfikujące zachowanie spekulacyjnego wykonania, zmniejszając podatność na ataki.

Podsumowanie

Ataki FLOP i SLAP stanowią poważne zagrożenie, ponieważ umożliwiają zdalne wykorzystanie podatności sprzętowych Apple bez konieczności fizycznego dostępu do urządzenia. Wystarczy odwiedzenie złośliwej strony internetowej, aby uruchomić atak i wyjść poza zamknięte środowisko pracy przeglądarki (ang. browser sandobx), ASLR oraz konwencjonalne zabezpieczenia pamięci.

Tymczasowe rozwiązanie polega na wyłączeniu JavaScript w Safari i Chrome, jednak może to zakłócić działanie wielu stron internetowych.

Więcej szczegółów można znaleźć w pełnych publikacjach badawczych:

Dodatkowe informacje, demonstracje i FAQ dostępne są na stronie: https://predictors.fail/.

Jeśli ten artykuł Cię zainteresował i chcesz poszerzyć swoją wiedzę na temat cyberbezpieczeństwa, zachęcamy do regularnego odwiedzania naszego bloga AFINE, gdzie znajdziesz więcej wartościowych informacji.

Jeśli interesuje Cię system macOS i chcesz zgłębić tematykę Apple Security, warto dodać do zakładek repozytorium Snake_Apple, gdzie znajdziesz wszystkie moje artykuły na ten temat.

Karol Mazurek
Head of Research

Czy Twoja firma jest bezpieczna w sieci?

Dołącz do grona naszych zadowolonych klientów i zabezpiecz swoją firmę przed cyberzagrożeniami już dziś!

Zostaw nam swoje dane kontaktowe, a nasz zespół skontaktuje się z Tobą, aby omówić szczegóły i dopasować ofertę do Twoich potrzeb. Dbamy o pełną dyskrecję i poufność Twoich danych, dlatego możesz nam zaufać.

Chciałbyś od razu zadać pytanie? Odwiedź naszą stronę kontaktową.