Teknik baharu untuk mengeksploitasi kelemahan Spectre dalam Chrome

Sekumpulan penyelidik dari universiti Amerika, Australia dan Israel telah mencadangkan teknik serangan saluran sisi baharu untuk mengeksploitasi kelemahan kelas Spectre dalam penyemak imbas berdasarkan enjin Chromium. Serangan itu, diberi nama kod Spook.js, membolehkan anda memintas mekanisme pengasingan tapak dengan menjalankan kod JavaScript dan membaca kandungan keseluruhan ruang alamat proses semasa, i.e. akses data daripada halaman yang berjalan dalam tab lain, tetapi diproses dalam proses yang sama.

Memandangkan Chrome menjalankan tapak yang berbeza dalam proses yang berbeza, keupayaan untuk melakukan serangan praktikal terhad kepada perkhidmatan yang membenarkan pengguna yang berbeza untuk mengehoskan halaman mereka. Kaedah ini membenarkan, daripada halaman di mana penyerang mempunyai peluang untuk membenamkan kod JavaScriptnya, untuk menentukan kehadiran halaman lain yang dibuka oleh pengguna dari tapak yang sama dan mengekstrak maklumat sulit daripada mereka, contohnya, bukti kelayakan atau butiran bank yang digantikan oleh sistem auto-mengisi medan dalam borang web. Sebagai demonstrasi, ditunjukkan bagaimana anda boleh menyerang blog orang lain pada perkhidmatan Tumblr jika pemiliknya membuka blog penyerang yang dihoskan pada perkhidmatan yang sama dalam tab lain.

Pilihan lain untuk menggunakan kaedah ini ialah serangan pada alat tambah penyemak imbas, yang membolehkan, apabila memasang alat tambah yang dikawal oleh penyerang, untuk mengekstrak data daripada alat tambah lain. Sebagai contoh, kami menunjukkan cara dengan memasang alat tambah berniat jahat anda boleh mengekstrak maklumat sulit daripada pengurus kata laluan LastPass.

Penyelidik telah menerbitkan prototaip eksploitasi yang berfungsi dalam Chrome 89 pada sistem dengan CPUIntel i7-6700K dan i7-7600U. Semasa mencipta eksploit, prototaip kod JavaScript yang diterbitkan oleh Google sebelum ini digunakan untuk melakukan serangan kelas Spectre. Adalah diperhatikan bahawa para penyelidik dapat menyediakan eksploitasi kerja untuk sistem berdasarkan pemproses Intel dan Apple M1, yang memungkinkan untuk mengatur bacaan memori pada kelajuan 500 bait sesaat dan ketepatan 96%. Diandaikan bahawa kaedah itu juga boleh digunakan untuk pemproses AMD, tetapi tidak mungkin untuk menyediakan eksploitasi berfungsi sepenuhnya.

Serangan itu terpakai kepada mana-mana penyemak imbas berdasarkan enjin Chromium, termasuk Google Chrome, Microsoft Edge dan Brave. Para penyelidik juga percaya bahawa kaedah itu boleh disesuaikan untuk berfungsi dengan Firefox, tetapi memandangkan enjin Firefox sangat berbeza daripada Chrome, kerja untuk mencipta eksploitasi sedemikian ditinggalkan untuk masa depan.

Untuk melindungi daripada serangan berasaskan penyemak imbas yang berkaitan dengan pelaksanaan arahan spekulatif, Chrome melaksanakan pembahagian ruang alamat - pengasingan kotak pasir membolehkan JavaScript berfungsi hanya dengan penunjuk 32-bit dan berkongsi memori pengendali dalam timbunan 4GB yang terputus-putus. Untuk menyediakan akses kepada keseluruhan ruang alamat proses dan memintas had 32-bit, penyelidik menggunakan teknik yang dipanggil Type Confusion, yang memaksa enjin JavaScript memproses objek dengan jenis yang salah, yang memungkinkan untuk membentuk 64-bit penunjuk berdasarkan gabungan dua nilai 32-bit.

Intipati serangan ialah apabila memproses objek berniat jahat yang direka khas dalam enjin JavaScript, keadaan dicipta yang membawa kepada pelaksanaan spekulatif arahan yang mengakses tatasusunan. Objek dipilih sedemikian rupa sehingga medan kawalan penyerang diletakkan di kawasan di mana penunjuk 64-bit digunakan. Memandangkan jenis objek berniat jahat tidak sepadan dengan jenis tatasusunan yang sedang diproses, dalam keadaan biasa tindakan sedemikian disekat dalam Chrome oleh mekanisme untuk menyahoptimumkan kod yang digunakan untuk mengakses tatasusunan. Untuk menyelesaikan masalah ini, kod untuk serangan Kekeliruan Jenis diletakkan dalam blok "jika" bersyarat, yang tidak diaktifkan dalam keadaan biasa, tetapi dilaksanakan dalam mod spekulatif, jika pemproses tersalah meramalkan percabangan selanjutnya.

Akibatnya, pemproses secara spekulatif mengakses penuding 64-bit yang dijana dan melancarkan keadaan selepas menentukan ramalan yang gagal, tetapi kesan pelaksanaan kekal dalam cache kongsi dan boleh dipulihkan menggunakan kaedah pengesanan cache saluran sisi yang menganalisis perubahan dalam masa capaian kepada data cache dan uncache . Untuk menganalisis kandungan cache dalam keadaan ketepatan pemasa yang tidak mencukupi yang tersedia dalam JavaScript, kaedah yang dicadangkan oleh Google digunakan, yang memperdayakan strategi pengusiran cache Tree-PLRU yang digunakan dalam pemproses dan membolehkan, dengan meningkatkan bilangan kitaran, untuk meningkatkan dengan ketara perbezaan masa apabila nilai ada dan tiada dalam cache. .

Sumber: opennet.ru

Tambah komen