Google nduduhake eksploitasi kerentanan Spectre liwat eksekusi JavaScript ing browser

Google wis nerbitake sawetara prototipe eksploitasi sing nuduhake kemungkinan ngeksploitasi kerentanan kelas Spectre nalika nglakokake kode JavaScript ing browser, ngliwati metode perlindungan sing ditambahake sadurunge. Eksploitasi bisa digunakake kanggo entuk akses menyang memori proses pangolahan isi web ing tab saiki. Kanggo nguji operasi eksploitasi, situs web leaky.page diluncurake, lan kode sing nggambarake logika karya kasebut dikirim ing GitHub.

Prototipe ngajokaken dirancang kanggo nyerang sistem karo prosesor Intel Core i7-6500U ing lingkungan karo Linux lan Chrome 88. Kanggo nggunakake eksploitasi kanggo lingkungan liyane, modifikasi dibutuhake. Cara eksploitasi ora spesifik kanggo prosesor Intel - sawise adaptasi sing cocog, eksploitasi kasebut dikonfirmasi bisa digunakake ing sistem karo CPU saka manufaktur liyane, kalebu Apple M1 adhedhasar arsitektur ARM. Sawise pangaturan cilik, eksploitasi uga bisa ditindakake ing sistem operasi liyane lan ing browser liyane adhedhasar mesin Chromium.

Ing lingkungan adhedhasar standar Chrome 88 lan prosesor Intel Skylake, iku bisa kanggo bocor data saka proses tanggung jawab kanggo ngolah isi web ing tab Chrome saiki (proses renderer) ing kacepetan 1 kilobyte per detik. Kajaba iku, prototipe alternatif wis dikembangake, contone, eksploitasi sing ngidini, kanthi biaya nyuda stabilitas, nambah tingkat bocor dadi 8kB/s nalika nggunakake timer performance.now() kanthi akurasi 5 mikrodetik (0.005 milidetik). ). Versi uga disiapake sing bisa digunakake kanthi akurasi wektu siji milidetik, sing bisa digunakake kanggo ngatur akses menyang memori proses liyane kanthi kacepetan kira-kira 60 bita per detik.

Kode demo sing diterbitake dumadi saka telung bagean. Bagian pisanan calibrates timer kanggo ngira wektu eksekusi operasi sing dibutuhake kanggo mulihake data sing isih ana ing cache prosesor minangka asil saka eksekusi spekulatif instruksi CPU. Bagean kapindho nemtokake tata letak memori sing digunakake nalika nyedhiyakake array JavaScript.

Bagian katelu langsung ngeksploitasi kerentanan Spectre kanggo nemtokake isi memori proses saiki minangka asil nggawe kahanan kanggo eksekusi spekulatif operasi tartamtu, asil sing dibuwang dening prosesor sawise nemtokake prediksi sing ora kasil, nanging jejak saka eksekusi disimpen ing cache umum lan bisa dibalèkaké nggunakake cara kanggo nemtokake isi cache dening saluran pihak katelu sing njelasno owah-owahan ing wektu akses kanggo data cached lan uncached.

Teknik eksploitasi ngajokaken ndadekake iku bisa kanggo nindakake tanpa timer tliti dhuwur kasedhiya liwat performance.now () API, lan tanpa support kanggo jinis SharedArrayBuffer, sing ngidini nggawe susunan ing memori sambungan. Eksploitasi kasebut kalebu gadget Spectre, sing nyebabake eksekusi kode spekulatif sing dikontrol, lan analisa bocor saluran sisih, sing ndeteksi data cache sing dipikolehi sajrone eksekusi spekulatif.

Gadget kasebut dileksanakake nggunakake array JavaScript sing nyoba kanggo ngakses area ing njaba wates buffer, sing mengaruhi negara blok prediksi cabang amarga ana cek ukuran buffer sing ditambahake dening compiler (prosesor, looking ahead, speculatively nindakake akses, nanging mbalek maneh negara sawise mriksa). Kanggo nganalisa isi cache ing kahanan akurasi wektu sing ora cukup, metode wis diusulake sing ngapusi strategi pengusiran cache Tree-PLRU sing digunakake ing prosesor lan ngidini, kanthi nambah jumlah siklus, nambah bedane wektu nalika bali. Nilai saka cache lan nalika ora ana nilai ing cache.

Kacathet yen Google nerbitake prototipe eksploitasi kanggo nuduhake kemungkinan serangan nggunakake kerentanan kelas Spectre lan kanggo nyengkuyung pangembang web nggunakake teknik sing nyuda resiko saka serangan kasebut. Ing wektu sing padha, Google percaya yen tanpa reworking prototipe sing diusulake, ora mungkin nggawe eksploitasi universal sing siap ora mung kanggo demonstrasi, nanging uga kanggo panggunaan sing akeh.

Kanggo nyuda resiko, pamilik situs disaranake nggunakake header Cross-Origin Opener Policy (COOP), Cross-Origin Embedder Policy (COEP), Cross-Origin Resource Policy (CORP), Fetch Metadata Request, X-Frame- Pilihan, X -Content-Type-Options lan SameSite Cookie. Mekanisme kasebut ora langsung nglindhungi serangan, nanging ngidini sampeyan ngisolasi data situs saka bocor menyang proses ing ngendi kode JavaScript penyerang bisa dieksekusi (bocor kasebut kedadeyan saka memori proses saiki, sing, saliyane kode penyerang. , uga bisa ngolah data saka situs liya sing dibukak ing tab sing padha). Ide utama yaiku misahake eksekusi kode situs ing proses sing beda saka kode pihak katelu sing ditampa saka sumber sing ora bisa dipercaya, contone, kalebu liwat iframe.



Source: opennet.ru

Add a comment