Kerentanan dalam mekanisme eksekusi spekulatif prosesor AMD

Proyek Grsecurity telah menerbitkan rincian dan demonstrasi metode serangan untuk kerentanan baru (CVE-2021-26341) pada prosesor AMD terkait dengan eksekusi instruksi spekulatif setelah operasi penerusan tanpa syarat. Jika serangan berhasil, kerentanan memungkinkan isi area memori yang berubah-ubah dapat ditentukan. Misalnya, para peneliti telah menyiapkan eksploitasi yang memungkinkan mereka menentukan tata letak alamat dan melewati mekanisme perlindungan KASLR (kernel memory randomization) dengan mengeksekusi kode yang tidak memiliki hak istimewa di subsistem kernel ePBF. Skenario serangan lain tidak dapat dikesampingkan yang dapat menyebabkan kebocoran isi memori kernel.

Kerentanan memungkinkan Anda untuk menciptakan kondisi di mana prosesor, selama eksekusi preemptif, secara spekulatif memproses instruksi segera setelah instruksi lompat dalam memori (SLS, Spekulasi Garis Lurus). Selain itu, pengoptimalan tersebut tidak hanya berfungsi untuk operator lompat bersyarat, tetapi juga untuk instruksi yang menyiratkan lompat langsung tanpa syarat, seperti JMP, RET, dan CALL. Mengikuti instruksi lompatan tanpa syarat, data arbitrer yang tidak dimaksudkan untuk dieksekusi dapat ditempatkan. Setelah menentukan bahwa suatu cabang tidak melibatkan eksekusi instruksi berikutnya, prosesor hanya memutar kembali keadaan dan mengabaikan eksekusi spekulatif, namun jejak eksekusi instruksi tetap dalam cache bersama dan tersedia untuk analisis menggunakan teknik pengambilan saluran samping.

Seperti halnya eksploitasi kerentanan Spectre-v1, serangan tersebut memerlukan adanya rangkaian instruksi (gadget) tertentu di kernel yang mengarah pada eksekusi spekulatif. Memblokir kerentanan dalam hal ini berarti mengidentifikasi gadget tersebut dalam kode dan menambahkan instruksi tambahan yang memblokir eksekusi spekulatif. Kondisi untuk eksekusi spekulatif juga dapat diciptakan oleh program tanpa hak istimewa yang berjalan di mesin virtual eBPF. Untuk memblokir kemampuan membuat gadget menggunakan eBPF, disarankan untuk menonaktifkan akses tanpa hak istimewa ke eBPF di sistem (β€œsysctl -w kernel.unprivileged_bpf_disabled=1”).

Kerentanan mempengaruhi prosesor berdasarkan mikroarsitektur Zen1 dan Zen2, termasuk prosesor AMD EPYC dan AMD Ryzen Threadripper generasi pertama dan kedua, serta AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon X, AMD Ryzen Threadripper Prosesor seri PRO dan APU A. Untuk memblokir eksekusi instruksi spekulatif, disarankan untuk memanggil instruksi INT3 atau LFENCE setelah operasi cabang (RET, JMP, CALL).

Sumber: opennet.ru

Tambah komentar