Уязвимост в CPU AMD, позволяваща заобикаляне на защитния механизъм SEV (Secure Encrypted Virtualization)

Изследователи на Центъра за информационна безопасност на Гелмхолtz (CISPA) публикуваха нов метод на атака CacheWarp, който позволява компрометиране на механизма за защита AMD SEV (Secure Encrypted Virtualization), използван в системите за виртуализация, за да се защити виртуалните машини от намеса от страна на хипервизора или администратора на хост системата. Предложеният метод позволява на нападателя с достъп до хипервизора да постигне изпълнение на чужд код и повишаване на привилегиите в виртуалната машина, защитена с помощта на AMD SEV.

Атаката е основана на използването на уязвимост (CVE-2023-20592), причинена от некоректно работещото кеширане по време на изпълнението на процесорната инструкция INVD, с помощта на която може да се постигне несъответствие на данни в паметта и кеша, и да се заобиколят механизмите за поддържане на целостта на паметта на виртуалните машини, реализирани на базата на разширенията SEV-ES и SEV-SNP. Уязвимостта засяга процесорите AMD EPYC от първо до трето поколение.

За процесорите AMD EPYC от трето поколение (Zen 3) проблемът е отстранен в ноемврийското обновление на микрокода, издадено вчера от AMD (поправката не води до намаляване на производителността). За първото и второто поколение AMD EPYC (Zen 1 и Zen 2) защита не е предвидена, тъй като в тези CPU липсва поддръжка на разширение SEV-SNP, осигуряващо контрол на целостта. на виртуални машини. Четвъртото поколение процесори AMD EPYC „Genoa“ на базата на микроархитектура „Zen 4“ не е подложено на уязвимости.

Технологията AMD SEV се прилага за изолация на виртуалните машини от такива облачни доставчици, като Amazon Web Services (AWS), Google Cloud, Microsoft Azure и Oracle Compute Infrastructure (OCI). Защитата на AMD SEV е реализирана чрез шифроване на апаратно ниво на паметта на виртуалните машини. Допълнително с помощта на разширението SEV-ES (Encrypted State) се осъществява защита на регистрите на CPU. Достъп до декриптираните данни има само текущата гостуваща система, а останалите виртуални машини и хипервизорът при опит за достъп до тази памет получават шифрован набор от данни.

В третото поколение на процесорите AMD EPYC е реализирано допълнително разширение SEV-SNP (Secure Nested Paging), осигуряващо безопасна работа с вложени таблици на страниците в паметта. В допълнение към общото криптиране на паметта и изолация на регистрите, в SEV-SNP са реализирани допълнителни средства за защита на целостта на паметта, предотвратяващи изменения в VM от страна на хипервизора. Управлението на ключовете за криптиране се извършва от вградения в чипа отделен процесор PSP (Platform Security Processor), реализиран на базата на архитектурата ARM.

Същността на предложения метод на атака е използването на инструкцията INVD за анулиране на блокове (линии) в кеша на мръсни (dirty) страници, без да се нулират данните в кеша в паметта (write-back). По този начин методът позволява изтласкване на променените данни от кеша, без да се променя състоянието на паметта. За извършване на атаката се предлага използването на софтуерни изключения (fault injection), за да се прекъсне работата на виртуалната машина на две места: на първото място атакуващият извиква инструкцията „wbnoinvd“ за нулиране на всички натрупани операции за запис в паметта от кеша, а на второто място извиква инструкцията „invd“ за връщане на неотразените в паметта операции за запис в старото състояние.

За проверка на своите системи за наличие на уязвимости беше публикуван прототип на експлоита, позволяващ извършване на подмяна на изключението в виртуална машина, защитена чрез AMD SEV, и възстановяване на старото състояние на несбросените в паметта изменения в VM. Възстановяването на измененията може да бъде използвано за промяна на хода на изпълнение на програмата, чрез връщане на стария адрес на връщане в стека, или за използване при вход на параметри на старата сесия, за която преди това е била извършена аутентификация, чрез връщане на стойността на удостоверителния признак.

Например, изследователи демонстрират възможността за прилагане на метода CacheWarp за извършване на атака Bellcore върху реализацията на алгоритъма RSA-CRT в библиотеката ipp-crypto, което позволява възстановяване на частния ключ чрез подмяна на грешки при изчисляването на цифров подпис. Също така е показано как може да се подменят параметрите на проверката на сесията към OpenSSH при отдалечено свързване към гостовата система и след това да се промени състоянието на проверката при изпълнението на утилитата sudo за получаване на права root в Ubuntu 20.04. Работата на експлойта е проверена на системи с процесори AMD EPYC 7252, 7313P и 7443.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster