Luka w zabezpieczeniach procesorów Intel prowadząca do wycieku danych przez kanały stron trzecich

Zespół badaczy z chińskich i amerykańskich uniwersytetów zidentyfikował nową lukę w zabezpieczeniach procesorów Intel, która umożliwia wyciek informacji kanałem bocznym na temat wyników spekulatywnego wykonywania operacji. Informacje te mogą być wykorzystywane na przykład do zorganizowania tajnego kanału komunikacyjnego między procesami lub do wykrywania wycieków podczas ataków Meltdown.

Istotą podatności jest to, że zmiana rejestru procesora EFLAGS, która nastąpiła w wyniku spekulatywnego wykonania instrukcji, wpływa na późniejszy czas wykonania instrukcji JCC (rozgałęzienie po spełnieniu określonych warunków). Operacje spekulatywne nie są wykonywane, a wynik jest odrzucany, ale odrzuconą zmianę EFLAGS można ustalić, analizując czas wykonania instrukcji JCC. Spekulacyjnie wykonane operacje porównania przed rozgałęzieniem, w przypadku pomyślnego porównania, prowadzą do niewielkiego opóźnienia, które można zmierzyć i wykorzystać jako znak do wyboru zawartości.

Luka w zabezpieczeniach procesorów Intel prowadząca do wycieku danych przez kanały stron trzecich

W przeciwieństwie do innych podobnych ataków typu side-channel, nowa metoda nie analizuje zmian czasu dostępu do danych buforowanych i niebuforowanych oraz nie wymaga etapu resetowania rejestru EFLAGS, co utrudnia jej wykrycie i zablokowanie. W ramach demonstracji naukowcy zaimplementowali wariant ataku Meltdown, wykorzystując nową metodę uzyskiwania informacji o wyniku operacji spekulacyjnej. Metoda wycieku informacji podczas ataku Meltdown została pomyślnie zademonstrowana na systemach z procesorami Intel Core i7-6700 i i7-7700 w Ubuntu 22.04 i rdzeń Linux 5.15. W systemie z procesorem Intel i9-10980XE atak powiódł się tylko częściowo.

Luka w zabezpieczeniach Meltdown polega na tym, że podczas spekulatywnego wykonywania instrukcji procesor może uzyskać dostęp do prywatnego obszaru danych, a następnie odrzucić wynik, ponieważ ustalone uprawnienia uniemożliwiają procesowi użytkownika taki dostęp. W programie blok wykonywany spekulatywnie jest oddzielony od kodu głównego skokiem warunkowym, który w rzeczywistych warunkach zawsze działa, ale ponieważ operator warunkowy używa obliczonej wartości, której procesor nie zna podczas predyktywnego wykonywania kodu, wszystkie opcje rozgałęzienia są wykonywane spekulatywnie.

W klasycznym Meltdown, ponieważ do operacji wykonywanych spekulatywnie używana jest ta sama pamięć podręczna, co do instrukcji wykonywanych normalnie, możliwe jest ustawienie znaczników w pamięci podręcznej podczas wykonywania spekulatywnego, które odzwierciedlają zawartość poszczególnych bitów w prywatnym obszarze pamięci, a następnie określenie ich wartości w kodzie wykonywanym normalnie, poprzez analizę czasu potrzebnego na dostęp do danych z pamięci podręcznej i bez pamięci podręcznej. Nowa wersja wykorzystuje zmianę w rejestrze EFLAGS jako znacznik wycieku. Podczas demonstracji, w celu ustanowienia ukrytego kanału komunikacyjnego, jeden proces modulował przesyłane dane, tworząc warunki do zmiany zawartości rejestru EFLAGS, a inny proces analizował zmianę czasu wykonania instrukcji JCC, aby odtworzyć dane przesłane przez pierwszy proces.

Ź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