Autorskie procesory Apple z rodziny M, które trafiły na pokład wielu komputerów Mac, oferują naprawdę sporo mocy. Okazuje się, że mają też poważną wadę, której usunięcie (lub raczej złagodzenie zagrożenia) może negatywnie odbić się na wydajności.
Luka w procesorach Apple
Firma Tima Cooka zaprezentowała własne procesory dla komputerów w 2020 roku. Wówczas na rynek trafiły pierwsze modele komputerów z tymi układami – MacBook Air, MacBook Pro i Mac mini. Przez kilka następnych lat mogliśmy obserwować wprowadzanie kolejnych generacji procesorów Apple z rodziny M, a także premiery nowych urządzeń z tymi układami. Dziś wszystkie komputery z Cupertino wyposażone są już w autorskie czipy Apple.
Zmiana architektury procesorów, czyli przejście z Intela na własne układy Arm, było sporym wyzwaniem. W związku z tym, Apple jak najbardziej należą się brawa za sprawne i niemal bezproblemowe zrealizowanie tego przedsięwzięcia. Niewykluczone, że przed firmą jest teraz równie trudne zadanie, które będzie wymagało włożenia dużej dawki wysiłku i możliwe, że przyniesie nieprzyjemne konsekwencje dla użytkowników.
Naukowcy akademiccy, specjalizujący się w cyberbezpieczeństwie, odkryli naprawdę poważną lukę w procesorach Apple M. Okazuje się, że umożliwia ona atakującym wydobycie tajnych kluczy kryptograficznych z komputerów Mac podczas wykonywania powszechnie stosowanych operacji kryptograficznych.
Atak, który wykorzystuje tą podatność, został nazwany GoFetch. Słabym ogniwem jest tutaj Data Memory-dependent Prefetchers (DMP), będący elementem optymalizacji sprzętowej, która przewiduje adresy pamięci danych, do których uruchomiony kod będzie prawdopodobnie miał dostęp w najbliższej przyszłości. DMP, ładując zawartość do pamięci podręcznej procesora, zanim będzie ona faktycznie potrzebna, zmniejsza opóźnienia między pamięcią główną a procesorem. Czasami jednak DMP myli zawartość pamięci i wczytuje niewłaściwe dane, próbując potraktować je jako adres umożliwiający dostęp do pamięci (mimo iż w rzeczywistości jest to błędne) i wówczas dane z tego „adresu” mogą być przeniesione do pamięci podręcznej. Właśnie to może posłużyć do przeprowadzenia ataku i zdobycia poufnych informacji.
Omawianą lukę można wykorzystać, gdy docelowa operacja kryptograficzna i złośliwa aplikacja z normalnymi uprawnieniami użytkownika działają na tym samym klastrze procesora. Dla przypomnienia: układy z rodziny M są podzielone na tzw. klastry. Przykładowo procesor M1 składa się z dwóch klastrów – jeden to cztery rdzenie nastawione na większą wydajność, drugi to kolejne cztery rdzenie energooszczędne.
Warto dodać, że narzędzie GoFetch i i docelowa aplikacja kryptograficzna nie muszą działać na tych samych rdzeniach w ramach jednego klastra. Prawdopodobnie Waszą uwagę zwrócił jeszcze fragment, który wskazuje, że atak nie wymaga dostępu do konta root – niestety sprawia to, że jego przeprowadzenie jest łatwiejsze.
Pełne załatanie luki nie jest możliwe
Niestety, to nie koniec złych wiadomości. Luki nie można załatać bezpośrednio, bowiem jej obecność wynika z mikroarchitektury krzemu, której nie można przecież zmienić za pomocą linijek kodu.
Możliwe jest jednak złagodzenie skutków tej podatności za pomocą wbudowania specjalnych zabezpieczeń w oprogramowaniu kryptograficznych innych firm. Będzie to jednak wiązało się z zauważalnym spadkiem wydajności procesorów Apple w operacjach kryptograficznych. Szczególnie będzie to odczuwalne w przypadku układów M1 i M2.
Możliwe jest również wymuszenie wykonywania określonych zadań na rdzeniach nastawionych na energooszczędność, które nie są wyposażone w DMP, ale tutaj też pojawia się kwestia spadku wydajności. Z kolei w procesorze Apple M3 dostępny jest odpowiedni „przełącznik”, który umożliwia wyłączenie DMP, ale nie wiadomo, jaki będzie to miało wpływ na wydajność.
Najpewniej zmiany nie będą dostrzegalne w przypadku przeglądarek internetowych i wielu innych aplikacji – tutaj ewentualny spadek wydajności nie będzie duży. Otóż sporo mniejsza wydajność będzie dotyczyła sytuacji, w których wykonywane są określone operacje kryptograficzne, które zazwyczaj nie mają miejsca podczas typowego użytkowania.