Hushambulia Intel SGX ili kutoa data nyeti au kutekeleza msimbo kwenye enclave

Watafiti kutoka Chuo Kikuu cha Sayansi na Teknolojia cha Jeshi la Ukombozi wa Watu, Chuo Kikuu cha Kitaifa cha Singapore na ETH Zurich wameunda mbinu mpya ya kushambulia maeneo yaliyotengwa ya Intel SGX (Programu ya Walinzi eXtensions). Shambulio hilo linaitwa SmashEx na husababishwa na matatizo ya kuingia tena wakati wa kushughulikia hali za ubaguzi wakati wa uendeshaji wa vipengele vya wakati wa kukimbia kwa Intel SGX. Njia iliyopendekezwa ya shambulio hufanya iwezekanavyo, ikiwa una udhibiti wa mfumo wa uendeshaji, kuamua data ya siri iliyo kwenye enclave, au kupanga kunakili msimbo wako kwenye kumbukumbu ya enclave na utekelezaji wake.

Prototypes za matumizi zimetayarishwa kwa enclaves na wakati wa kukimbia kulingana na Intel SGX SDK (CVE-2021-0186) na Microsoft Open Enclave (CVE-2021-33767). Katika kesi ya kwanza, uwezo wa kutoa ufunguo wa RSA unaotumiwa kwenye seva ya wavuti kwa HTTPS ulionyeshwa, na katika pili, iliwezekana kuamua maudhui yaliyopatikana na shirika la cURL linaloendesha ndani ya enclave. Athari hii tayari imeshughulikiwa kwa utaratibu katika matoleo ya Intel SGX SDK 2.13 na Open Enclave 0.17.1. Kando na Intel SGX SDK na Microsoft Open Enclave, hatari hiyo pia inaonekana katika Google Asylo SDK, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX na Veracruz.

Hebu tukumbuke kwamba teknolojia ya SGX (Programu ya Upanuzi wa Walinzi wa Programu) ilionekana katika wasindikaji wa Intel Core wa kizazi cha sita (Skylake) na inatoa mfululizo wa maagizo ambayo inaruhusu maombi ya kiwango cha mtumiaji kutenga maeneo ya kumbukumbu iliyofungwa - enclaves, yaliyomo ambayo hayawezi kusoma na. iliyorekebishwa hata na kernel na msimbo kutekelezwa katika ring0, SMM na VMM modes. Haiwezekani kuhamisha udhibiti kwa kanuni katika enclave kwa kutumia kazi za jadi za kuruka na uendeshaji na rejista na stack - maelekezo mapya yaliyoundwa maalum EENTER, EEXIT na ERESUME hutumiwa kuhamisha udhibiti kwa enclave, ambayo hufanya ukaguzi wa mamlaka. Katika kesi hii, msimbo uliowekwa kwenye enclave unaweza kutumia mbinu za kupiga simu za classical kufikia kazi ndani ya enclave na maagizo maalum ya kuita kazi za nje. Usimbaji fiche wa kumbukumbu ya enclave hutumiwa kulinda dhidi ya mashambulizi ya maunzi kama vile kuunganisha kwenye moduli ya DRAM.

Hushambulia Intel SGX ili kutoa data nyeti au kutekeleza msimbo kwenye enclave

Shida ni kwamba teknolojia ya SGX inaruhusu mfumo wa kufanya kazi kughairi enclave kwa kutupa ubaguzi wa maunzi, na enclaves hazitekelezi ipasavyo kanuni za awali za kushughulikia tofauti kama hizo. Tofauti na kerneli ya mfumo wa uendeshaji na programu za kawaida, msimbo ndani ya enclaves hauna ufikiaji wa primitives ya kupanga vitendo vya atomiki wakati wa kushughulikia vighairi vilivyotupwa bila usawa. Bila viasili vilivyobainishwa vya atomiki, enclave inaweza kukatizwa wakati wowote na kurejeshwa kwa utekelezaji, hata wakati ambapo enclave inatekeleza sehemu muhimu na iko katika hali isiyo salama (kwa mfano, wakati rejista za CPU hazijahifadhiwa/kurejeshwa).

Hushambulia Intel SGX ili kutoa data nyeti au kutekeleza msimbo kwenye enclave

Kwa operesheni ya kawaida, teknolojia ya SGX inaruhusu utekelezaji wa enclave kuingiliwa na vighairi vya maunzi vinavyoweza kusanidiwa. Kipengele hiki huruhusu mazingira ya wakati wa utekelezaji wa enclave kutekeleza ushughulikiaji usiofuata kanuni za ndani au usindikaji wa mawimbi, lakini pia kinaweza kusababisha hitilafu za walioingia tena. Mashambulizi ya SmashEx yanatokana na kutumia dosari katika SDK kutokana na hali hiyo ya kuita tena kidhibiti cha ubaguzi haishughulikiwi ipasavyo. Ni muhimu kwamba kutumia mazingira magumu, mshambuliaji lazima awe na uwezo wa kupinga utekelezaji wa enclave, i.e. lazima kudhibiti uendeshaji wa mazingira ya mfumo.

Baada ya kutupa ubaguzi, mshambuliaji hupokea dirisha ndogo wakati ambapo thread ya utekelezaji inaweza kuingiliwa kwa njia ya uendeshaji wa vigezo vya uingizaji. Hasa, ikiwa unaweza kufikia mfumo (mazingira nje ya enclave), unaweza kuunda ubaguzi mpya mara tu baada ya kutekeleza maagizo ya kuingia kwenye enclave (EENTER), ambayo itarejesha udhibiti kwenye mfumo katika hatua wakati usanidi wa rafu kwa enclave bado haijakamilika, ambayo hali ya rejista za CPU pia imehifadhiwa.

Mfumo unaweza kisha kurudisha udhibiti kwenye enclave, lakini kwa kuwa mrundikano wa enclave haukusanidiwa wakati wa kukatiza, enclave itatekelezwa na safu inayokaa kwenye kumbukumbu ya mfumo, ambayo inaweza kutumika kuajiri programu inayolenga kurudi (ROP). ) mbinu za unyonyaji. Wakati wa kutumia mbinu ya ROP, mshambuliaji hajaribu kuweka msimbo wake kwenye kumbukumbu, lakini hufanya kazi kwenye vipande vya maagizo ya mashine tayari yanapatikana kwenye maktaba zilizopakiwa, na kuishia na maagizo ya kurudi kwa udhibiti (kama sheria, haya ni mwisho wa kazi za maktaba) . Kazi ya unyonyaji inakuja kwa kuunda safu ya simu kwa vizuizi sawa ("vidude") ili kupata utendakazi unaotaka.

Hushambulia Intel SGX ili kutoa data nyeti au kutekeleza msimbo kwenye enclave
Hushambulia Intel SGX ili kutoa data nyeti au kutekeleza msimbo kwenye enclave


Chanzo: opennet.ru

Kuongeza maoni