Uzbrukums Intel SGX, lai anklāvā iegūtu sensitīvus datus vai izpildītu kodu

Pētnieki no Tautas atbrīvošanas armijas Aizsardzības zinātnes un tehnoloģiju universitātes, Singapūras Nacionālās universitātes un ETH Cīrihes ir izstrādājuši jaunu metodi, kā uzbrukt izolētiem anklāviem Intel SGX (Software Guard eXtensions). Uzbrukumu sauc par SmashEx, un to izraisa problēmas ar atkārtotu ieeju, apstrādājot izņēmuma situācijas Intel SGX izpildlaika komponentu darbības laikā. Piedāvātā uzbrukuma metode ļauj, ja jums ir operētājsistēmas kontrole, noteikt anklāvā esošos konfidenciālos datus vai organizēt jūsu koda kopēšanu anklāva atmiņā un tā izpildi.

Exploit prototipi ir sagatavoti anklāviem ar izpildlaiku, pamatojoties uz Intel SGX SDK (CVE-2021-0186) un Microsoft Open Enclave (CVE-2021-33767). Pirmajā gadījumā tika demonstrēta iespēja iegūt RSA atslēgu, kas tiek izmantota tīmekļa serverī HTTPS, bet otrajā bija iespējams noteikt saturu, ko iegūst anklāvā strādājošā cURL utilīta. Ievainojamība jau ir programmatiski novērsta Intel SGX SDK 2.13 un Open Enclave 0.17.1 laidienos. Papildus Intel SGX SDK un Microsoft Open Enclave ievainojamība parādās arī Google Asylo SDK, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX un Veracruz.

Atgādināsim, ka SGX (Software Guard Extensions) tehnoloģija parādījās sestās paaudzes Intel Core procesoros (Skylake) un piedāvā virkni instrukciju, kas ļauj lietotāja līmeņa lietojumprogrammām piešķirt slēgtās atmiņas zonas – anklāvus, kuru saturu nevar nolasīt un ko modificē pat kodols un kods, kas izpildīts ring0, SMM un VMM režīmos. Kontroles pārnešana uz kodu anklāvā nav iespējama, izmantojot tradicionālās lēciena funkcijas un manipulācijas ar reģistriem un steku - kontroles pārnešanai uz anklāvu tiek izmantotas speciāli izveidotas jaunas instrukcijas EENTER, EEXIT un ERESUME, kas veic autoritātes pārbaudes. Šajā gadījumā kods, kas ievietots anklāvā, var izmantot klasiskās izsaukšanas metodes, lai piekļūtu funkcijām anklāvā, un īpašas instrukcijas ārējo funkciju izsaukšanai. Enklāva atmiņas šifrēšana tiek izmantota, lai aizsargātu pret aparatūras uzbrukumiem, piemēram, savienojumu ar DRAM moduli.

Uzbrukums Intel SGX, lai anklāvā iegūtu sensitīvus datus vai izpildītu kodu

Problēma ir tāda, ka SGX tehnoloģija ļauj operētājsistēmai pārtraukt anklāvu, izmantojot aparatūras izņēmumu, un anklāvi pareizi neievieš primitīvus, lai atomiski apstrādātu šādus izņēmumus. Atšķirībā no operētājsistēmas kodola un parastajām lietojumprogrammām kodam anklāvos nav piekļuves primitīviem atomu darbību organizēšanai, apstrādājot asinhroni izmestus izņēmumus. Bez norādītajiem atomu primitīviem anklāvu var pārtraukt jebkurā laikā un atgriezties pie izpildes, pat brīžos, kad anklāvs izpilda kritiskās sadaļas un atrodas nedrošā stāvoklī (piemēram, kad CPU reģistri netiek saglabāti/atjaunoti).

Uzbrukums Intel SGX, lai anklāvā iegūtu sensitīvus datus vai izpildītu kodu

Normālai darbībai SGX tehnoloģija ļauj pārtraukt anklāva izpildi ar konfigurējamiem aparatūras izņēmumiem. Šī funkcija ļauj anklāva izpildlaika vidēs ieviest anklāva iekšējo izņēmumu apstrādi vai signālu apstrādi, taču tā var izraisīt arī atkārtotas ievadīšanas kļūdas. SmashEx uzbrukums ir balstīts uz SDK trūkumu izmantošanu, kuru dēļ izņēmumu apstrādātāja atkārtotas izsaukšanas situācija netiek pareizi apstrādāta. Ir svarīgi, lai ievainojamības izmantošanai uzbrucējam būtu jāspēj pārtraukt anklāva izpildi, t.i. jākontrolē sistēmas vides darbība.

Pēc izņēmuma izdarīšanas uzbrucējs saņem nelielu laika logu, kura laikā izpildes pavedienu var pārtvert, manipulējot ar ievades parametriem. Jo īpaši, ja jums ir piekļuve sistēmai (videi ārpus anklāva), varat izveidot jaunu izņēmumu tūlīt pēc anklāva ievades instrukcijas (EENTER) izpildes, kas atgriezīs vadību sistēmai posmā, kad tiks veikta skursteņa iestatīšana. vēl nav pabeigts anklāvs, kurā tiek saglabāts arī CPU reģistru stāvoklis.

Sistēma pēc tam var atgriezt vadību atpakaļ anklāvā, bet, tā kā anklāva steks nebija konfigurēts pārtraukuma laikā, anklāvs tiks izpildīts ar steku, kas atrodas sistēmas atmiņā, ko var izmantot, lai izmantotu uz atgriešanos orientētu programmēšanu (ROP). ) izmantošanas metodes. Orientētā programmēšana). Izmantojot ROP paņēmienu, uzbrucējs nemēģina ievietot savu kodu atmiņā, bet darbojas ar ielādētajās bibliotēkās jau pieejamām mašīnas instrukcijām, beidzot ar vadības atgriešanas instrukciju (parasti tās ir bibliotēkas funkciju beigas) . Ekspluatācijas uzdevums ir izveidot zvanu ķēdi uz līdzīgiem blokiem (“sīkrīkiem”), lai iegūtu vēlamo funkcionalitāti.

Uzbrukums Intel SGX, lai anklāvā iegūtu sensitīvus datus vai izpildītu kodu
Uzbrukums Intel SGX, lai anklāvā iegūtu sensitīvus datus vai izpildītu kodu


Avots: opennet.ru

Pievieno komentāru