Zenbleed, najnowszy z długiej serii błędów bezpieczeństwa procesorów, to kolejna rzecz, którą należy załatać. Oto, co musisz wiedzieć.
Po upublicznieniu w 2018 roku exploitów procesorów Spectre i Meltdown świat komputerowy był dość czujny o wyszukiwaniu błędów i luk w zabezpieczeniach procesorów, a w ciągu ostatnich pięciu lat badacze znaleźli ich mnóstwo. 24 lipca publicznie ujawniono kolejny exploit, po raz pierwszy zgłoszony w maju. Tym razem dotyczy to procesorów AMD zbudowanych na architekturze Zen 2 i nosi nazwę „Zenbleed". Oto wszystko, co musisz wiedzieć o Zenbleed i jego znaczeniu dla świata.
Jak działa Zenbleed?
Zenbleed jest bardzo podobny do innych sprzętowych błędów bezpieczeństwa, takich jak Spectre, ponieważ wykorzystuje spekulacyjne możliwości procesorów. Aby poprawić wydajność, procesory spekulują lub przewidują następną rzecz, którą muszą zrobić, a odkąd Spectre zostało po raz pierwszy ujawnione, świat nauczył się, że spekulacje mogą być bardzo niepewne, jeśli zostaną podjęte niewłaściwie.
Rejestry w procesorze mogą przechowywać niewielką ilość danych, zazwyczaj instrukcję, adres przechowywania lub inny rodzaj małych danych. Rejestry XMM w architekturze x86_64 (a więc każdy z procesorów Zen 2, których dotyczy problem) mogą być używane wyłącznie do wykonywania obliczeń na danych, a nie do adresowania pamięci. Jest to rozszerzone do 256 bitów w przypadku rejestrów YMM i 512 bitów w rejestrach ZMM. W tym przypadku XMM odnosi się do dolnych 128 bitów pliku całkowity 512 bitów rejestrów ZMM.
Rejestry te są niezwykle przydatne do wielu różnych rzeczy, w tym do standardowych funkcji C. Luka wykorzystuje wykonywanie spekulatywne i błędne przewidywania gałęzi, aby zasadniczo wypluć losowy fragment danych z pamięci, ale dane te mogą pochodzić z wszystko. Standardowe funkcje biblioteki C, takie jak strlen, które mierzy długość łańcucha, mogą używać tych rejestrów do przenoszenia danych w pobliżu i możliwe, że przez przypadek hasło, którego używasz, mogło nieszczęśliwie wpaść na jedno z tych rejestruje.
Przewidywanie rozgałęzień i wykonywanie spekulatywne ogólnie odnoszą się do sytuacji, w której komputer wykonuje operacje, które nie są jeszcze potrzebne, ale prawdopodobnie będą potrzebne w kolejnych cyklach. Często robi się to w czasach, gdy system ma wolne zasoby, ponieważ przyspiesza to ogólne przetwarzanie, gdy w przeciwnym razie instrukcje lub dane nie byłyby jeszcze gotowe dla procesora. Jeśli wykonana praca nie jest potrzebna, jest zazwyczaj odrzucana, a procesor może wrócić tam, gdzie jest potrzebny, aby wykonać następną, poprawną instrukcję. Kiedy to nastąpi, nazywa się to błędną predykcją gałęzi.
Problem pojawia się w instrukcji vzeroupper, która zeruje bity na pozycji 128 i wyższej rejestrów YMM i ZMM. Odbywa się to szczególnie podczas przejścia między AVX i starszym kodem SSE, ponieważ eliminuje to wydajność kary spowodowane fałszywymi zależnościami, jednocześnie unikając efektu podobnego do promocji liczb całkowitych C.
Jeśli procesor spekulacyjnie wykonuje instrukcję vzeroupper, nie ma prawidłowego wycofania. Jednak dotknięte procesory Ryzen mogą zostać zmuszone do odzyskania sprawności, choć w sposób niepoprawny. Będąc w tym stanie, aktualnie wykonywany program może następnie szpiegować te rejestry w czasie rzeczywistym, przeglądając dane przepływające w systemie w dowolnym momencie.
Na jakie procesory wpływa Zenbleed i kiedy będą dostępne poprawki?
Jak wspomniano wcześniej, tylko procesory AMD oparte na architekturze Zen 2 są podatne na błąd bezpieczeństwa Zenbleed, ale architektura Zen 2 obsługuje procesory w trzech seriach, co utrudnia ustalenie, które procesory są podatne, a które nie są. Oto tabela, która powinna wszystko wyjaśnić:
Dotknięte procesory | |
---|---|
Seria Ryzen 3000 |
Wszystkie oprócz APU (np. Ryzen 3 3200G) |
Epicki Rzym |
Wszystko |
Seria Ryzen 4000 |
Wszystko |
Seria Ryzen 5000 |
Tylko modele 5300U, 5500U i 5700U |
Seria Ryzen 7000 |
Tylko APU 7020 (np. Ryzen 3 7320U) |
To całkiem spora liczba procesorów AMD, a to tylko te, które na razie zostały potwierdzone. Zen 2 jest również używany w APU obsługujących Steam Deck, Xbox Series S i X oraz PS5. Nie słyszeliśmy, czy problem dotyczy również tych procesorów, ale sądząc po sposobie działania tego exploita, zdziwiłbym się, gdyby nie miało to wpływu również na te procesory. Wydaje się mało prawdopodobne, aby AMD załatało tę poprawkę na Xbox i PS5, ponieważ dotyczy to również nowszych chipów z serii 7020.
W chwili pisania tego tekstu mikrokod został przesłany do jądra Linuksa który załata tę lukę, a Twój system operacyjny lub BIOS może już mieć aktualizację rozwiązującą ten problem.
Co to oznacza dla komputerów wyposażonych w podatne procesory?
Odpowiedź na to pytanie jest trudna, ponieważ nie wszystkie komputery są sobie równe. W przypadku zwykłych ludzi, którzy po prostu korzystają z komputerów stacjonarnych i laptopów do gier, prawdopodobnie nie musisz się tak bardzo martwić. Jest to dość wyrafinowany exploit i chociaż jest on już powszechnie znany, nie są jeszcze znane przykłady atakującego wykorzystującego Zenbleed do włamania się do czegokolwiek.
Jednak stawka jest znacznie wyższa w przypadku centrów danych i ważnych osób obsługujących poufne informacje na ich własnych komputerach. Jest powód, dla którego AMD jasno dało do zrozumienia, że Epyc Rome zostało załatane, zanim luka została upubliczniona: wiele wrażliwych informacje są przetwarzane przez procesory Epyc i katastrofą byłoby, gdyby jakikolwiek procesor obsługujący duże serwery został pomyślnie zaatakowany. Jądro Linuksa 6.4.6 jest już wydane i naprawia tę lukę, wprowadzając plik oficjalna łatka mikrokodu od AMD. Wydaje się prawdopodobne, że Microsoft wprowadzi coś podobnego do systemu Windows.
Niepokojąco, Oficjalne poprawki BIOS-u AMD mogą nie zostać udostępnione przez kilka miesięcy, w takim przypadku istnieje „kawałek kurczaka", który możesz ustawić, jeśli korzystasz z komputera z systemem Linux lub FreeBSD. Na komputerach z systemem Linux możesz użyć msr-tools i wykonać następujące polecenie.
wrmsr -a 0xc0011029 $(($(rdmsr -c 0xc0011029) | (1<<9)))
We FreeBSD możesz także użyć poniższych.
cpucontrol(8)
Wyłączenie SMT nie wystarczy, aby złagodzić lukę.
Jedną z rzeczy, która sprawia, że Zenbleed jest szczególnie zły, jest to, że Zen 2 był jedną z najpopularniejszych architektur procesorów AMD. Zapoczątkowało to powrót AMD w 2019 i 2020 r., a wiele osób, firm i organizacji nadal będzie korzystać z komputerów z procesorami Zen 2 w 2023 r., zwłaszcza Epyc Rome Procesory. Nie jest tak źle jak Spectre (który dotyczy prawie wszystkich procesorów Intela sprzed 2019 r.) i Meltdown (który dotyczy prawie wszystkich procesorów Intela sprzed 2019 r.), ale nadal jest dość rozpowszechniony.
Poprawki zabezpieczeń dla takich luk często skutkują spadkiem wydajności, ale AMD powiedziało Sprzęt Toma że kara ta będzie zależała od procesora i obciążenia. Spekulacje i przewidywania są dość ważne dla wydajności procesora, więc nie jest jasne, czy jakakolwiek potencjalna poprawka spowoduje znaczny spadek wydajności.