LVI adalah kelas serangan baru terhadap mekanisme eksekusi spekulatif di CPU

Diterbitkan informasi tentang kelas serangan baru LVI (Injeksi Nilai Beban, CVE-2020-0551) pada mekanisme eksekusi spekulatif di CPU Intel, yang dapat digunakan untuk membocorkan kunci dan data rahasia dari enklave Intel SGX dan proses lainnya.

Kelas serangan baru didasarkan pada manipulasi struktur mikroarsitektur yang sama dengan yang digunakan dalam serangan MDS (Pengambilan Sampel Data Mikroarsitektur), Spectre dan Meltdown. Pada saat yang sama, serangan baru tidak diblokir oleh metode perlindungan yang ada terhadap Meltdown, Spectre, MDS dan serangan serupa lainnya. Perlindungan LVI yang efektif memerlukan perubahan perangkat keras pada CPU. Saat mengatur perlindungan secara terprogram, dengan menambahkan instruksi LFENCE oleh kompiler setelah setiap operasi pemuatan dari memori dan mengganti instruksi RET dengan POP, LFENCE dan JMP, terlalu banyak overhead yang dicatat - menurut peneliti, perlindungan perangkat lunak yang lengkap akan menyebabkan penurunan kinerja sebanyak 2-19 kali.

Sebagian dari kesulitan dalam memblokir masalah diimbangi oleh fakta bahwa serangan tersebut saat ini lebih bersifat teoretis daripada praktis (serangan tersebut secara teori mungkin terjadi, tetapi sangat sulit untuk diterapkan dan hanya dapat direproduksi dalam pengujian sintetik).
Intel disesuaikan masalahnya memiliki tingkat bahaya sedang (5.6 dari 10) dan dirilis memperbarui firmware dan SDK untuk lingkungan SGX, yang mencoba memblokir serangan menggunakan solusi. Metode serangan yang diusulkan saat ini hanya berlaku untuk prosesor Intel, namun kemungkinan mengadaptasi LVI untuk prosesor lain yang menerapkan serangan kelas Meltdown tidak dapat dikesampingkan.

Masalahnya diidentifikasi pada bulan April lalu oleh peneliti Jo Van Bulck dari Universitas Leuven, setelah itu, dengan partisipasi 9 peneliti dari universitas lain, lima metode serangan dasar dikembangkan, yang masing-masing memungkinkan adanya metode serangan yang lebih spesifik. Pilihan. Secara independen, pada bulan Februari tahun ini, peneliti dari Bitdefender juga ditemukan salah satu varian serangan LVI dan melaporkannya ke Intel. Varian serangan dibedakan berdasarkan penggunaan struktur mikroarsitektur yang berbeda, seperti buffer penyimpanan (SB, Store Buffer), buffer pengisian (LFB, Line Fill Buffer), buffer sakelar konteks FPU, dan cache tingkat pertama (L1D), yang sebelumnya digunakan dalam serangan seperti ZombieLoad, RIDL, Fallout, MalasFP, Pertanda ΠΈ Meltdown.

LVI adalah kelas serangan baru terhadap mekanisme eksekusi spekulatif di CPU

Utama kehormatan LVI terhadap serangan MDS adalah MDS memanipulasi penentuan isi struktur mikroarsitektur yang tersisa di cache setelah penanganan kesalahan spekulatif atau operasi pemuatan dan penyimpanan, sementara
Serangan LVI memungkinkan data penyerang dimasukkan ke dalam struktur mikroarsitektur untuk mempengaruhi eksekusi spekulatif kode korban selanjutnya. Dengan menggunakan manipulasi ini, penyerang dapat mengekstrak konten struktur data pribadi di proses lain saat mengeksekusi kode tertentu pada inti CPU target.

LVI adalah kelas serangan baru terhadap mekanisme eksekusi spekulatif di CPU

Untuk masalah eksploitasi dalam kode proses korban harus bertemu urutan kode khusus (gadget) yang memuat nilai yang dikontrol penyerang, dan memuat nilai ini menyebabkan pengecualian (kesalahan, pembatalan, atau bantuan) dilempar, membuang hasilnya, dan menjalankan kembali instruksi. Saat pengecualian diproses, jendela spekulatif muncul di mana data yang diproses di gadget bocor. Secara khusus, prosesor mulai mengeksekusi sepotong kode (gadget) dalam mode spekulatif, kemudian menentukan bahwa prediksi tersebut tidak dibenarkan dan mengembalikan operasi ke keadaan semula, namun data yang diproses selama eksekusi spekulatif disimpan dalam cache L1D dan buffer mikroarsitektur dan tersedia untuk diambil darinya menggunakan metode yang diketahui untuk menentukan data sisa melalui saluran pihak ketiga.

Pengecualian "bantuan", tidak seperti pengecualian "kesalahan", ditangani secara internal oleh prosesor tanpa memanggil penangan perangkat lunak. Bantuan dapat terjadi, misalnya, ketika bit A (Terakses) atau D (Kotor) pada tabel halaman memori perlu diperbarui. Kesulitan utama dalam melakukan serangan terhadap proses lain adalah bagaimana menginisiasi terjadinya assist dengan memanipulasi proses korban. Saat ini tidak ada cara yang dapat diandalkan untuk melakukan hal ini, namun mungkin saja cara tersebut akan ditemukan di masa mendatang. Kemungkinan melakukan serangan sejauh ini telah dikonfirmasi hanya untuk enklave Intel SGX, skenario lain bersifat teoretis atau dapat direproduksi dalam kondisi sintetis (memerlukan penambahan gadget tertentu ke dalam kode)

LVI adalah kelas serangan baru terhadap mekanisme eksekusi spekulatif di CPU

LVI adalah kelas serangan baru terhadap mekanisme eksekusi spekulatif di CPU

Kemungkinan vektor serangan:

  • Kebocoran data dari struktur kernel ke proses tingkat pengguna. Perlindungan kernel Linux terhadap serangan Spectre 1, serta mekanisme perlindungan SMAP (Supervisor Mode Access Prevention), secara signifikan mengurangi kemungkinan serangan LVI. Menambahkan perlindungan tambahan ke kernel mungkin diperlukan jika metode serangan LVI yang lebih sederhana teridentifikasi di masa depan.
  • Kebocoran data antar proses yang berbeda. Serangan tersebut memerlukan kehadiran potongan kode tertentu dalam aplikasi dan definisi metode untuk melemparkan pengecualian dalam proses target.
  • Kebocoran data dari lingkungan host ke sistem tamu. Serangan tersebut tergolong terlalu kompleks sehingga memerlukan berbagai langkah dan prediksi aktivitas dalam sistem yang sulit diterapkan.
  • Kebocoran data antar proses di sistem tamu yang berbeda. Vektor serangan hampir mengatur kebocoran data antara proses yang berbeda, tetapi juga memerlukan manipulasi kompleks untuk melewati isolasi antar sistem tamu.

Diterbitkan oleh peneliti beberapa prototipe dengan peragaan prinsip-prinsip melakukan penyerangan, namun belum sesuai untuk melakukan serangan yang sebenarnya. Contoh pertama memungkinkan Anda untuk mengarahkan ulang eksekusi kode spekulatif dalam proses korban, mirip dengan pemrograman berorientasi kembali (ROP, Pemrograman Berorientasi Kembali). Dalam contoh ini, korbannya adalah proses yang disiapkan secara khusus yang berisi gadget yang diperlukan (sulit untuk menerapkan serangan ke proses pihak ketiga yang sebenarnya). Contoh kedua memungkinkan kita untuk mengganggu penghitungan selama enkripsi AES di dalam enklave Intel SGX dan mengatur kebocoran data selama eksekusi instruksi spekulatif untuk memulihkan nilai kunci yang digunakan untuk enkripsi.


Sumber: opennet.ru

Tambah komentar