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

Grupa badaczy z chińskich i amerykańskich uniwersytetów zidentyfikowała nową lukę w procesorach Intela, która prowadzi do wycieku informacji o wyniku operacji spekulacyjnych kanałami stron trzecich, które można wykorzystać np. do zorganizowania ukrytego kanału komunikacyjnego między procesami lub wykrywać wycieki podczas ataków Meltdown.

Istota podatności polega na tym, że zmiana w rejestrze procesora EFLAGS, która nastąpiła w wyniku spekulatywnego wykonania instrukcji, wpływa na późniejszy czas wykonania instrukcji JCC (skok po spełnieniu określonych warunków). Operacje spekulacyjne nie są zakończone, a wynik jest odrzucany, ale odrzuconą zmianę EFLAGS można określić analizując czas wykonania instrukcji JCC. Spekulacyjnie wykonywane operacje porównywania przed skokiem, jeśli porównanie zakończy się pomyślnie, skutkują niewielkim opóźnieniem, które można zmierzyć i wykorzystać jako funkcję dopasowywania treś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 kanałami firm trzecich, nowa metoda nie analizuje zmiany czasu dostępu do danych buforowanych i niebuforowanych oraz nie wymaga etapu resetowania rejestru EFLAGS do stanu początkowego, co utrudnia wykryć i zablokować atak. Jako demonstrację naukowcy zaimplementowali wariant ataku Meltdown, wykorzystując w nim nową metodę uzyskiwania informacji o wyniku spekulacyjnej operacji. Działanie metody organizacji wycieku informacji podczas ataku Meltdown zostało z powodzeniem zademonstrowane na systemach z procesorami Intel Core i7-6700 oraz i7-7700 w środowisku z jądrem Ubuntu 22.04 i Linux 5.15. W systemie z procesorem Intel i9-10980XE atak był tylko częściowo udany.

Podatność Meltdown opiera się na fakcie, że podczas spekulacyjnego wykonywania instrukcji procesor może uzyskać dostęp do prywatnego obszaru danych, a następnie odrzucić wynik, ponieważ ustawione uprawnienia zabraniają takiego dostępu procesowi użytkownika. W programie blok wykonywany spekulacyjnie jest oddzielony od kodu głównego skokiem warunkowym, który w rzeczywistych warunkach zawsze odpala, ale ze względu na to, że instrukcja warunkowa używa obliczonej wartości, której procesor nie zna podczas kodu wyprzedzającego wykonanie, wszystkie opcje rozgałęzienia są wykonywane spekulacyjnie.

W klasycznej wersji Meltdown, ponieważ do operacji spekulacyjnie wykonywanych jest ta sama pamięć podręczna, co do instrukcji wykonywanych normalnie, możliwe jest podczas wykonywania spekulatywnego ustawienie w pamięci podręcznej znaczników odzwierciedlających zawartość poszczególnych bitów w zamkniętym obszarze pamięci, a następnie w normalnie wykonywanym kodzie, aby określić ich znaczenie poprzez analizę czasu dostępu do danych buforowanych i niebuforowanych. Nowy wariant wykorzystuje zmianę w rejestrze EFLAGS jako znacznik przecieku. W wersji demonstracyjnej Covert Channel jeden proces modulował wysyłane dane w celu zmiany zawartości rejestru EFLAGS, a inny proces analizował zmianę czasu wykonania instrukcji JCC w celu odtworzenia danych wysłanych przez pierwszy proces.

Źródło: opennet.ru

Dodaj komentarz