Zenbleed - krytyczna podatność w procesorach AMD

O co chodzi

Tavis Ormandy z Google Information Security znalazł błąd w obsłudze operacji na rejestrach AVX przez procesory AMD. Poprzez odpowiednie manipulowanie stanem procesora atakujący jest w stanie spowodować swego rodzaju “use-after-free” w części CPU odpowiedzialnej za alokację wspomnianych rejestrów i odczytywać dane zapisane w nich przez inne aplikacje.

Nie jest dobrze

Rejestry AVX są wykorzystywane przez wiele podstawowych funkcji jako optymalizacja. Między innymi strlen licząca długość łańcucha znaków robi z nich użytek. W dodatku, z uwagi na specyfikę luki, atakujący ma dostęp do danych spoza kontekstu, w którym działa exploit (na przykład poza sandboxem lub kontenerem).

Sam kod proof-of-concept został opublikowany przez badacza i jest dostępny dla każdego.

Kolejnym powodem do zmartwień jest fakt, że na obecny moment nie są znane żadne miarodajne sposoby wykrycia wykorzystania omawianej luki.

Dotknięte modele

Podatność występuje we wszystkich procesorach Zen 2, między innymi

  • AMD Ryzen 3000 Series
  • AMD Ryzen PRO 3000 Series
  • AMD Ryzen Threadripper 3000 Series

Co robić, jak żyć

AMD wydało już aktualizację mikrokodu. Warto sprawdzić czy producent posiadanego przez nas sprzętu nie wydał już odpowiedniej łatki.

Drugim sposobem (który może negatywnie wpłynąć na wydajność środowiska) jest ustawienie chicken bitu DE_CFG[9] na wszystkich rdzeniach. Na Linuxie można tego dokonać poleceniem

wrmsr -a 0xc0011029 $(($(rdmsr -c 0xc0011029) | (1<<9)))

Niestety AMD nie ogłosiło za co tak naprawdę odpowiada ten bit.

Wpis badacza na temat Zenbleed

Pod tym linkiem znajdziesz techniczny opis podatności w wykonaniu Tavisa i kod exploita.