Həssas məlumatları çıxarmaq və ya anklavda kodu icra etmək üçün Intel SGX-ə hücum edin

Xalq Azadlıq Ordusu Müdafiə Elm və Texnologiya Universiteti, Sinqapur Milli Universiteti və ETH Sürixdən olan tədqiqatçılar Intel SGX (Software Guard eExtensions) təcrid olunmuş anklavlara hücum etmək üçün yeni üsul hazırlayıblar. Hücum SmashEx adlanır və Intel SGX üçün iş vaxtı komponentlərinin işləməsi zamanı istisna vəziyyətləri idarə edərkən yenidən girişlə bağlı problemlər səbəb olur. Təklif olunan hücum metodu, əgər əməliyyat sistemi üzərində nəzarətiniz varsa, anklavda yerləşən məxfi məlumatları müəyyən etməyə və ya kodunuzun anklavın yaddaşına surətinin çıxarılmasını və onun icrasını təşkil etməyə imkan verir.

İstismar prototipləri Intel SGX SDK (CVE-2021-0186) və Microsoft Open Enclave (CVE-2021-33767) əsasında icra müddəti olan anklavlar üçün hazırlanmışdır. Birinci halda HTTPS üçün veb-serverdə istifadə edilən RSA açarını çıxarmaq imkanı nümayiş etdirilib, ikincidə isə anklav daxilində işləyən cURL yardım proqramının əldə etdiyi məzmunu müəyyən etmək mümkün olub. Zəiflik artıq proqramlı şəkildə Intel SGX SDK 2.13 və Open Enclave 0.17.1 buraxılışlarında həll edilib. Intel SGX SDK və Microsoft Open Enclave ilə yanaşı, zəiflik Google Asylo SDK, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX və Veracruz-da da görünür.

Xatırladaq ki, SGX (Software Guard Extensions) texnologiyası altıncı nəsil Intel Core prosessorlarında (Skylake) peyda olub və istifadəçi səviyyəli proqramlara qapalı yaddaş sahələrini - məzmununu oxumaq mümkün olmayan anklavları ayırmağa imkan verən bir sıra təlimatlar təklif edir. hətta nüvə və ring0, SMM və VMM rejimlərində icra edilən kod tərəfindən dəyişdirilir. Ənənəvi keçid funksiyalarından və registrlər və steklə manipulyasiyalardan istifadə etməklə idarəetməni anklavda koda ötürmək mümkün deyil - idarənin səlahiyyət yoxlamalarını həyata keçirən anklavlara ötürülməsi üçün xüsusi yaradılmış yeni EENTER, EEXIT və ERESUME təlimatlarından istifadə olunur. Bu halda, anklavda yerləşdirilən kod anklav daxilindəki funksiyalara daxil olmaq üçün klassik çağırış metodlarından və xarici funksiyaları çağırmaq üçün xüsusi təlimatlardan istifadə edə bilər. Anklav yaddaş şifrələməsi DRAM moduluna qoşulma kimi hardware hücumlarından qorunmaq üçün istifadə olunur.

Həssas məlumatları çıxarmaq və ya anklavda kodu icra etmək üçün Intel SGX-ə hücum edin

Problem ondadır ki, SGX texnologiyası əməliyyat sisteminə hardware istisnası atmaqla anklavı ləğv etməyə imkan verir və anklavlar belə istisnaları atomik şəkildə idarə etmək üçün primitivləri düzgün tətbiq etmir. Əməliyyat sisteminin nüvəsindən və adi proqramlardan fərqli olaraq, anklavlar daxilindəki kodun asinxron atılan istisnaları idarə edərkən atomik hərəkətləri təşkil etmək üçün primitivlərə çıxışı yoxdur. Göstərilən atom primitivləri olmadan, anklav istənilən vaxt kəsilə və icraya qaytarıla bilər, hətta anklavın kritik bölmələri yerinə yetirdiyi və təhlükəli vəziyyətdə olduğu vaxtlarda (məsələn, CPU registrləri saxlanmadıqda/bərpa edilmədikdə).

Həssas məlumatları çıxarmaq və ya anklavda kodu icra etmək üçün Intel SGX-ə hücum edin

Normal işləmə üçün SGX texnologiyası konfiqurasiya edilə bilən hardware istisnaları ilə anklavın icrasını dayandırmağa imkan verir. Bu xüsusiyyət anklav işləmə mühitlərinə anklavdaxili istisnaların idarə edilməsini və ya siqnal emalını həyata keçirməyə imkan verir, lakin o, həmçinin reentrant xətalarına səbəb ola bilər. SmashEx hücumu SDK-da qüsurların istismarına əsaslanır, buna görə də istisna işləyicisinin yenidən çağırılması vəziyyəti düzgün idarə olunmur. Zəiflikdən istifadə etmək üçün təcavüzkarın anklavın icrasını dayandıra bilməsi vacibdir, yəni. sistem mühitinin işinə nəzarət etməlidir.

İstisna atdıqdan sonra təcavüzkar kiçik bir zaman pəncərəsi alır ki, bu müddət ərzində giriş parametrləri ilə manipulyasiya yolu ilə icra ipi tutula bilər. Xüsusilə, sistemə çıxışınız varsa (anklavdan kənar mühit), siz anklav daxil olma təlimatını (EENTER) yerinə yetirdikdən dərhal sonra yeni istisna yarada bilərsiniz ki, bu da sistem üçün yığının qurulması mərhələsində nəzarəti sistemə qaytaracaq. CPU registrlərinin vəziyyəti də saxlandığı anklav hələ tamamlanmayıb.

Sistem daha sonra nəzarəti anklava qaytara bilər, lakin fasilə zamanı anklavın yığını konfiqurasiya edilmədiyi üçün anklav sistem yaddaşında yerləşən yığınla icra olunacaq və bu, geriyə yönümlü proqramlaşdırmadan (ROP) istifadə etmək üçün istifadə edilə bilər. ) istismar üsulları.Yönümlü Proqramlaşdırma). ROP texnikasından istifadə edərkən, təcavüzkar kodunu yaddaşa yerləşdirməyə çalışmır, lakin yüklənmiş kitabxanalarda artıq mövcud olan maşın təlimatlarının hissələri üzərində işləyir və nəzarət qaytarma təlimatı ilə bitir (bir qayda olaraq, bunlar kitabxana funksiyalarının sonlarıdır). . İstismarın işi istənilən funksionallığı əldə etmək üçün oxşar bloklara (“qadcetlər”) zənglər zəncirinin qurulmasına düşür.

Həssas məlumatları çıxarmaq və ya anklavda kodu icra etmək üçün Intel SGX-ə hücum edin
Həssas məlumatları çıxarmaq və ya anklavda kodu icra etmək üçün Intel SGX-ə hücum edin


Mənbə: opennet.ru

Добавить комментарий