Serang Intel SGX untuk mengekstrak data sensitif atau melaksanakan kod dalam enklaf

Penyelidik dari Universiti Sains dan Teknologi Pertahanan Tentera Pembebasan Rakyat, Universiti Nasional Singapura dan ETH Zurich telah membangunkan kaedah baharu untuk menyerang enklaf terpencil Intel SGX (Software Guard eXtensions). Serangan itu dipanggil SmashEx dan disebabkan oleh masalah kemasukan semula apabila mengendalikan situasi pengecualian semasa operasi komponen masa jalan untuk Intel SGX. Kaedah serangan yang dicadangkan membolehkan, jika anda mempunyai kawalan ke atas sistem pengendalian, untuk menentukan data sulit yang terletak di dalam enklaf, atau untuk mengatur penyalinan kod anda ke dalam memori enklaf dan pelaksanaannya.

Prototaip eksploitasi telah disediakan untuk enklaf dengan masa jalan berdasarkan Intel SGX SDK (CVE-2021-0186) dan Microsoft Open Enclave (CVE-2021-33767). Dalam kes pertama, keupayaan untuk mengekstrak kunci RSA yang digunakan pada pelayan web untuk HTTPS telah ditunjukkan, dan dalam kes kedua, adalah mungkin untuk menentukan kandungan yang diperolehi oleh utiliti cURL yang berjalan di dalam enklaf. Kerentanan telah ditangani secara pemrograman dalam keluaran Intel SGX SDK 2.13 dan Open Enclave 0.17.1. Selain Intel SGX SDK dan Microsoft Open Enclave, kerentanan juga muncul dalam Google Asylo SDK, EdgelessRT, Apache Teaclave, Rust SGX SDK, SGX-LKL, CoSMIX dan Veracruz.

Mari kita ingat bahawa teknologi SGX (Software Guard Extensions) muncul dalam pemproses Intel Core generasi keenam (Skylake) dan menawarkan satu siri arahan yang membolehkan aplikasi peringkat pengguna memperuntukkan kawasan memori tertutup - enklaf, yang kandungannya tidak boleh dibaca dan diubah suai walaupun oleh kernel dan kod yang dilaksanakan dalam mod ring0, SMM dan VMM. Adalah mustahil untuk memindahkan kawalan ke kod dalam enklaf menggunakan fungsi lompat tradisional dan manipulasi dengan daftar dan timbunan - arahan baharu yang dicipta khas EENTER, EEXIT dan ERESUME digunakan untuk memindahkan kawalan ke enklaf, yang melakukan semakan kuasa. Dalam kes ini, kod yang diletakkan di dalam enklaf boleh menggunakan kaedah panggilan klasik untuk mengakses fungsi di dalam enklaf dan arahan khas untuk memanggil fungsi luaran. Penyulitan memori enklaf digunakan untuk melindungi daripada serangan perkakasan seperti menyambung ke modul DRAM.

Serang Intel SGX untuk mengekstrak data sensitif atau melaksanakan kod dalam enklaf

Masalahnya ialah teknologi SGX membenarkan sistem pengendalian untuk membatalkan enklaf dengan membuang pengecualian perkakasan, dan enklaf tidak melaksanakan primitif dengan betul untuk mengendalikan pengecualian tersebut secara atom. Tidak seperti kernel sistem pengendalian dan aplikasi biasa, kod di dalam enklaf tidak mempunyai akses kepada primitif untuk mengatur tindakan atom apabila mengendalikan pengecualian yang dilemparkan secara tak segerak. Tanpa primitif atom yang ditentukan, enklaf boleh diganggu pada bila-bila masa dan dikembalikan kepada pelaksanaan, walaupun pada masa apabila enklaf sedang melaksanakan bahagian kritikal dan berada dalam keadaan tidak selamat (contohnya, apabila daftar CPU tidak disimpan/dipulihkan).

Serang Intel SGX untuk mengekstrak data sensitif atau melaksanakan kod dalam enklaf

Untuk operasi biasa, teknologi SGX membenarkan pelaksanaan enklaf diganggu oleh pengecualian perkakasan yang boleh dikonfigurasikan. Ciri ini membenarkan persekitaran masa jalan enklaf melaksanakan pengendalian pengecualian intra-enklaf atau pemprosesan isyarat, tetapi ia juga boleh menyebabkan ralat masuk semula. Serangan SmashEx adalah berdasarkan mengeksploitasi kelemahan dalam SDK yang menyebabkan situasi memanggil semula pengendali pengecualian tidak dikendalikan dengan betul. Adalah penting untuk mengeksploitasi kelemahan, penyerang mesti dapat mengganggu pelaksanaan enklaf, i.e. mesti mengawal operasi persekitaran sistem.

Selepas melontar pengecualian, penyerang menerima tetingkap masa kecil di mana benang pelaksanaan boleh dipintas melalui manipulasi parameter input. Khususnya, jika anda mempunyai akses kepada sistem (persekitaran di luar enklaf), anda boleh mencipta pengecualian baharu sejurus selepas melaksanakan arahan kemasukan enklaf (EENTER), yang akan mengembalikan kawalan kepada sistem pada peringkat apabila persediaan tindanan untuk enklaf masih belum selesai, di mana keadaan daftar CPU juga disimpan.

Sistem kemudiannya boleh mengembalikan kawalan kembali ke enklaf, tetapi kerana susunan enklaf tidak dikonfigurasikan pada masa gangguan, enklaf akan dilaksanakan dengan tindanan yang berada dalam memori sistem, yang boleh digunakan untuk menggunakan pengaturcaraan berorientasikan pulangan (ROP). ) teknik eksploitasi. Pengaturcaraan Berorientasikan). Apabila menggunakan teknik ROP, penyerang tidak cuba meletakkan kodnya dalam ingatan, tetapi beroperasi pada kepingan arahan mesin yang sudah tersedia dalam perpustakaan yang dimuatkan, berakhir dengan arahan pemulangan kawalan (sebagai peraturan, ini adalah penghujung fungsi perpustakaan) . Kerja eksploitasi datang kepada membina rangkaian panggilan ke blok serupa (β€œalat”) untuk mendapatkan kefungsian yang diingini.

Serang Intel SGX untuk mengekstrak data sensitif atau melaksanakan kod dalam enklaf
Serang Intel SGX untuk mengekstrak data sensitif atau melaksanakan kod dalam enklaf


Sumber: opennet.ru

Tambah komen