Serang Intel SGX untuk mengekstrak data sensitif atau mengeksekusi kode di enklave

Para peneliti dari Universitas Sains dan Teknologi Pertahanan Tentara Pembebasan Rakyat, Universitas Nasional Singapura dan ETH Zurich telah mengembangkan metode baru untuk menyerang wilayah terisolasi Intel SGX (Software Guard eXtensions). Serangan ini disebut SmashEx dan disebabkan oleh masalah masuk kembali saat menangani situasi pengecualian selama pengoperasian komponen runtime untuk Intel SGX. Metode serangan yang diusulkan memungkinkan, jika Anda memiliki kendali atas sistem operasi, untuk menentukan data rahasia yang terletak di enklave, atau untuk mengatur penyalinan kode Anda ke dalam memori enklave dan eksekusinya.

Prototipe eksploitasi telah disiapkan untuk enclave dengan runtime berdasarkan Intel SGX SDK (CVE-2021-0186) dan Microsoft Open Enclave (CVE-2021-33767). Dalam kasus pertama, kemampuan untuk mengekstrak kunci RSA yang digunakan pada server web untuk HTTPS ditunjukkan, dan dalam kasus kedua, dimungkinkan untuk menentukan konten yang diperoleh oleh utilitas cURL yang berjalan di dalam enclave. Kerentanan telah diatasi secara terprogram dalam rilis Intel SGX SDK 2.13 dan Open Enclave 0.17.1. Selain Intel SGX SDK dan Microsoft Open Enclave, kerentanan juga muncul di Google Asylo SDK, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX dan Veracruz.

Ingatlah bahwa teknologi SGX (Software Guard Extensions) muncul pada prosesor Intel Core generasi keenam (Skylake) dan menawarkan serangkaian instruksi yang memungkinkan aplikasi tingkat pengguna mengalokasikan area memori tertutup - kantong, yang isinya tidak dapat dibaca dan dimodifikasi bahkan oleh kernel dan kode dieksekusi dalam mode ring0, SMM dan VMM. Tidak mungkin untuk mentransfer kontrol ke kode di enklave menggunakan fungsi lompatan tradisional dan manipulasi dengan register dan tumpukan - instruksi baru yang dibuat khusus EENTER, EEXIT dan ERESUME digunakan untuk mentransfer kontrol ke enklave, yang melakukan pemeriksaan otoritas. Dalam hal ini, kode yang ditempatkan di enklave dapat menggunakan metode panggilan klasik untuk mengakses fungsi di dalam enklave dan instruksi khusus untuk memanggil fungsi eksternal. Enkripsi memori enclave digunakan untuk melindungi terhadap serangan perangkat keras seperti menghubungkan ke modul DRAM.

Serang Intel SGX untuk mengekstrak data sensitif atau mengeksekusi kode di enklave

Masalahnya adalah teknologi SGX memungkinkan sistem operasi untuk membatalkan enclave dengan melemparkan pengecualian perangkat keras, dan enclave tidak mengimplementasikan primitif dengan benar untuk menangani pengecualian tersebut secara atom. Berbeda dengan kernel sistem operasi dan aplikasi biasa, kode di dalam enclave tidak memiliki akses ke primitif untuk mengatur tindakan atom saat menangani pengecualian yang dilempar secara asinkron. Tanpa atom primitif yang ditentukan, enklave dapat diinterupsi kapan saja dan dikembalikan ke eksekusi, bahkan pada saat enklave menjalankan bagian penting dan berada dalam kondisi tidak aman (misalnya, ketika register CPU tidak disimpan/dipulihkan).

Serang Intel SGX untuk mengekstrak data sensitif atau mengeksekusi kode di enklave

Untuk pengoperasian normal, teknologi SGX memungkinkan eksekusi enclave terganggu oleh pengecualian perangkat keras yang dapat dikonfigurasi. Fitur ini memungkinkan lingkungan runtime enklave menerapkan penanganan pengecualian intra-enklave atau pemrosesan sinyal, namun juga dapat menyebabkan kesalahan masuk kembali. Serangan SmashEx didasarkan pada eksploitasi kelemahan dalam SDK yang menyebabkan situasi pemanggilan ulang pengendali pengecualian tidak ditangani dengan benar. Penting bahwa untuk mengeksploitasi kerentanan, penyerang harus mampu menghentikan eksekusi enclave, yaitu harus mengontrol pengoperasian lingkungan sistem.

Setelah melemparkan pengecualian, penyerang menerima jendela waktu kecil di mana thread eksekusi dapat dicegat melalui manipulasi parameter input. Khususnya, jika Anda memiliki akses ke sistem (lingkungan di luar enklave), Anda dapat membuat pengecualian baru segera setelah menjalankan instruksi entri enklave (EENTER), yang akan mengembalikan kontrol ke sistem pada tahap ketika pengaturan tumpukan untuk enclave belum selesai, di mana keadaan register CPU juga disimpan.

Sistem kemudian dapat mengembalikan kontrol kembali ke enklave, namun karena tumpukan enklave tidak dikonfigurasi pada saat interupsi, enklave akan mengeksekusi dengan tumpukan yang berada di memori sistem, yang dapat digunakan untuk menggunakan pemrograman berorientasi kembali (ROP ) teknik eksploitasi.Pemrograman Berorientasi). Saat menggunakan teknik ROP, penyerang tidak mencoba menempatkan kodenya di memori, tetapi beroperasi pada bagian instruksi mesin yang sudah tersedia di perpustakaan yang dimuat, diakhiri dengan instruksi pengembalian kontrol (sebagai aturan, ini adalah akhir dari fungsi perpustakaan) . Pekerjaan eksploitasi adalah membangun rantai panggilan ke blok serupa (β€œgadget”) untuk mendapatkan fungsionalitas yang diinginkan.

Serang Intel SGX untuk mengekstrak data sensitif atau mengeksekusi kode di enklave
Serang Intel SGX untuk mengekstrak data sensitif atau mengeksekusi kode di enklave


Sumber: opennet.ru

Tambah komentar