Группа ученых разработала атаку CacheWarp, которая позволяет злоумышленникам взламывать виртуальные машины, защищенные технологией AMD SEV (Secure Encrypted Virtualization), используя запись в память для повышения привилегий и удаленного выполнения кода.
Технология Secure Encrypted Virtualization (SEV) была представлена вместе с релизом процессоров EPYC. Это аппаратная функция, шифрующая память для каждой виртуальной машины таким образом, чтобы только сам гость имел доступ к данным. В итоге информация оказывается защищена от других VM, контейнеров и недоверенного гипервизора шифрованием.
Лежащая в основе этой атаки уязвимость (CVE-2023-20592) была обнаружена исследователями из Центра информационной безопасности имени Гельмгольца в Германии (CISPA) и Грацкого технологического университета, а также независимым исследователем Юхэн Лю (Youheng Lue).
Построенная на этой проблеме атака эксплуатирует недостатки технологий AMD Secure Encrypted Virtualization-Encrypted State (SEV-ES) и Secure Encrypted Virtualization-Secure Nested Paging (SEV-SNP), которые предназначены для защиты от вредоносных гипервизоров и уменьшения рисков атак на виртуальные машины путем шифрования данных виртуальных машин и блокирования любых попыток их изменения.
Как рассказывают эксперты, они обнаружили, что инструкция INVD (очистка содержимого кэша процессора) может использоваться для компрометации AMD SEV. При этом подчеркивается, что CacheWarp не является атакой типа transient execution или side-channel атакой, такой как Spectre и Meltdown. Скорее, это софтверная атака, подобная Rowhammer и Plundervolt, которая полагается на внедрение ошибок для достижения своих целей.
«CacheWarp — новая программная атака на уязвимости в AMD SEV-ES и SEV-SNP, использующая возможность архитектурного возврата измененных кэш-линий гостевых виртуальных машин к их предыдущему (устаревшему) состоянию, — пишут исследователи. — В трех примерах мы демонстрируем атаку на RSA в криптобиблиотеке Intel IPP с полным восстановлением закрытого ключа, входом на сервер OpenSSH без аутентификации и повышением привилегий до уровня root».
В случае успешной атаки злоумышленники могут, например, вернуть переменные, используемые для аутентификации, к предыдущей версии, что позволит им перехватить предыдущий сеанс аутентификации, захватив контроль над виртуальной машиной.
Компания AMD уже выпустила собственный бюллетень безопасности, в котором сообщила, что проблема CacheWarp обнаружена в инструкции INVD и может привести к нарушению целостности памяти гостевых виртуальных машин SEV-ES и SEV-SNP.
«Некорректное или неожиданное поведение инструкции INVD в некоторых процессорах AMD может позволить злоумышленнику с вредоносным гипервизором повлиять на поведение процессора при записи в кэш-линию, что может привести к потере целостности памяти гостевой виртуальной машины», — говорится в сообщении AMD.
CacheWarp затрагивает только системы AMD со следующими процессорами, поддерживающими SEV:
- процессоры AMD EPYC 1-го поколения (SEV и SEV-ES);
- процессоры AMD EPYC 2-го поколения (SEV и SEV-ES);
- процессоры AMD EPYC 3-го поколения (SEV, SEV-ES, SEV-SNP).
Согласно сообщению AMD, данная уязвимость не распространяется на процессоры AMD EPYC 4-го поколения Genoa (микроархитектура Zen 4).
По словам компании, для первого и второго поколений процессоров EPYC исправление проблемы не предусмотрено, поскольку SEV и SEV-ES не обладают функциями защиты памяти гостевых ВМ, а функция SEV-SNP недоступна.
Для пользователей процессоров AMD EPYC третьего поколения с включенной функцией AMD Secure Encrypted Virtualization-Secure Nested Paging (SEV-SNP), компания выпустила обновленный микрокод и обновленный образ прошивки. Подчеркивается, что патч не должен привести к снижению производительности процессоров.