Kasper, pemindai untuk masalah eksekusi kode spekulatif di kernel Linux, kini tersedia

Sebuah tim peneliti dari Free University of Amsterdam telah menerbitkan toolkit Kasper yang dirancang untuk mengidentifikasi cuplikan kode di kernel Linux yang dapat digunakan untuk mengeksploitasi kerentanan kelas Spectre yang disebabkan oleh eksekusi kode spekulatif pada prosesor. Kode sumber untuk toolkit 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).

Kasper, pemindai untuk masalah eksekusi kode spekulatif di kernel Linux, kini tersedia

Saat pengujian, kernel dihubungkan dengan pustaka runtime Kasper dan pemeriksaan berjalan pada tingkat LLVM. Proses pemeriksaan mengemulasi eksekusi kode spekulatif, diimplementasikan menggunakan mekanisme pemulihan pos pemeriksaan, yang secara khusus mengeksekusi cabang kode yang diprediksi secara salah, dan kemudian mengembalikan ke keadaan semula sebelum cabang dimulai. Kasper juga mencoba untuk mensimulasikan berbagai kerentanan perangkat lunak dan perangkat keras, menganalisis dampak efek arsitektur dan mikroarsitektur, dan melakukan pengujian fuzz terhadap kemungkinan tindakan penyerang. Untuk menganalisis alur eksekusi, port DataFlowSanitizer untuk kernel Linux digunakan, dan untuk pengujian fuzzing, versi paket syzkaller yang dimodifikasi digunakan.

Kasper, pemindai untuk masalah eksekusi kode spekulatif di kernel Linux, kini tersedia

Pemindaian kernel Linux menggunakan Kasper mengidentifikasi 1379 gadget yang sebelumnya tidak diketahui yang berpotensi menyebabkan kebocoran data selama eksekusi instruksi spekulatif. Perlu dicatat bahwa mungkin hanya beberapa dari mereka yang dapat menimbulkan masalah nyata, tetapi untuk menunjukkan bahwa ada bahaya nyata, dan bukan hanya bahaya teoretis, prototipe eksploitasi yang berfungsi dikembangkan untuk salah satu fragmen kode bermasalah, yang mengarah ke informasi. kebocoran dari memori kernel.

Sumber: opennet.ru

Tambah komentar