Sekelompok peneliti dari Vrije Universiteit Amsterdam telah menerbitkan toolkit Kasper, yang dirancang untuk mendeteksi kernel. Linux Cuplikan kode yang dapat digunakan untuk mengeksploitasi kerentanan kelas Spectre yang disebabkan oleh eksekusi kode spekulatif pada prosesor. Kode sumber untuk perangkat ini didistribusikan di bawah lisensi Apache 2.0.
Mari kita ingat bahwa untuk melakukan serangan seperti Spectre v1, yang memungkinkan untuk menentukan isi memori, diperlukan adanya kode istimewa dari urutan perintah (gadget) tertentu, yang mengarah ke eksekusi instruksi yang spekulatif. . Untuk tujuan optimasi, prosesor mulai mengeksekusi gadget tersebut dalam mode spekulatif, kemudian menentukan bahwa prediksi cabang tidak dibenarkan dan mengembalikan operasi ke keadaan semula, namun data yang diproses selama eksekusi spekulatif berakhir di cache dan buffer mikroarsitektur dan tersedia untuk diambil dari mereka menggunakan berbagai metode untuk menentukan data sisa melalui saluran pihak ketiga.
Alat yang tersedia sebelumnya untuk memindai gadget untuk mengetahui kerentanan Spectre, berdasarkan pencarian pola umum, menunjukkan tingkat positif palsu yang sangat tinggi, sementara banyak gadget asli hilang (percobaan menunjukkan bahwa 99% gadget yang diidentifikasi oleh alat tersebut tidak dapat digunakan untuk serangan , dan 33% gadget yang berfungsi yang dapat menyebabkan serangan tidak diketahui).
Untuk meningkatkan kualitas identifikasi gadget yang bermasalah, Kasper memodelkan kerentanan yang dapat dieksploitasi oleh penyerang pada setiap langkah dalam melakukan serangan kelas Spectre - masalah yang memungkinkan kontrol data dimodelkan (misalnya, mengganti data penyerang ke dalam struktur mikroarsitektur untuk mempengaruhi eksekusi spekulatif berikutnya menggunakan serangan kelas LVI), mendapatkan akses ke informasi rahasia (misalnya, ketika melampaui batas buffer atau menggunakan memori setelah dibebaskan) dan membocorkan informasi rahasia (misalnya, dengan menganalisis status cache prosesor atau menggunakan metode MDS).

Selama pengujian, kernel berkomunikasi dengan pustaka runtime Kasper dan pemeriksaan berbasis LLVM. Pemeriksaan tersebut meniru eksekusi kode spekulatif menggunakan mekanisme checkpoint-restore yang sengaja mengeksekusi cabang kode yang salah prediksi dan kemudian kembali ke keadaan semula sebelum cabang terjadi. Kasper juga mencoba mensimulasikan berbagai kerentanan perangkat lunak dan perangkat keras, menganalisis dampak efek arsitektur dan mikroarsitektur, dan melakukan pengujian fuzzing terhadap kemungkinan tindakan penyerang. Port kernel DataFlowSanitizer digunakan untuk analisis alur eksekusi. Linux, dan untuk pengujian fuzzing, versi modifikasi dari paket syzkaller.

Selama pemindaian kernel Linux Dengan menggunakan Kasper, 1379 perangkat yang sebelumnya tidak dikenal diidentifikasi yang berpotensi menyebabkan kebocoran data selama eksekusi instruksi spekulatif. Perlu dicatat bahwa hanya sebagian kecil dari perangkat ini yang mungkin menimbulkan masalah nyata, tetapi untuk menunjukkan bahwa ada ancaman nyata, bukan hanya teoretis, sebuah prototipe eksploitasi yang berfungsi dikembangkan untuk salah satu fragmen kode yang bermasalah, yang menyebabkan kebocoran informasi dari memori kernel.
Sumber: opennet.ru
