Група изследователи от Университетите в Льовен, Любек и Бирмингам разработи метод на атака BadRAM (CVE-2024-21944), който позволява заобикаляне на механизма за удостоверяване на произхода и компрометиране на среди, защитени с разширението SEV-SNP в процесорите на AMD. Обикновено, за да извърши атаката, нападателят трябва да получи физически достъп до модулите на паметта и да може да изпълнява код на ниво нулево защитно колело (ring0) на сървъра, изпълняващ защитени виртуални среди.
Разширенията на AMD SEV (Secure Encrypted Virtualization) са насочени към осигуряване на гаранции за целостта на паметта на виртуалните машини, както и защитата им от намеси и анализи от страна на администратора на хост системата, способен да изпълни код на ниво хипервизор. Първоначално защитата на AMD SEV се ограничаваше до криптиране на съдържанието на паметта на гостуващата система и изолиране на регистрите, но по-късно в процесорите AMD EPYC беше реализирано допълнително разширение SEV-SNP (Secure Nested Paging) за безопасна работа с вградени таблици на страниците на паметта, гарантиращо запазване на целостта на паметта и предотвратяващо промени в паметта на гостуващата система от хипервизора.
Механизмът AMD SEV-SNP е създаден, за да предотврати спецслужбите или персонала на дата центровете и облачните доставчици, в които се изпълняват защитени гост системи, да се намесват в работата на гост системата. Предложеният метод на атака BadRAM позволява заобикаляне на предоставените гаранции чрез промяна на метаданните SPD (Serial Presence Detect) в модулите на паметта DDR4 или DDR5. При успешна атака нападателят може да презапише криптирани данни в паметта на гостуващата система (на ниво на шифротекста, без възможност за декриптиране) и да заобиколи механизма за удостоверяване, например, за да скрие внедряването на бекдор в виртуална машина, защитена с технологията SEV-SNP.
Атаката е основана на поставянето на фалшиви параметри на модула за памет в SPD, които заставят процесора да се обърне към несъществуващи адреси, отразяващи съществуващи области на паметта. Атакуващият може да коригира SPD по начин, по който модулът за памет връща на процесора размер, който надвишава действителните характеристики на модула. След това атакуващият може да направи мапинга на измислената несъществуваща памет към реална област в DRAM, която вече се използва в криптиран вид в защитени хост системи. В крайна сметка се създава ситуация, при която различни адреси сочат към една и съща физическа памет (две области са отразени в една област в чипа DRAM), т.е. по адреса на фиктивната отразена област на паметта може да се получи достъп до вече използваната реална памет и да се заобиколят механизмите за защита на паметта в CPU.

За да се извърши атаката, е достатъчно да се събере прост програматор на стойност около 10 долара, който се състои от микроконтролер Raspberry Pi Pico, интерфейс за DDR4 / DDR5 модули и източник на захранване. Инструментите, използвани за атаката, модулът на ядрото и прототипите на експлойтите са налични в GitHub.

За чипове на определени производители, при които не е изпълнена блокировката на презапис на SPD, извършването на атаката е възможно по софтуерен път без физически достъп до сървъра. Например, софтуерно може да бъдат променени параметрите на модули за памет на компанията Corsair с RGB осветление. При напълно софтуерна атака, системата може да бъде компрометирана, например, чрез прилагане на злонамерено обновление на BIOS или чрез диверсия от страна на администраторите. сървъри в облачните услуги.

Като потвърждение за работата на метода са демонстрирани две атаки. В първата атака се показва възможността за повторно възпроизвеждане на шифротекста - при използване на AMD SEV данните в паметта се съхраняват в зашифрован вид и атакуващият не може да определи съдържанието, но може да прочете зашифрованите данни и след това да ги подмени с друго зашифровано съдържание.
Във второто нападение е демонстрирана възможността за заобикаляне на механизма за удостоверяване SEV-SNP, който предоставя криптографско потвърждение на целостта на виртуалната машина, изпълнявана в защитена среда. Атакуващият може да прихване отчета за удостоверяване на коректна виртуална машина и след това да го подмени с отчет за компрометирана виртуална машина, например, като скрие следите от внедрен бекдор.
Проблемът засяга 3-то и 4-то поколение процесори AMD от серията EPYC, които се предлагат под кодовите имена Milan, Milan-X, Genoa, Bergamo, Genoa-X и Siena. За да блокира уязвимостта, компанията AMD вече е пуснала актуализация на фърмуера SEV, в която е реализирана проверка ALIAS_CHECK, която предотвратява манипулации с паметта, присъщи на разглежданата атака.
Предложените от Intel технологии Scalable SGX и TDX не са уязвими на атаката, тъй като необходимите проверки са налице още от самото начало. Класическата технология Intel SGX, която през 2021 година беше преместена в категорията остарели, частично е уязвима на атаката (по аналогия с по-рано известната атака MemBuster, нападателят може да анализира достъпа до криптирана памет, т.е. е възможно само четене на шифротекста, но не и неговото презаписване). Тестовете на разширенията CCA (Confidential Compute Architecture) в процесорите на ARM не са проведени.
Допълнително се съобщава за още една уязвимост, свързана с AMD SEV-SNP. Уязвимостта е установена в развиващия се AMD клон на емулятора QEMU, предназначен за изпълнение виртуални машини с SEV-SNP. Проблемът позволява на администратора на хост среда да получи root достъп до гостуващите системи чрез манипулации с таблиците ACPI. Уязвимостта е причинена от факта, че при зареждане на гостуваща система се извършва проверка на целостта на ядрото на Linux, началния RAM диск и параметрите на ядрото, но не се вземат предвид таблиците ACPI, чрез които хипервизорът може да изпрати специално оформен код AML (ACPI Machine Language), предназначен за изпълнение в гостуваща среда. Твърди се, че проблемът не е специфичен за QEMU и се проявява при всякакви хипервизори и емулятори, тъй като ядрото на Linux се доверява на всички данни ACPI, постъпили от хипервизора.


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