Анклавда купуя маалыматтарды алуу же кодду аткаруу үчүн Intel SGXке чабуул жасаңыз

Кытайдын Элдик-боштондук армиясынын Коргоо илим жана технология университетинин, Сингапурдун Улуттук университетинин жана ETH Цюрихтин изилдөөчүлөрү обочолонгон Intel SGX (Software Guard eXtensions) анклавдарына каршы чабуулдун жаңы ыкмасын иштеп чыгышты. Чабуул SmashEx деп аталды жана Intel SGX үчүн иштөө убактысынын компоненттеринин иштеши учурунда өзгөчөлүктөр менен иштөөдөгү кайра киргизүү көйгөйлөрүнөн улам келип чыккан. Сунушталган чабуул ыкмасы операциялык системага көзөмөл бар болсо, анклавда жайгашкан жашыруун маалыматтарды аныктоого же анклавдын эс тутумуна өзүнүн кодун көчүрүүнү жана аны аткарууну уюштурууга мүмкүндүк берет.

Exploit прототиптери Intel SGX SDK (CVE-2021-0186) жана Microsoft Open Enclave (CVE-2021-33767) негизинде иштөө убактысынын анклавдары үчүн даярдалган. Биринчи учурда, HTTPS үчүн веб-серверде колдонулган RSA ачкычын чыгарып алуу мүмкүнчүлүгү көрсөтүлдү, экинчисинде, анклавдын ичинде иштеген cURL утилитасы тарабынан алынган мазмунду аныктоого мүмкүн болду. Алсыздык буга чейин Intel SGX SDK 2.13 жана Open Enclave 0.17.1 релиздеринде программалык түрдө оңдолгон. Intel SGX SDK жана Microsoft Open Enclaveдан тышкары, аялуу Google Asylo SDK, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX жана Veracruzда да пайда болот.

Эске салсак, SGX (Software Guard Extensions) технологиясы алтынчы муундагы Intel Core процессорлорунда (Skylake) пайда болгон жана колдонуучу деңгээлиндеги тиркемелерге жабык эстутум аймактарын - анклавдарды бөлүүгө мүмкүндүк берген бир катар инструкцияларды сунуштайт, алардын мазмуну жада калса мазмунун окууга жана өзгөртүүгө мүмкүн эмес. ядро жана код ring0, SMM жана VMM режимдеринде аткарылат. Регистрлер жана стек менен салттуу секирүү функцияларын жана манипуляцияларды колдонуу менен башкарууну анклавдагы кодго өткөрүп берүү мүмкүн эмес - башкарууну авторизациялык текшерүүлөрдү жүргүзгөн анклавга өткөрүп берүү үчүн атайын түзүлгөн жаңы EENTER, EEXIT жана ERESUME инструкциялары колдонулат. Бул учурда анклавга жайгаштырылган код анклавдын ичиндеги функцияларды чакыруу үчүн классикалык чакыруу ыкмаларын жана тышкы функцияларды чакыруу үчүн атайын нускаманы колдоно алат. Enclave эс шифрлөө DRAM туташуу сыяктуу аппараттык чабуулдардан коргоо үчүн колдонулат.

Анклавда купуя маалыматтарды алуу же кодду аткаруу үчүн Intel SGXке чабуул жасаңыз

Көйгөй SGX технологиясы операциялык системага аппараттык өзгөчөлүктөрдү ыргытуу менен анклавдын аткарылышын үзгүлтүккө учуратууга мүмкүндүк берет жана анклавдар мындай өзгөчөлүктөрдү атомдук түрдө иштетүү үчүн примитивдерди туура ишке ашырбайт. Иштөө тутумунун өзөгүнөн жана кадимки тиркемелерден айырмаланып, анклавдардын ичиндеги код асинхрондук түрдө көтөрүлгөн өзгөчөлүктөр менен иштөө учурунда атомдук аракеттерди уюштуруу үчүн примитивдерге кирүү мүмкүнчүлүгүнө ээ эмес. Көрсөтүлгөн атомдук примитивдерсиз анклавды каалаган убакта үзгүлтүккө учуратууга жана аткарууга кайтарууга болот, атүгүл анклавда критикалык бөлүмдөр аткарылып жатканда жана ал кооптуу абалда (мисалы, CPU регистрлери сакталбаган/калыбына келтирилбеген учурда) .

Анклавда купуя маалыматтарды алуу же кодду аткаруу үчүн Intel SGXке чабуул жасаңыз

Кадимки иштөө үчүн, SGX технологиясы конфигурациялануучу аппараттык өзгөчөлүктөр менен анклавдын аткарылышын үзгүлтүккө учуратууга мүмкүндүк берет. Бул функция анклавдын иштөө убактысына анклав ичиндеги өзгөчөлүктү же сигналды иштетүүнү ишке ашырууга мүмкүндүк берет, бирок ал кайра киргизүү каталарын да киргизиши мүмкүн. SmashEx чабуулу SDKдагы мүчүлүштүктөрдү эксплуатациялоого негизделген, анын кесепетинен өзгөчө кырдаалды иштеткичти кайра чакыруу кырдаалы туура эмес чечилген. Алсыздыкты пайдалануу үчүн чабуулчу анклавдын аткарылышын үзгүлтүккө учуратышы керек, б.а. системалык чөйрөнүн иштешин контролдоо керек.

Өзгөчөлүктү таштагандан кийин, чабуулчу кичинекей убакыт терезесин алат, анын жүрүшүндө киргизүү параметрлерин манипуляциялоо аркылуу аткаруу агымын токтотууга болот. Атап айтканда, эгер сизде системага (анклавдан тышкаркы чөйрө) кирүү мүмкүнчүлүгү болсо, анклавга (EENTER) кирүү инструкциясын аткаргандан кийин дароо жаңы өзгөчөлүктү түзө аласыз, ал стек конфигурациялоо баскычында системага башкарууну кайтарат. Анткени анклав али бүтө элек, анда Бул сан CPU регистрлеринин абалын сактайт.

Андан кийин система башкарууну кайра анклавга кайтара алат, бирок анклав стек үзгүлтүккө учураган учурда конфигурацияланбагандыктан, анклав системалык эстутумда турган стек менен аткарылат, аны Кайтарууга багытталган программалоону (ROP) колдонуу үчүн колдонсо болот. ) техникалар.багытталган программалоо). ROP ыкмасын колдонууда, чабуулчу өзүнүн кодун эстутумга жайгаштырууга аракет кылбайт, бирок жүктөлгөн китепканаларда бар болгон машиналык көрсөтмөлөрдүн бөлүктөрүндө иштейт, башкаруу кайтаруу инструкциясы менен аяктайт (эреже катары, бул китепкананын аягы. функциялары). Эксплуатациянын иштеши керектүү функцияны алуу үчүн окшош блокторго («гаджеттерге») чалуулардын чынжырын курууга туура келет.

Анклавда купуя маалыматтарды алуу же кодду аткаруу үчүн Intel SGXке чабуул жасаңыз
Анклавда купуя маалыматтарды алуу же кодду аткаруу үчүн Intel SGXке чабуул жасаңыз


Source: opennet.ru

Комментарий кошуу