Maxfiy ma'lumotlarni olish yoki anklavda kodni bajarish uchun Intel SGX-ga hujum qiling

Xalq Ozodlik Armiyasi Mudofaa fan va texnologiya universiteti, Singapur Milliy universiteti va ETH Tsyurix tadqiqotchilari Intel SGX (Software Guard eXtensions) izolyatsiyalangan anklavlariga hujum qilishning yangi usulini ishlab chiqdilar. Hujum SmashEx deb ataladi va Intel SGX uchun ish vaqti komponentlarining ishlashi paytida istisno holatlarini ko'rib chiqishda qayta kirish bilan bog'liq muammolar tufayli yuzaga keladi. Taklif etilgan hujum usuli, agar sizda operatsion tizim ustidan nazorat mavjud bo'lsa, anklavda joylashgan maxfiy ma'lumotlarni aniqlash yoki kodingizni anklav xotirasiga nusxalash va uning bajarilishini tashkil qilish imkonini beradi.

Intel SGX SDK (CVE-2021-0186) va Microsoft Open Enclave (CVE-2021-33767) asosida ish vaqtiga ega anklavlar uchun ekspluatatsiya prototiplari tayyorlangan. Birinchi holda, HTTPS uchun veb-serverda ishlatiladigan RSA kalitini chiqarib olish qobiliyati namoyish etildi, ikkinchidan, anklav ichida ishlaydigan cURL yordam dasturi tomonidan olingan tarkibni aniqlash mumkin edi. Zaiflik allaqachon Intel SGX SDK 2.13 va Open Enclave 0.17.1 relizlarida dasturiy jihatdan hal qilingan. Intel SGX SDK va Microsoft Open Enclave’dan tashqari zaiflik Google Asylo SDK, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX va Veracruz’da ham paydo bo‘ladi.

Eslatib o'tamiz, SGX (Software Guard Extensions) texnologiyasi oltinchi avlod Intel Core protsessorlarida (Skylake) paydo bo'lgan va foydalanuvchi darajasidagi ilovalarga yopiq xotira maydonlarini - mazmunini o'qib bo'lmaydigan anklavlarni ajratish imkonini beruvchi bir qator ko'rsatmalarni taklif qiladi. ring0, SMM va VMM rejimlarida bajarilgan yadro va kod tomonidan ham o'zgartirilgan. Anklavdagi kodga boshqaruvni an'anaviy o'tish funktsiyalari va registrlar va stek bilan manipulyatsiya yordamida o'tkazish mumkin emas - boshqaruvni anklavga o'tkazish uchun maxsus yaratilgan yangi EENTER, EEXIT va ERESUME ko'rsatmalari qo'llaniladi, ular vakolatlarni tekshirishni amalga oshiradilar. Bunday holda, anklavga joylashtirilgan kod anklav ichidagi funktsiyalarga kirish uchun klassik chaqiruv usullaridan va tashqi funksiyalarni chaqirish uchun maxsus ko'rsatmalardan foydalanishi mumkin. Anklav xotira shifrlash DRAM moduliga ulanish kabi apparat hujumlaridan himoya qilish uchun ishlatiladi.

Maxfiy ma'lumotlarni olish yoki anklavda kodni bajarish uchun Intel SGX-ga hujum qiling

Muammo shundaki, SGX texnologiyasi operatsion tizimga apparat istisnosini tashlash orqali anklavni bekor qilishga imkon beradi va anklavlar bunday istisnolarni atomik tarzda qayta ishlash uchun primitivlarni to'g'ri amalga oshirmaydi. Operatsion tizim yadrosi va oddiy ilovalardan farqli o'laroq, anklavlar ichidagi kod asinxron ravishda tashlangan istisnolarni ko'rib chiqishda atom harakatlarini tashkil qilish uchun ibtidoiy elementlarga kirish huquqiga ega emas. Belgilangan atomik ibtidoiylarsiz anklav istalgan vaqtda uzilishi va ijroga qaytishi mumkin, hatto anklav muhim bo'limlarni bajarayotgan va xavfli holatda bo'lgan paytlarda ham (masalan, protsessor registrlari saqlanmagan/tiklanmagan bo'lsa).

Maxfiy ma'lumotlarni olish yoki anklavda kodni bajarish uchun Intel SGX-ga hujum qiling

Oddiy ishlash uchun SGX texnologiyasi konfiguratsiya qilinadigan apparat istisnolari bilan anklavning bajarilishini to'xtatishga imkon beradi. Bu xususiyat anklav ish vaqti muhitlariga anklav ichidagi istisnolardan foydalanish yoki signalni qayta ishlashni amalga oshirish imkonini beradi, lekin u qayta kirish xatolariga ham olib kelishi mumkin. SmashEx hujumi SDK-dagi kamchiliklardan foydalanishga asoslangan, buning natijasida istisno ishlov beruvchisini qayta chaqirish holati to'g'ri bajarilmaydi. Zaiflikdan foydalanish uchun tajovuzkor anklavning bajarilishini to'xtata olishi kerak, ya'ni. tizim muhitining ishlashini nazorat qilishi kerak.

Istisno qo'ygandan so'ng, tajovuzkor kichik vaqt oynasini oladi, uning davomida kirish parametrlarini manipulyatsiya qilish orqali bajarilish chizig'ini ushlab turish mumkin. Xususan, agar siz tizimga (anklavdan tashqaridagi muhit) kirish imkoniga ega bo'lsangiz, anklavga kirish yo'riqnomasini (EENTER) bajarganingizdan so'ng darhol yangi istisno yaratishingiz mumkin, bu esa stekni sozlash bosqichida tizimga boshqaruvni qaytaradi. anklav hali tugallanmagan, unda CPU registrlarining holati ham saqlanadi.

Keyin tizim boshqaruvni anklavga qaytarishi mumkin, lekin uzilish vaqtida anklav stegi sozlanmaganligi sababli, anklav tizim xotirasida joylashgan stek bilan ishlaydi, undan qaytishga yo'naltirilgan dasturlashni (ROP) ishlatish uchun foydalanish mumkin. ) ekspluatatsiya texnikasi.Yo'naltirilgan dasturlash). ROP texnikasidan foydalanganda, tajovuzkor o'z kodini xotiraga joylashtirishga urinmaydi, lekin yuklangan kutubxonalarda allaqachon mavjud bo'lgan mashina ko'rsatmalari bo'laklarida ishlaydi, bu boshqaruvni qaytarish ko'rsatmasi bilan tugaydi (qoida tariqasida, bu kutubxona funktsiyalarining oxiri). . Ekspluatatsiya ishi kerakli funksionallikni olish uchun o'xshash bloklarga ("gadjetlar") qo'ng'iroqlar zanjirini yaratishga to'g'ri keladi.

Maxfiy ma'lumotlarni olish yoki anklavda kodni bajarish uchun Intel SGX-ga hujum qiling
Maxfiy ma'lumotlarni olish yoki anklavda kodni bajarish uchun Intel SGX-ga hujum qiling


Manba: opennet.ru

a Izoh qo'shish