Retbleed: Serangan Eksekusi Spekulatif Baru yang Memukul Intel dan AMD

Berita baru-baru ini pecah bahwae sekelompok peneliti dari ETH Zurich telah mengidentifikasi serangan baru ke mekanisme eksekusi spekulatif lompatan tidak langsung di CPU, yang memungkinkan penggalian informasi dari memori kernel atau mengatur serangan pada sistem host dari mesin virtual.

Kerentanannya diberi nama kode Retbleed (sudah dikatalogkan di bawah CVE-2022-29900, CVE-2022-29901) dan sifatnya mirip dengan serangan Spectre-v2.

Perbedaannya bermuara pada pengorganisasian eksekusi spekulatif kode arbitrer dengan memproses instruksi "ret" (kembali), yang mengambil alamat untuk melompat dari tumpukan, daripada melompat secara tidak langsung menggunakan instruksi "jmp", memuat alamat dari memori atau sebuah register CPU.

Tentang serangan baru disebutkan bahwa penyerang dapat membuat kondisi untuk prediksi fork salah dan mengatur lompatan spekulatif yang disengaja ke blok kode yang tidak dimaksudkan oleh logika eksekusi program.

Pada akhirnya, prosesor akan menentukan bahwa prediksi cabang tidak dibenarkan dan akan memutar kembali operasi ke keadaan aslinya, tapi data yang diproses Selama eksekusi spekulatif mereka akan duduk di cache dan buffer mikroarsitektur. Jika blok yang dieksekusi secara salah melakukan akses memori, maka eksekusi spekulatifnya akan mengarah ke instalasi di cache umum dan pembacaan data dari memori.

Untuk menentukan data yang tersisa di cache setelah eksekusi operasi spekulatif, penyerang dapat menggunakan metode untuk menentukan data residual melalui saluran pihak ketiga, misalnya, menganalisis perubahan waktu akses data yang di-cache dan tidak di-cache.

Untuk ekstraksi informasi yang disengaja dari area pada tingkat hak istimewa yang berbeda (misalnya, dari memori kernel), "perangkat" digunakan: skrip yang ada di kernel, cocok untuk pembacaan spekulatif data dari memori, tergantung pada kondisi eksternal yang dapat dipengaruhi oleh seorang penyerang.

Untuk melindungi dari serangan kelas Spectre klasik, yang menggunakan instruksi cabang tidak langsung dan bersyarat, sebagian besar sistem operasi menggunakan teknik "retpoline", yang didasarkan pada penggantian operasi cabang tidak langsung dengan instruksi "ret", yang memerlukan prediksi status tumpukan terpisah unit digunakan dalam prosesor, tidak menggunakan blok prediksi cabang.

Pada pengenalan retpoline pada tahun 2018, manipulasi alamat seperti Spectre diyakini tidak praktis untuk forking spekulatif dengan instruksi "ret".

Para peneliti yang mengembangkan metode serangan Retbleed menunjukkan kemungkinan menciptakan kondisi mikroarsitektur untuk memulai transisi spekulatif menggunakan instruksi "ret" dan merilis toolkit siap pakai untuk mengidentifikasi urutan instruksi (gadget) yang sesuai untuk mengeksploitasi kerentanan di kernel Linux di mana kondisi seperti itu muncul.

Selama studi, eksploitasi kerja telah disiapkan yang memungkinkan, pada sistem dengan CPU Intel, dari proses yang tidak memiliki hak istimewa di ruang pengguna untuk mengekstrak data arbitrer dari memori kernel dengan kecepatan 219 byte per detik dan dengan akurasi 98%.

En prosesor AMD, efisiensi exploitnya jauh lebih tinggi, karena tingkat kebocorannya adalah 3,9 KB per detik. Sebagai contoh praktis, ditunjukkan bagaimana menggunakan exploit yang diusulkan untuk menentukan isi dari file /etc/shadow. Pada sistem dengan CPU Intel, serangan untuk menentukan hash kata sandi root dilakukan dalam 28 menit, dan pada sistem dengan CPU AMD, dalam 6 menit.

Serangan itu dikonfirmasi untuk 6-8 generasi prosesor Intel yang dirilis sebelum Q2019 1 (termasuk Skylake), dan prosesor AMD berdasarkan arsitektur mikro Zen 1, Zen 2+, dan Zen 2021 yang dirilis sebelum QXNUMX XNUMX. Pada model prosesor yang lebih baru, seperti AMD Zen3 dan Intel Alder Lake, serta prosesor ARM, masalahnya diblokir oleh mekanisme perlindungan yang ada. Misalnya, penggunaan instruksi IBRS (Spekulasi Terbatas Cabang Tidak Langsung) membantu melindungi dari serangan.

Menyiapkan satu set perubahan untuk kernel Linux dan hypervisor Xen, yang memblokir masalah secara terprogram pada CPU yang lebih lama. Patch kernel Linux yang diusulkan mengubah 68 file, menambahkan 1783 baris, dan menghapus 387 baris.

Sayangnya, perlindungan menimbulkan biaya overhead yang signifikan: dalam teks yang dibuat pada prosesor AMD dan Intel, penurunan kinerja diperkirakan antara 14% dan 39%. Lebih disukai menggunakan proteksi berdasarkan instruksi IBRS, tersedia di generasi CPU Intel yang lebih baru dan didukung sejak kernel Linux 4.19.

Terakhir, jika Anda tertarik untuk mengetahuinya lebih lanjut, Anda dapat berkonsultasi dengan detailnya di tautan berikut.


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Bertanggung jawab atas data: AB Internet Networks 2008 SL
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.