Ложь во имя взлома: один фальшивый бит разбивает защиту AMD вдребезги

Международная группа исследователей обнаружила серьезную уязвимость в системе безопасности процессоров AMD Epyc 7003, которая позволяет обойти механизмы защиты виртуальных машин. Атака, получившая название BadRAM , способна полностью скомпрометировать технологию AMD Secure Encrypted Virtualization (SEV-SNP), широко используемую крупнейшими облачными провайдерами, включая Amazon AWS, Google Cloud и Microsoft Azure.

Старая хакерская мудрость гласит: получив физический доступ к устройству, злоумышленник может преодолеть любую систему безопасности. Главное найти способ. В эпоху облачных вычислений эта аксиома перестала быть универсальной. Конфиденциальные данные – медицинские карты, финансовая информация, засекреченные юридические документы – теперь хранятся на серверах, обслуживаемых неизвестными администраторами в дата-центрах за тысячи километров от компаний, ответственных за их сохранность.

Производители чипов начали встраивать защитные механизмы непосредственно в кремний, чтобы гарантировать безопасность данных даже при физическом взломе сервера или заражении вредоносным ПО. Предполагалось, что доступ к конфиденциальной информации, обрабатываемой виртуальными машинами, возможен только при наличии ключа шифрования, известного администратору VM.

Атака BadRAM полностью подрывает эту концепцию. Начиная с процессоров AMD Epyc 7003, функция SEV-SNP обеспечивала криптографическую проверку целостности виртуальной машины на предмет отсутствия бэкдоров, установленных лицами с физическим доступом к серверу. При обнаружении компрометации криптографическая аттестация должна была немедленно сигнализировать об этом администратору VM.

Исследователи продемонстрировали, что администратор сервера может за считанные минуты провести атаку, используя оборудование стоимостью около $10 или, в некоторых случаях, только программные средства. Атака заставляет модули памяти DDR4 или DDR5 некорректно сообщать свой объем во время загрузки. После этого SEV-SNP перестает генерировать криптографический хеш, подтверждающий целостность системы, даже при серьезной компрометации виртуальной машины.

Современные компьютеры все чаще используют шифрование для защиты чувствительных данных в оперативной памяти, особенно в облачных средах с высоким риском утечек и внутренних угроз. Технология AMD SEV призвана обеспечивать конфиденциальность в облаке путем шифрования памяти виртуальных машин и изоляции от злоумышленников, способных скомпрометировать критическую инфраструктуру.

Оказывается, защиту SEV, включая последнюю версию SEV-SNP, позволяют обойти манипуляции с встроенным чипом SPD на коммерческих модулях DRAM. На основе этой примитивной атаки BadRAM можно полностью взломать экосистему AMD SEV, подделывая отчеты удаленной аттестации и внедряя бэкдоры в любую защищенную виртуальную машину.

В ответ на отчет об уязвимости AMD уже выпустила патчи. По словам исследователей, исправления не влияют на производительность, за исключением возможного увеличения времени загрузки. Уязвимость BadRAM отслеживается как CVE-2024-21944 и AMD-SB-3015.

Современная динамическая оперативная память для серверов обычно поставляется в форме DIMM (Dual In-Line Memory Modules). Основным строительным блоком этих прямоугольных модулей являются конденсаторы: заряженные представляют единицу, разряженные – ноль. Конденсаторы организованы в ячейки, формирующие массивы строк и столбцов, которые, в свою очередь, объединяются в ранги и банки. Чем больше конденсаторов в DIMM, тем больше его емкость. Серверы обычно имеют несколько DIMM, организованных в каналы для параллельной обработки.

Для хранения или доступа к данным сервер должен определить расположение представляющих их битов в сложной конфигурации транзисторов. Местоположения отслеживаются через адреса, отображающие канал, ранг, строку банка и столбец. Преобразование физических адресов в биты адреса DRAM выполняется контроллером памяти не один к одному – последовательные адреса распределяются между разными каналами, рангами и банками.

Перед отображением этих локаций сервер должен определить количество подключенных DIMM и общий объем памяти. Эта информация предоставляется при каждой загрузке, когда BIOS опрашивает чип SPD (Serial Presence Detect) на поверхности DIMM. BadRAM заставляет чип SPD сообщать удвоенную емкость, добавляя дополнительный адресный бит. Для этого администратору сервера достаточно однократно подключить специально запрограммированный Raspberry Pi к чипу SPD.

В некоторых случаях, при использовании определенных моделей DIMM с недостаточной защитой чипа, модификация возможна программным путем. В любом варианте изменение требуется выполнить только один раз – после этого чип SPD будет постоянно фальсифицировать доступный объем памяти.

Затем администратор настраивает операционную систему так, чтобы она игнорировала “призрачную память” – верхнюю половину емкости, о которой сообщает скомпрометированный чип SPD, продолжая отображение на нижнюю половину реальной памяти. В Linux эта конфигурация выполняется с помощью параметра ядра memmap.

Разработанный исследователями скрипт позволяет злоумышленнику быстро находить расположение битов призрачной памяти. Псевдонимы открывают доступ к регионам памяти, которые SEV-SNP должна защищать. Атакующий получает возможность чтения и записи в защищенные области памяти. Он может скопировать криптографический хеш SEV-SNP, подтверждающий целостность виртуальной машины, и загружать скомпрометированную VM с подменой хеша провальной аттестации на успешный.

Исследователи проверили BadRAM против Intel SGX – конкурирующего процессора, предлагающего сопоставимые гарантии целостности. Классическая, ныне снятая с производства версия SGX допускала чтение защищенных областей, но не запись. Современные процессоры Intel Scalable SGX и Intel TDX полностью блокируют чтение и запись. Уязвимость аналогичных процессоров Arm не проверялась: для тестирования они недоступны.

Public Release.