Sulmoni Intel SGX për të nxjerrë të dhëna të ndjeshme ose për të ekzekutuar kodin në enklavë

Studiuesit nga Universiteti i Shkencës dhe Teknologjisë së Mbrojtjes së Ushtrisë Çlirimtare Popullore, Universiteti Kombëtar i Singaporit dhe ETH Cyrih kanë zhvilluar një metodë të re për të sulmuar enklavat e izoluara Intel SGX (Software Guard Extensions). Sulmi quhet SmashEx dhe shkaktohet nga problemet me rihyrjen kur trajtohen situata përjashtimore gjatë funksionimit të komponentëve të kohës së funksionimit për Intel SGX. Metoda e propozuar e sulmit bën të mundur, nëse keni kontroll mbi sistemin operativ, të përcaktoni të dhënat konfidenciale të vendosura në enklavë, ose të organizoni kopjimin e kodit tuaj në kujtesën e enklavës dhe ekzekutimin e tij.

Prototipet e Exploit janë përgatitur për enklavat me kohë ekzekutimi bazuar në Intel SGX SDK (CVE-2021-0186) dhe Microsoft Open Enclave (CVE-2021-33767). Në rastin e parë, u demonstrua aftësia për të nxjerrë një çelës RSA të përdorur në një server në internet për HTTPS, dhe në të dytën, ishte e mundur të përcaktohet përmbajtja e marrë nga programi cURL që funksiononte brenda enklavës. Dobësia tashmë është adresuar në mënyrë programore në versionet e Intel SGX SDK 2.13 dhe Open Enclave 0.17.1. Përveç Intel SGX SDK dhe Microsoft Open Enclave, dobësia shfaqet edhe në Google Asylo SDK, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX dhe Veracruz.

Le të kujtojmë se teknologjia SGX (Software Guard Extensions) u shfaq në procesorët Intel Core të gjeneratës së gjashtë (Skylake) dhe ofron një sërë udhëzimesh që lejojnë aplikacionet e nivelit të përdoruesit të ndajnë zona të mbyllura memorie - enklava, përmbajtja e të cilave nuk mund të lexohet dhe modifikuar edhe nga kerneli dhe kodi i ekzekutuar në modalitetet ring0, SMM dhe VMM. Është e pamundur të transferohet kontrolli në kodin në enklavë duke përdorur funksionet tradicionale të kërcimit dhe manipulimet me regjistrat dhe stivën - udhëzimet e reja të krijuara posaçërisht EENTER, EEXIT dhe ERESUME përdoren për të transferuar kontrollin në enklavë, të cilat kryejnë kontrolle të autoritetit. Në këtë rast, kodi i vendosur në enklavë mund të përdorë metoda klasike të thirrjes për të aksesuar funksionet brenda enklavës dhe udhëzime speciale për të thirrur funksione të jashtme. Kriptimi i memories së enklave përdoret për të mbrojtur kundër sulmeve harduerike, si p.sh. lidhja me një modul DRAM.

Sulmoni Intel SGX për të nxjerrë të dhëna të ndjeshme ose për të ekzekutuar kodin në enklavë

Problemi është se teknologjia SGX lejon sistemin operativ të ndërpresë një enklavë duke hedhur një përjashtim harduer, dhe enklavat nuk zbatojnë siç duhet primitivat për trajtimin atomik të përjashtimeve të tilla. Ndryshe nga kerneli i sistemit operativ dhe aplikacionet e rregullta, kodi brenda enklavave nuk ka akses në primitivë për organizimin e veprimeve atomike kur trajton përjashtimet e hedhura në mënyrë asinkrone. Pa primitivët atomikë të specifikuar, enklava mund të ndërpritet në çdo kohë dhe të kthehet në ekzekutim, madje edhe në momentet kur enklava po ekzekuton seksione kritike dhe është në një gjendje të pasigurt (për shembull, kur regjistrat e CPU nuk ruhen/restaurohen).

Sulmoni Intel SGX për të nxjerrë të dhëna të ndjeshme ose për të ekzekutuar kodin në enklavë

Për funksionimin normal, teknologjia SGX lejon që ekzekutimi i enklavës të ndërpritet nga përjashtime të konfigurueshme harduerike. Kjo veçori lejon mjediset e kohës së ekzekutimit të enklave të zbatojnë trajtimin e përjashtimeve brenda enklavës ose përpunimin e sinjalit, por gjithashtu mund të shkaktojë gabime të rihyrjes. Sulmi SmashEx bazohet në shfrytëzimin e të metave në SDK për shkak të të cilave situata e ri-thirrjes së mbajtësit të përjashtimeve nuk trajtohet siç duhet. Është e rëndësishme që për të shfrytëzuar cenueshmërinë, sulmuesi duhet të jetë në gjendje të ndërpresë ekzekutimin e enklavës, d.m.th. duhet të kontrollojë funksionimin e mjedisit të sistemit.

Pas hedhjes së një përjashtimi, sulmuesi merr një dritare të vogël kohore gjatë së cilës filli i ekzekutimit mund të përgjohet përmes manipulimit të parametrave të hyrjes. Në veçanti, nëse keni akses në sistem (mjedis jashtë enklavës), mund të krijoni një përjashtim të ri menjëherë pas ekzekutimit të instruksionit të hyrjes në enklava (EENTER), i cili do të kthejë kontrollin në sistem në një fazë kur konfigurimi i stivit për ende nuk ka përfunduar enklava, në të cilën ruhet edhe gjendja e regjistrave të CPU-së.

Sistemi më pas mund të kthejë kontrollin përsëri në enklavë, por meqenëse pirgja e enklavës nuk ishte konfiguruar në kohën e ndërprerjes, enklava do të ekzekutohet me pirgun që banon në memorien e sistemit, i cili mund të përdoret për të përdorur programimin e orientuar drejt kthimit (ROP ) teknikat e shfrytezimit.Programimi i Orientuar). Kur përdor teknikën ROP, sulmuesi nuk përpiqet të vendosë kodin e tij në memorie, por operon në pjesë të udhëzimeve të makinës tashmë të disponueshme në bibliotekat e ngarkuara, duke përfunduar me një udhëzim kthimi kontrolli (si rregull, këto janë fundet e funksioneve të bibliotekës) . Puna e shfrytëzimit zbret në ndërtimin e një zinxhiri thirrjesh në blloqe të ngjashme (“gadgets”) për të marrë funksionalitetin e dëshiruar.

Sulmoni Intel SGX për të nxjerrë të dhëna të ndjeshme ose për të ekzekutuar kodin në enklavë
Sulmoni Intel SGX për të nxjerrë të dhëna të ndjeshme ose për të ekzekutuar kodin në enklavë


Burimi: opennet.ru

Shto një koment