Leuveni, Lübeki ja Birmingham ülikooli teadlaste grupp töötas välja BadRAM (CVE-2024-21944) rünnaku meetodi, mis võimaldab mööduda autentimise mehhanismist ja kompromiteerida keskkondi, mis on kaitstud AMD protsessorite SEV-SNP laiendusega. Rünnaku sooritamiseks peab ründaja, välja arvatud harvadel juhtudel, omama füüsilist juurdepääsu mälumoodulitele ning olema võimeline täitma koodi nulltaseme kaitsetasandil (ring0) serveris, kus töötavad kaitstud külgsüsteemid.
AMD SEV (Secure Encrypted Virtualization) laiendused on suunatud virtuaalmasinate mälute kestvuse tagamisele ning nende kaitsmisele sekkumise ja analüüsi eest, mida suudab teostada host-süsteemi administraator, kes suudab täita koodi hüperviisori tasandil. Alguses piirdus AMD SEV kaitse külgsüsteemi mälusisalduse krüpteerimise ja registrite eraldamisega, kuid hiljem AMD EPYC protsessorites viidi ellu SEV-SNP (Secure Nested Paging) laiendus, et tagada mälulehtede turvaline töötlemine, mis garanteerib mälute kestvuse ja ei võimalda hüperviisoril külgsüsteemi mälu muuta.
AMD SEV-SNP mehhanism loodi selliselt, et mitte ühtegi riigiasutust ega andmekeskuse või pilveteenuse pakkuja töötajat, kelle halduses on kaitstud külgsüsteemid, ei saaks sekkuda külgsüsteemi toimimisse. Pakutud BadRAM rünnaku meetod võimaldab mööduda tagatud garantiidest, muutes DDR4 või DDR5 mälumoodulite SPD (Serial Presence Detect) metaandmeid. Eduka rünnaku korral võib ründaja kirjutada üle külgsüsteemi mälus asuva salajase sisu (šifreeritud tasemel, dekrüpteerimise võimaluseta) ja mööduda autentimise mehhanismist, näiteks peites tagaukse virtualiseeritud masinasse, mis on kaitstud SEV-SNP tehnoloogia abil.
Rünnaku aluseks on SPD-s vale mälumooduli parameetrite esitlemine, mis sunnib protsessorit pöörduma mitteeksisteerivatele aadressidele, mis kajastuvad olemasolevates mälupiirkondades. Ründaja võib SPD-d kohandada nii, et mälumoodul tagastab protsessorile suurema suuruse kui mälumooduli tegelikud omadused. Pärast seda võib ründaja luua fiktiivse mitteeksisteeriva mälu mapa reaalsesse DRAMi piirkonda, mida juba kasutatakse krüpteeritud kujul kaitstud külalisüsteemides. Tulemuseks on olukord, kus erinevad aadressid viitavad ühele ja samale füüsilisele mälule (kaks piirkonda on peegeldatud ühte DRAM-i piirkonda), st fiktiivse peegeldatud mäluaadressi kaudu on võimalik pääseda ligi juba kasutatavale reaalsele mälule ja mööduda CPU mälu kaitsemehhanismidest.

Rünnaku teostamiseks piisab lihtsast programmeerijast, mille maksumus on umbes 10 dollarit, mis koosneb Raspberry Pi Pico mikrokontrollerist, DDR4 / DDR5 moodulite ühenduslingist ja toiteallikast. Rünnaku teostamiseks kasutatavad tööriistad, tuuma moodul ja eksploitide prototüübid on ühes kohas GitHubis saadaval.

Mõnede tootjate kiipide puhul, kus SPD kirjutamise lukustus ei ole aktiveeritud, on rünnaku teostamine võimalik programmiliselt ilma füüsilise juurdepääsuta serverile. Näiteks on võimalik programmiliselt muuta RGB-valgustusega Corsairi mälumoodulite parameetreid. Täiesti programmilise rünnaku korral võib süsteem olla kompromiteeritud, näiteks läbi pahatahtliku BIOS-i värskenduse või administraatorite diversioonide kaudu. serverid pilveteenustes.

Meetodi töö kinnitamiseks on demonstreeritud kahte rünnakut. Esimeses rünnakus on näidatud võimalust krüpteeritud tekstide korduvaks tootmiseks — AMD SEV kasutamisel salvestatakse andmed mälus krüpteeritud kujul ja ründaja ei saa kindlaks teha sisu, kuid tal on võimalus lugeda krüpteeritud andmeid ja seejärel asendada need teise krüpteeritud sisuga.
Teises rünnakus demonstreeriti SEV-SNP sertifitseerimismehhanismi kõrvaldamise võimalust, mis tagab krüptograafilise kinnituse virtuaalmasina terviklikkuse osas, kui see töötab kaitstud keskkonnas. Ründaja saab haarata õigesti sertifitseeritud virtuaalmasina aruande ja seejärel kasutada seda kompromiteeritud virtuaalmasinaga, näiteks varjates tagaukse sissetoomise jälgi.
Probleem puudutab AMD EPYC protsessorite 3. ja 4. põlvkonda, mille koodnimed on Milan, Milan-X, Genoa, Bergamo, Genoa-X ja Siena. Haavatavuse blokeerimiseks on AMD juba välja andnud SEV-firmware'i uuenduse, mis sisaldab ALIAS_CHECK kontrolli, mis takistab mälu manipuleerimist, mis on seotud käsitletava rünnakuga.
Inteli ettenähtud tehnoloogiad Scalable SGX ja TDX ei ole rünnakule altti, kuna neis vajalikud kontrollid on algselt olemas. Klassikaline Inteli SGX tehnoloogia, mis 2021. aastal kuulutati Inteli poolt vananenuks, on osaliselt rünnakule altti (sarnaselt varasemalt tuntud MemBuster rünnakuga, kurjategija saab analüüsida krüpteeritud mälu juurde pääsemisi, see tähendab, et on võimalik ainult krüptoteksti lugemine, kuid mitte selle ümberkirjutamine). ARM protsessorite CCA (Confidential Compute Architecture) laienduste testimist ei ole läbi viidud.
Lisaks teatatakse veel ühest haavatavusest, mis on seotud AMD SEV-SNP-ga. Haavatavus tuvastati AMD arendatavas QEMU emulaatori harud, mis on ette nähtud töötamiseks virtuaalmasinate SEV-SNP-iga. Probleem võimaldab host-keskkonna administraatoril saada root-juurdepääsu külaliste süsteemidele, manipuleerides ACPI tabelitega. Haavatavus tuleneb sellest, et külalise süsteemi käivitamisel viiakse läbi Linuxi tuuma, algse RAM-diski ja tuuma parameetrite terviklikkuse kontroll, kuid ACPI tabeleid ei arvestata, mille kaudu hypervisor võib esitada spetsiaalselt koostatud AML (ACPI Machine Language) koodi, mis on mõeldud käivitatavaks külaliskeskkonnas. Toodud probleem ei ole konkreetne QEMU suhtes ja seda täheldatakse igasugustes hypervisorites ja emulaatorites, kuna Linuxi tuum usaldab igasuguseid ACPI andmeid, mis tulevad hypervisorilt.


Allikas: opennet.ru
