Атака на Intel SGX, якая дазваляе атрымаць канфідэнцыйныя дадзеныя ці выканаць код у анклаве

Даследнікі з Абароннага навукова-тэхнічнага ўніверсітэта Народна-вызваленчай арміі Кітая, Нацыянальнага ўніверсітэта Сінгапура і Швейцарскай вышэйшай тэхнічнай школы Цюрыха распрацавалі новы метад нападу на ізаляваныя анклавы Intel SGX (Software Guard eXtensions). Атака атрымала назву SmashEx і выклікана праблемамі з реентерабельностью пры апрацоўцы выключных сітуацый у працэсе працы runtime-кампанентаў для Intel SGX. Прапанаваны метад нападу дае магчымасць пры наяўнасці кантролю за аперацыйнай сістэмай вызначыць канфідэнцыйныя дадзеныя, размешчаныя ў анклаве, або арганізаваць капіраванне свайго кода ў памяць анклава і яго выкананне.

Прататыпы эксплоітаў падрыхтаваны для анклаваў з runtime на базе Intel SGX SDK (CVE-2021-0186) і Microsoft Open Enclave (CVE-2021-33767). У першым выпадку прадэманстравана магчымасць вымання RSA-ключа, які ўжываецца на web-серверы для HTTPS, а ў другім атрымалася вызначыць змесціва, атрыманай утылітай cURL, запушчанай усярэдзіне анклава. Уразлівасць ужо ўхіленая праграмным шляхам у выпусках Intel SGX SDK 2.13 і Open Enclave 0.17.1. Акрамя пакетаў Intel SGX SDK і Microsoft Open Enclave уразлівасць таксама выяўляецца ў SDK Google Asylo, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX і Veracruz.

Нагадаем, што тэхналогія SGX (Software Guard Extensions) з'явілася ў працэсарах Intel Core шостага пакалення (Skylake) і прапануе серыю інструкцый, якія дазваляюць вылучаць прыкладанням карыстацкага ўзроўня зачыненыя вобласці памяці – анклавы, змесціва якіх не можа быць прачытана і зменена нават ядром і кодам, выконваем у рэжымах ring0, SMM і VMM. Перадаць кіраванне коду ў анклаве немагчыма традыцыйнымі функцыямі пераходу і маніпуляцыямі з рэгістрамі і стэкам - для перадачы кіравання ў анклав прымяняюцца спецыяльна створаныя новыя інструкцыі EENTER, EEXIT і ERESUME, якія выконваюць праверку паўнамоцтваў. Пры гэтым змешчаны ў анклаў код можа ўжываць класічныя метады выкліку для звароту да функцый усярэдзіне анклава і адмысловую інструкцыю для выкліку вонкавых функцый. Для абароны ад апаратных нападаў, такіх як падлучэнне да модуля DRAM, ужываецца шыфраванне памяці анклава.

Атака на Intel SGX, якая дазваляе атрымаць канфідэнцыйныя дадзеныя ці выканаць код у анклаве

Праблема звязана з тым, што тэхналогія SGX дазваляе аперацыйнай сістэме перапыніць выкананне анклава пры дапамозе генерацыі апаратнага выключэння, а ў анклавах належным чынам не рэалізуюцца прымітывы для атамарнай апрацоўкі падобных выключэнняў. У адрозненне ад ядра аперацыйнай сістэмы і звычайных прыкладанняў, код усярэдзіне анклаваў не мае доступ да прымітываў для арганізацыі атамарных дзеянняў падчас апрацоўкі асінхронна якія ўзнікаюць выключэнняў. Без паказаных атамарных прымітываў анклаў можа быць у любы час перапынены і вернуты да выканання, нават у моманты калі ў анклаве выконваюцца крытычныя секцыі і ён знаходзіцца ў небяспечным стане (напрыклад, калі не захаваны/адноўлены рэгістры CPU).

Атака на Intel SGX, якая дазваляе атрымаць канфідэнцыйныя дадзеныя ці выканаць код у анклаве

Для звычайнага функцыянавання тэхналогія SGX дазваляе перапыніць выкананне анклава наладжвальнымі апаратнымі выключэннямі. Гэтая асаблівасць дазваляе runtime-акружэнням анклаваў, рэалізоўваць апрацоўку ўнутры-анклавных выключэнняў або апрацоўку сігналаў, але і яна-жа можа правакаваць памылкі реентерабельности. Атака SmashEx засноўваецца на эксплуатацыі недапрацовак у SDK з-за якіх належным чынам не апрацоўваецца сітуацыя паўторнага выкліку апрацоўшчыка выключэння. Важна, што для эксплуатацыі ўразлівасці атакавалы павінен мець магчымасць перапыніць выкананне анклава, г.зн. павінен кантраляваць працу сістэмнага асяроддзя.

Пасля генерацыі выключэння атакавалы атрымлівае невялікае часавае акно, на працягу якога можна перахапіць струмень выканання праз маніпуляцыю са ўваходнымі параметрамі. У прыватнасці, пры наяўнасці доступу да сістэмы (акружэнні па-за анклавам) можна стварыць новае выключэнне адразу пасля выканання інструкцыі ўваходу ў анклав (EENTER), што прывядзе да вяртання кіравання сістэме на стадыі, калі яшчэ не завершана налада стэка для анклава, у якім у тым ліку захоўваецца стан рэгістраў CPU.

Сістэма затым можа вярнуць кіраванне зваротна ў анклаў, але бо стэк анклава падчас перапынення не быў наладжаны, анклаў будзе выконвацца са стэкам, змешчаным у памяці сістэмы, што можна выкарыстаць для ўжывання метадаў эксплуатацыі на аснове зваротна-арыентаванага праграмавання (ROP - Return- Oriented Programming). Пры выкарыстанні тэхнікі ROP атакавалы не спрабуе размясціць свой код у памяці, а аперуе ўжо наяўнымі ў загружаных бібліятэках кавалкамі машынных інструкцый, якія завяршаюцца інструкцыяй звароту кіравання (як правіла, гэта канчаткі бібліятэчных функцый). Праца эксплоіта зводзіцца да пабудовы ланцужка выклікаў падобных блокаў ("гаджэтаў") для атрымання патрэбнай функцыянальнасці.

Атака на Intel SGX, якая дазваляе атрымаць канфідэнцыйныя дадзеныя ці выканаць код у анклаве
Атака на Intel SGX, якая дазваляе атрымаць канфідэнцыйныя дадзеныя ці выканаць код у анклаве


Крыніца: opennet.ru

Дадаць каментар