Teknik baru untuk mengeksploitasi kerentanan Spectre di Chrome

Sekelompok peneliti dari universitas Amerika, Australia dan Israel telah mengusulkan teknik serangan saluran samping baru untuk mengeksploitasi kerentanan kelas Spectre di browser berdasarkan mesin Chromium. Serangan tersebut, dengan nama kode Spook.js, memungkinkan Anda melewati mekanisme isolasi situs dengan menjalankan kode JavaScript dan membaca konten seluruh ruang alamat dari proses saat ini, yaitu. mengakses data dari halaman yang berjalan di tab lain, tetapi diproses dalam proses yang sama.

Karena Chrome menjalankan situs berbeda dalam proses berbeda, kemampuan untuk melakukan serangan praktis terbatas pada layanan yang memungkinkan pengguna berbeda menghosting halaman mereka. Metode ini memungkinkan, dari halaman di mana penyerang memiliki kesempatan untuk menyematkan kode JavaScript-nya, untuk menentukan keberadaan halaman lain yang dibuka oleh pengguna dari situs yang sama dan mengekstrak informasi rahasia dari halaman tersebut, misalnya kredensial atau detail bank yang diganti. oleh sistem pengisian otomatis bidang dalam formulir web. Sebagai demonstrasi, ditunjukkan bagaimana Anda dapat menyerang blog orang lain di layanan Tumblr jika pemiliknya membuka blog penyerang yang dihosting di layanan yang sama di tab lain.

Pilihan lain untuk menggunakan metode ini adalah serangan terhadap add-on browser, yang memungkinkan, ketika menginstal add-on yang dikendalikan oleh penyerang, untuk mengekstrak data dari add-on lain. Sebagai contoh, kami menunjukkan bagaimana dengan menginstal add-on berbahaya Anda dapat mengekstrak informasi rahasia dari pengelola kata sandi LastPass.

Para peneliti telah menerbitkan prototipe eksploitasi yang berfungsi di Chrome 89 pada sistem dengan CPUIntel i7-6700K dan i7-7600U. Saat membuat eksploitasi, prototipe kode JavaScript yang sebelumnya diterbitkan oleh Google digunakan untuk melakukan serangan kelas Spectre. Tercatat bahwa para peneliti mampu mempersiapkan eksploitasi kerja untuk sistem berbasis prosesor Intel dan Apple M1, yang memungkinkan pengorganisasian pembacaan memori pada kecepatan 500 byte per detik dan akurasi 96%. Diasumsikan bahwa metode ini juga berlaku untuk prosesor AMD, tetapi eksploitasi yang berfungsi penuh tidak dapat disiapkan.

Serangan ini berlaku untuk semua browser yang berbasis mesin Chromium, termasuk Google Chrome, Microsoft Edge, dan Brave. Para peneliti juga percaya bahwa metode ini dapat diadaptasi untuk bekerja dengan Firefox, tetapi karena mesin Firefox sangat berbeda dari Chrome, pekerjaan untuk membuat eksploitasi semacam itu masih ada di masa depan.

Untuk melindungi dari serangan berbasis browser yang terkait dengan eksekusi instruksi spekulatif, Chrome menerapkan segmentasi ruang alamat - isolasi kotak pasir memungkinkan JavaScript hanya bekerja dengan pointer 32-bit dan berbagi memori penangan dalam tumpukan 4 GB yang terpisah. Untuk menyediakan akses ke seluruh ruang alamat proses dan melewati batasan 32-bit, para peneliti menggunakan teknik yang disebut Type Confusion, yang memaksa mesin JavaScript untuk memproses objek dengan tipe yang salah, sehingga memungkinkan untuk membentuk 64-bit penunjuk berdasarkan kombinasi dua nilai 32-bit.

Inti dari serangan ini adalah ketika memproses objek berbahaya yang dirancang khusus di mesin JavaScript, kondisi dibuat yang mengarah pada eksekusi spekulatif dari instruksi yang mengakses array. Objek dipilih sedemikian rupa sehingga bidang yang dikendalikan penyerang ditempatkan di area di mana penunjuk 64-bit digunakan. Karena jenis objek berbahaya tidak cocok dengan jenis larik yang sedang diproses, dalam kondisi normal, tindakan tersebut diblokir di Chrome oleh mekanisme untuk menonaktifkan kode yang digunakan untuk mengakses larik. Untuk mengatasi masalah ini, kode serangan Type Confusion ditempatkan di blok bersyarat "jika", yang tidak diaktifkan dalam kondisi normal, tetapi dieksekusi dalam mode spekulatif jika prosesor salah memprediksi percabangan lebih lanjut.

Akibatnya, prosesor secara spekulatif mengakses penunjuk 64-bit yang dihasilkan dan mengembalikan status setelah menentukan prediksi yang gagal, namun jejak eksekusi tetap berada di cache bersama dan dapat dipulihkan menggunakan metode deteksi cache saluran samping yang menganalisis perubahan dalam waktu akses ke data yang di-cache dan tidak di-cache. Untuk menganalisis isi cache dalam kondisi akurasi pengatur waktu yang tersedia di JavaScript tidak mencukupi, metode yang diusulkan oleh Google digunakan, yang menipu strategi penggusuran cache Tree-PLRU yang digunakan dalam prosesor dan memungkinkan, dengan meningkatkan jumlah siklus, untuk secara signifikan meningkatkan perbedaan waktu ketika suatu nilai ada dan tidak ada dalam cache. .

Sumber: opennet.ru

Tambah komentar