Pag-atake sa Intel SGX para kumuha ng sensitibong data o magsagawa ng code sa isang enclave

Ang mga mananaliksik mula sa People's Liberation Army Defense Science and Technology University, National University of Singapore at ETH Zurich ay nakabuo ng bagong paraan ng pag-atake sa mga nakahiwalay na enclave na Intel SGX (Software Guard eXtensions). Ang pag-atake ay tinatawag na SmashEx at sanhi ng mga problema sa muling pagpasok kapag humahawak sa mga sitwasyon ng pagbubukod sa panahon ng pagpapatakbo ng mga bahagi ng runtime para sa Intel SGX. Ginagawang posible ng iminungkahing paraan ng pag-atake, kung mayroon kang kontrol sa operating system, upang matukoy ang kumpidensyal na data na matatagpuan sa enclave, o ayusin ang pagkopya ng iyong code sa memorya ng enclave at ang pagpapatupad nito.

Ang mga Exploit prototype ay inihanda para sa mga enclave na may runtime batay sa Intel SGX SDK (CVE-2021-0186) at Microsoft Open Enclave (CVE-2021-33767). Sa unang kaso, ipinakita ang kakayahang kunin ang isang RSA key na ginamit sa isang web server para sa HTTPS, at sa pangalawa, posibleng matukoy ang nilalamang nakuha ng cURL utility na tumatakbo sa loob ng enclave. Ang kahinaan ay natugunan nang programmatically sa mga release ng Intel SGX SDK 2.13 at Open Enclave 0.17.1. Bilang karagdagan sa Intel SGX SDK at Microsoft Open Enclave, lumalabas din ang kahinaan sa Google Asylo SDK, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX at Veracruz.

Alalahanin natin na ang teknolohiya ng SGX (Software Guard Extensions) ay lumitaw sa ikaanim na henerasyon ng mga processor ng Intel Core (Skylake) at nag-aalok ng isang serye ng mga tagubilin na nagpapahintulot sa mga application sa antas ng user na maglaan ng mga closed memory area - mga enclave, ang mga nilalaman nito ay hindi mababasa at binago kahit na sa pamamagitan ng kernel at ang code na pinaandar sa ring0, SMM at VMM mode. Imposibleng ilipat ang kontrol sa code sa enclave gamit ang tradisyonal na jump function at manipulations na may mga rehistro at stack - espesyal na nilikha ang mga bagong tagubilin na EENTER, EEXIT at ERESUME ay ginagamit upang ilipat ang kontrol sa enclave, na nagsasagawa ng mga pagsusuri sa awtoridad. Sa kasong ito, ang code na inilagay sa enclave ay maaaring gumamit ng mga klasikal na paraan ng pagtawag upang ma-access ang mga function sa loob ng enclave at mga espesyal na tagubilin para tumawag sa mga panlabas na function. Ang enclave memory encryption ay ginagamit upang maprotektahan laban sa mga pag-atake ng hardware tulad ng pagkonekta sa isang DRAM module.

Pag-atake sa Intel SGX para kumuha ng sensitibong data o magsagawa ng code sa isang enclave

Ang problema ay ang teknolohiya ng SGX ay nagpapahintulot sa operating system na i-abort ang isang enclave sa pamamagitan ng paghagis ng isang hardware exception, at ang mga enclave ay hindi maayos na nagpapatupad ng mga primitive para sa atomically handling tulad ng mga exception. Hindi tulad ng kernel ng operating system at mga regular na application, ang code sa loob ng mga enclave ay walang access sa mga primitive para sa pag-aayos ng mga atomic na aksyon kapag humahawak ng mga asynchronously thrown exception. Kung wala ang tinukoy na atomic primitives, ang enclave ay maaaring maantala anumang oras at maibalik sa pagpapatupad, kahit na sa mga oras na ang enclave ay nagsasagawa ng mga kritikal na seksyon at nasa isang hindi ligtas na estado (halimbawa, kapag ang mga rehistro ng CPU ay hindi nai-save/na-restore).

Pag-atake sa Intel SGX para kumuha ng sensitibong data o magsagawa ng code sa isang enclave

Para sa normal na operasyon, pinapayagan ng teknolohiya ng SGX na maantala ang pagpapatupad ng enclave sa pamamagitan ng mga pagbubukod sa hardware na maaaring i-configure. Binibigyang-daan ng feature na ito ang mga enclave runtime environment na magpatupad ng intra-enclave exception handling o pagpoproseso ng signal, ngunit maaari rin itong magdulot ng mga error sa muling pagpasok. Ang pag-atake ng SmashEx ay batay sa pagsasamantala sa mga kapintasan sa SDK dahil sa kung saan ang sitwasyon ng muling pagtawag sa exception handler ay hindi maayos na pinangangasiwaan. Mahalaga na upang pagsamantalahan ang kahinaan, ang umaatake ay dapat na makagambala sa pagpapatupad ng enclave, i.e. dapat kontrolin ang pagpapatakbo ng kapaligiran ng system.

Pagkatapos maghagis ng exception, makakatanggap ang attacker ng isang maliit na window ng oras kung saan maaaring ma-intercept ang execution thread sa pamamagitan ng pagmamanipula ng mga parameter ng input. Sa partikular, kung mayroon kang access sa system (environment sa labas ng enclave), maaari kang lumikha ng bagong exception kaagad pagkatapos isagawa ang enclave entry instruction (EENTER), na magbabalik ng kontrol sa system sa isang yugto kapag ang stack setup para sa enclave ay hindi pa nakumpleto, kung saan Ang estado ng mga rehistro ng CPU ay nai-save din.

Pagkatapos ay maibabalik ng system ang kontrol pabalik sa enclave, ngunit dahil hindi na-configure ang stack ng enclave sa oras ng interrupt, ipapatupad ang enclave kasama ang stack na naninirahan sa memorya ng system, na maaaring magamit upang gumamit ng return-oriented programming (ROP ) mga diskarte sa pagsasamantala. Nakatuon sa Programming). Kapag ginagamit ang diskarteng ROP, hindi sinusubukan ng attacker na ilagay ang kanyang code sa memorya, ngunit nagpapatakbo sa mga piraso ng mga tagubilin ng makina na magagamit na sa mga naka-load na aklatan, na nagtatapos sa isang control return instruction (bilang panuntunan, ito ang mga dulo ng mga function ng library) . Ang gawain ng pagsasamantala ay nagmumula sa pagbuo ng isang hanay ng mga tawag sa mga katulad na bloke ("mga gadget") upang makuha ang nais na paggana.

Pag-atake sa Intel SGX para kumuha ng sensitibong data o magsagawa ng code sa isang enclave
Pag-atake sa Intel SGX para kumuha ng sensitibong data o magsagawa ng code sa isang enclave


Pinagmulan: opennet.ru

Magdagdag ng komento