Atakuokite „Intel SGX“, kad išgautumėte neskelbtinus duomenis arba vykdytumėte kodą anklave

Liaudies išlaisvinimo armijos gynybos mokslo ir technologijų universiteto, Singapūro nacionalinio universiteto ir ETH Ciuricho mokslininkai sukūrė naują metodą, kaip atakuoti izoliuotus Intel SGX (Software Guard eXtensions) anklavus. Ataka vadinama „SmashEx“ ir ją sukelia problemos, susijusios su pakartotiniu įėjimu, sprendžiant išimtines situacijas, kai veikia „Intel SGX“ vykdymo laiko komponentai. Siūlomas atakos metodas leidžia, jei valdote operacinę sistemą, nustatyti konfidencialius duomenis, esančius anklave, arba organizuoti kodo kopijavimą į anklavo atmintį ir jo vykdymą.

Exploit prototipai buvo paruošti anklavams, kurių vykdymo laikas yra pagrįstas Intel SGX SDK (CVE-2021-0186) ir Microsoft Open Enclave (CVE-2021-33767). Pirmuoju atveju buvo parodyta galimybė išgauti RSA raktą, naudojamą žiniatinklio serveryje, skirtą HTTPS, o antruoju buvo galima nustatyti turinį, gautą naudojant anklavo viduje veikiančią cURL programą. Pažeidžiamumas jau buvo programiškai pašalintas Intel SGX SDK 2.13 ir Open Enclave 0.17.1 leidimuose. Be Intel SGX SDK ir Microsoft Open Enclave, pažeidžiamumas taip pat atsiranda Google Asylo SDK, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX ir Veracruz.

Prisiminkime, kad SGX (Software Guard Extensions) technologija atsirado šeštosios kartos Intel Core procesoriuose (Skylake) ir siūlo eilę instrukcijų, leidžiančių vartotojo lygio programoms skirti uždaras atminties sritis – anklavus, kurių turinio negalima nuskaityti ir modifikuotas net branduolio ir kodo, vykdomo ring0, SMM ir VMM režimais. Neįmanoma perduoti valdymo į kodą anklave naudojant tradicines peršokimo funkcijas ir manipuliacijas su registrais bei stekeliu – specialiai sukurtos naujos instrukcijos EENTER, EEXIT ir ERESUME valdymui perduodamos į anklavą, kurios atlieka autoritetų patikras. Tokiu atveju kodas, įdėtas į anklavą, gali naudoti klasikinius iškvietimo metodus, kad pasiektų funkcijas anklavo viduje, ir specialias instrukcijas, skirtas iškviesti išorines funkcijas. Enclave atminties šifravimas naudojamas apsaugoti nuo aparatinės įrangos atakų, pavyzdžiui, prisijungiant prie DRAM modulio.

Atakuokite „Intel SGX“, kad išgautumėte neskelbtinus duomenis arba vykdytumėte kodą anklave

Problema ta, kad SGX technologija leidžia operacinei sistemai nutraukti anklavą, taikant aparatinės įrangos išimtį, o anklavai netinkamai įgyvendina primityvų, skirtų atominiam tokių išimčių tvarkymui. Skirtingai nuo operacinės sistemos branduolio ir įprastų programų, anklavuose esantis kodas neturi prieigos prie primityvų, skirtų atominiams veiksmams organizuoti, kai tvarkomos asinchroniškai išmestos išimtys. Neturint nurodytų atominių primityvų, anklavas gali būti bet kada nutrauktas ir vėl pradėtas vykdyti, net kai anklavas vykdo svarbias dalis ir yra nesaugios būsenos (pavyzdžiui, kai procesoriaus registrai neišsaugomi/atkuriami).

Atakuokite „Intel SGX“, kad išgautumėte neskelbtinus duomenis arba vykdytumėte kodą anklave

Normaliam darbui SGX technologija leidžia nutraukti anklavo vykdymą dėl konfigūruojamų aparatinės įrangos išimčių. Ši funkcija leidžia anklavo vykdymo aplinkoms įdiegti išimčių tvarkymą anklave arba signalų apdorojimą, tačiau ji taip pat gali sukelti pakartotinio įėjimo klaidų. „SmashEx“ ataka grindžiama SDK trūkumų išnaudojimu, dėl kurių situacija, kai iš naujo iškviečiama išimties tvarkyklės, nėra tinkamai tvarkoma. Svarbu, kad norint išnaudoti pažeidžiamumą, užpuolikas turi turėti galimybę nutraukti anklavo vykdymą, t.y. turi kontroliuoti sistemos aplinkos veikimą.

Įvedęs išimtį, užpuolikas gauna nedidelį laiko langą, per kurį vykdymo giją galima perimti manipuliuojant įvesties parametrais. Visų pirma, jei turite prieigą prie sistemos (aplinkos už anklavo ribų), galite sukurti naują išimtį iš karto įvykdę anklavo įvedimo instrukciją (EENTER), kuri sugrąžins sistemos valdymą tuo metu, kai bus nustatytas dėklas. dar nebaigtas anklavas, kuriame taip pat išsaugoma CPU registrų būsena.

Tada sistema gali grąžinti valdymą atgal į anklavą, bet kadangi anklavo krūva nebuvo sukonfigūruota pertraukimo metu, anklavas veiks su stekeliu, esančiu sistemos atmintyje, kuri gali būti naudojama naudojant į grąžinimą orientuotą programavimą (ROP). ) išnaudojimo būdai. Orientuotas programavimas). Naudodamas ROP techniką, užpuolikas nebando įdėti savo kodo į atmintį, o veikia su mašinų instrukcijomis, kurios jau yra įkeltose bibliotekose, baigiant valdymo grąžinimo instrukcija (paprastai tai yra bibliotekos funkcijų galai) . Išnaudojimo darbas susijęs su iškvietimų grandinės sukūrimu į panašius blokus („programėles“), kad būtų pasiektas norimas funkcionalumas.

Atakuokite „Intel SGX“, kad išgautumėte neskelbtinus duomenis arba vykdytumėte kodą anklave
Atakuokite „Intel SGX“, kad išgautumėte neskelbtinus duomenis arba vykdytumėte kodą anklave


Šaltinis: opennet.ru

Добавить комментарий