Serangan ekstraksi cache CPU diterapkan di browser web tanpa JavaScript

Sebuah tim peneliti dari beberapa universitas Amerika, Israel dan Australia telah mengembangkan tiga serangan yang dijalankan pada browser web untuk mengekstrak informasi tentang isi cache prosesor. Satu metode berfungsi di browser tanpa JavaScript, dan dua metode lainnya mengabaikan metode perlindungan yang ada terhadap serangan saluran samping, termasuk yang digunakan di browser Tor dan DeterFox. Kode untuk mendemonstrasikan serangan, serta komponen server yang diperlukan untuk serangan tersebut, dipublikasikan di GitHub.

Untuk menganalisis isi cache, semua serangan menggunakan metode Prime+Probe, yang melibatkan pengisian cache dengan serangkaian nilai standar dan mendeteksi perubahan dengan mengukur waktu aksesnya saat mengisi ulang. Untuk melewati mekanisme keamanan yang ada di browser yang mengganggu pengukuran waktu yang akurat, dalam dua opsi, banding dilakukan ke server DNS atau WebSocket yang dikendalikan oleh penyerang, yang menyimpan catatan waktu permintaan yang diterima. Dalam satu perwujudan, waktu respons DNS tetap digunakan sebagai referensi waktu.

Pengukuran yang dilakukan menggunakan DNS eksternal atau server WebSocket, menggunakan sistem klasifikasi berbasis pembelajaran mesin, cukup untuk memprediksi nilai dengan akurasi hingga 98% pada skenario paling optimal (rata-rata 80-90%). Metode serangan telah diuji pada berbagai platform perangkat keras (Intel, AMD Ryzen, Apple M1, Samsung Exynos) dan terbukti bersifat universal.

Serangan ekstraksi cache CPU diterapkan di browser web tanpa JavaScript

Varian pertama dari serangan DNS Racing menggunakan implementasi klasik metode Prime+Probe menggunakan array JavaScript. Perbedaannya terletak pada penggunaan pengatur waktu berbasis DNS eksternal dan penangan onerror, yang dipicu ketika ada upaya untuk memuat gambar dari domain yang tidak ada. Pengatur waktu eksternal memungkinkan serangan Prime+Probe pada browser yang membatasi atau menonaktifkan sepenuhnya akses ke pengatur waktu JavaScript.

Untuk server DNS yang terletak di jaringan Ethernet yang sama, keakuratan pengatur waktu diperkirakan sekitar 2 ms, yang cukup untuk melakukan serangan saluran samping (sebagai perbandingan, keakuratan pengatur waktu JavaScript standar di Tor Browser adalah dikurangi menjadi 100 ms). Serangan tersebut tidak memerlukan kontrol atas server DNS, karena waktu pelaksanaan operasi dipilih sehingga waktu respons dari DNS berfungsi sebagai tanda selesainya pemeriksaan lebih awal (tergantung pada apakah penangan onerror dipicu. cepat atau lambat, kesimpulan diambil tentang kecepatan operasi pemeriksaan dengan cache) .

Metode serangan kedua, "String and Sock", bertujuan untuk melewati teknik keamanan yang membatasi penggunaan array tingkat rendah di JavaScript. Alih-alih array, String dan Sock menggunakan operasi pada string yang sangat besar, yang ukurannya dipilih sehingga variabel mencakup seluruh cache LLC (cache tingkat terakhir). Selanjutnya, dengan menggunakan fungsi indexOf(), substring kecil dicari di string, yang awalnya tidak ada di string sumber, mis. operasi pencarian menghasilkan iterasi pada seluruh string. Karena ukuran garis sesuai dengan ukuran cache LLC, pemindaian memungkinkan Anda melakukan operasi pemeriksaan cache tanpa memanipulasi array. Untuk mengukur penundaan, alih-alih DNS, panggilan dilakukan ke server WebSocket yang dikendalikan oleh penyerang - sebelum dan sesudah operasi pencarian selesai, kueri dikirim dalam satu baris, berdasarkan server menghitung penundaan yang digunakan untuk menganalisis cache isi.

Varian ketiga dari serangan “CSS PP0” diimplementasikan melalui HTML dan CSS, dan dapat bekerja di browser dengan JavaScript yang dinonaktifkan. Metode ini mirip dengan "String and Sock", tetapi tidak terikat dengan JavaScript. Selama serangan, satu set pemilih CSS dihasilkan yang mencari berdasarkan topeng. String besar awal yang mengisi cache diatur dengan membuat tag div dengan nama kelas yang sangat besar. Di dalamnya ada sekumpulan div lain dengan pengidentifikasinya sendiri. Masing-masing div bertingkat ini memiliki gayanya sendiri dengan pemilih yang mencari substring. Saat merender halaman, browser terlebih dahulu mencoba memproses div bagian dalam, yang menghasilkan operasi pencarian pada baris besar. Pencarian dilakukan dengan menggunakan topeng yang sengaja hilang dan mengarah ke iterasi di seluruh baris, setelah itu kondisi "tidak" dipicu dan upaya dilakukan untuk memuat gambar latar belakang yang merujuk pada domain acak: #pp:not([class*=’xjtoxg’]) #s0 {background-image: url(«https://qdlvibmr.helldomain.oy.ne.ro»);} #pp:not([class*=’gzstxf’]) #s1 {background-image: url(«https://licfsdju.helldomain.oy.ne.ro»);} … X X ...

Subdomain dilayani oleh server DNS penyerang, yang dapat mengukur penundaan dalam menerima permintaan. Server DNS mengeluarkan NXDOMAIN untuk semua permintaan dan menyimpan catatan waktu permintaan yang tepat. Sebagai hasil dari pemrosesan sekumpulan div, server DNS penyerang menerima serangkaian permintaan, penundaan di antaranya berkorelasi dengan hasil pemeriksaan konten cache.

Serangan ekstraksi cache CPU diterapkan di browser web tanpa JavaScript


Sumber: opennet.ru

Tambah komentar