
Co znajdziesz w tym artykule?
Wprowadzenie do problemu / definicja
TONTOU to nowa technika ataku z obszaru transient execution, która podważa skuteczność części współczesnych zabezpieczeń wdrożonych przeciwko Spectre v2. Istota problemu polega na wykorzystaniu bardzo krótkiego okna czasowego pomiędzy zneutralizowaniem stanu predyktora skoków a jego ponownym użyciem przez kod ofiary.
W praktyce oznacza to, że nawet po uruchomieniu mechanizmów ochronnych atakujący może w określonych warunkach ponownie wpłynąć na stan mikroarchitektoniczny procesora. To z kolei otwiera drogę do spekulacyjnego wykonania instrukcji prowadzącego do wycieku danych przez kanały boczne.
W skrócie
Badacze pokazali, że TONTOU pozwala obejść część zabezpieczeń Spectre v2 poprzez precyzyjne wstrzykiwanie przerwań w trakcie wykonywania kodu jądra. Celem jest przejęcie kontroli nad stanem predyktorów po zastosowaniu mitigacji, ale jeszcze przed ich realnym użyciem przez chroniony kod.
- atak uderza w założenie, że neutralizacja predyktora kończy wpływ napastnika na spekulacyjne wykonanie,
- w demonstracji wykorzystano Linux oraz procesor AMD Zen 2 z aktywnymi poprawkami Spectre v2,
- badacze zdołali odczytywać pamięć jądra, w tym dane z pliku zawierającego hashe haseł,
- technika może mieć znaczenie również dla wybranych środowisk opartych na procesorach Intela.
Kontekst / historia
Spectre v2 od lat należy do najważniejszych klas podatności mikroarchitektonicznych. Atak typu Branch Target Injection wykorzystuje mechanizmy przewidywania skoków pośrednich i spekulacyjnego wykonywania instrukcji, aby wymusić wykonanie ścieżki zależnej od kontrolowanego stanu predyktora.
W odpowiedzi producenci procesorów oraz twórcy systemów operacyjnych wdrożyli liczne mechanizmy obronne. Obejmują one między innymi czyszczenie, izolowanie lub neutralizowanie stanu predyktorów przed wejściem do wrażliwego kodu jądra. TONTOU pokazuje jednak, że sam moment zastosowania ochrony nie musi oznaczać końca powierzchni ataku.
Analiza techniczna
Nazwa TONTOU odnosi się do modelu Time-of-Neutralization to Time-of-Use. Chodzi o krótkie okno pomiędzy wykonaniem zabezpieczenia a faktycznym użyciem odpowiednich struktur predykcyjnych przez chroniony kod. To właśnie w tym przedziale czasowym możliwe jest ponowne zatrucie stanu mikroarchitektonicznego procesora.
W praktycznej demonstracji badacze wykorzystali technikę Interrupt Injection. Nieuprzywilejowany proces planuje przerwania tak, aby wystąpiły podczas wykonywania kodu jądra. Jeżeli przerwanie pojawi się już po neutralizacji, ale przed użyciem chronionego wpisu predyktora, procedura obsługi przerwania może zostać wykorzystana do ponownego zatrucia odpowiednich struktur.
Łańcuch ataku obejmuje kilka etapów:
- doprowadzenie do wykonania sekwencji neutralizującej,
- precyzyjne wywołanie przerwania we właściwym momencie,
- ponowne zatrucie stanu predykcyjnego przez handler przerwania,
- wykorzystanie tego stanu przez późniejszy skok pośredni w jądrze,
- odczyt skutków spekulacyjnego wykonania za pomocą kanału bocznego.
Według demonstracji przeprowadzonej na Linuksie z procesorem AMD Zen 2 i aktywnymi poprawkami Spectre v2 możliwy był odczyt arbitralnej pamięci jądra z przepustowością około 5,47 bajta na sekundę przy skuteczności bliskiej 92%. Jednym z zaprezentowanych efektów było wydobycie zawartości pliku przechowującego hashe haseł. Autorzy wskazali również, że scenariusz ataku może dotyczyć także procesorów Intela, choć wymaga bardziej złożonych warunków.
Konsekwencje / ryzyko
TONTOU nie jest atakiem trywialnym ani masowym. Wymaga lokalnego uruchomienia kodu bez uprawnień administratora, bardzo precyzyjnego strojenia czasowego oraz odpowiedniego środowiska sprzętowo-programowego. Mimo to jego znaczenie jest duże, ponieważ dotyczy obejścia mechanizmów, które miały ograniczać skutki jednej z najlepiej znanych klas ataków na procesory.
Najbardziej narażone mogą być środowiska wieloużytkownikowe i współdzielone, w których lokalne wykonanie kodu przez mniej zaufanych użytkowników jest realistyczne. Dotyczy to między innymi serwerów współdzielonych, laboratoriów, platform deweloperskich, środowisk CI/CD oraz części scenariuszy chmurowych i hostingowych.
Jeżeli możliwy jest wyciek pamięci jądra, zagrożone pozostają nie tylko hashe haseł, ale także tokeny, klucze, sekrety procesów uprzywilejowanych oraz inne wrażliwe dane obecne w pamięci. Problem ma więc wymiar szerszy niż pojedyncza demonstracja badawcza.
Rekomendacje
Organizacje powinny traktować TONTOU jako kolejny sygnał, że zabezpieczenia przed Spectre v2 wymagają podejścia warstwowego. Samo poleganie na istniejących mitigacjach mikroarchitektonicznych może nie być wystarczające.
- utrzymuj aktualne wersje jądra Linux, mikrokodu CPU oraz BIOS-u lub UEFI,
- śledź komunikaty producentów procesorów i dystrybucji systemowych dotyczące nowych obejść i poprawek,
- ograniczaj możliwość lokalnego uruchamiania nieufnego kodu, zwłaszcza na hostach współdzielonych,
- stosuj segmentację systemów przetwarzających szczególnie wrażliwe dane uwierzytelniające,
- minimalizuj liczbę kont lokalnych i usług umożliwiających wykonywanie kodu przez użytkowników o niskim poziomie zaufania,
- monitoruj anomalie wydajnościowe oraz nietypowe użycie mechanizmów czasowych mogących wskazywać na eksperymentalne ataki side-channel.
Podsumowanie
TONTOU to ważny rozwój w obszarze ataków spekulacyjnych i kolejny dowód na to, że Spectre pozostaje żywym problemem bezpieczeństwa. Badania pokazują, że nawet poprawnie wdrożone mitigacje Spectre v2 mogą zostać ominięte, jeśli napastnik wykorzysta okno pomiędzy neutralizacją stanu predykcyjnego a jego użyciem przez kod ofiary.
Dla zespołów bezpieczeństwa oznacza to potrzebę dalszego wzmacniania izolacji, ograniczania lokalnego wykonywania kodu oraz bieżącego śledzenia nowych technik badawczych. TONTOU nie musi oznaczać natychmiastowego kryzysu dla wszystkich środowisk, ale wyraźnie przypomina, że ryzyka mikroarchitektoniczne nadal ewoluują.
Źródła
- https://www.bleepingcomputer.com/news/security/new-tontou-cpu-attack-bypasses-spectre-v2-fixes-leaks-linux-password-hashes/
- https://www.usenix.org/conference/usenixsecurity26/presentation/trujillo
- https://www.intel.com/content/www/us/en/developer/articles/technical/software-security-guidance/advisory-guidance/branch-target-injection.html
- https://www.amd.com/en/resources/product-security/bulletin/amd-sb-7005.html
- https://www.blackhat.com/us-26/briefings/schedule/