A group of researchers from American, Australian, and Israeli universities has proposed a new side-channel attack technique to exploit Spectre vulnerabilities in browsers based on the Chromium engine. The attack, codenamed Spook.js, allows the execution of JavaScript code to bypass the site isolation mechanism and read the entire address space of the current process, meaning it can access data from pages opened in other tabs but processed in the same process.
Since Chrome runs different sites in separate processes, the possibility of carrying out practical attacks is limited to services that allow different users to host their pages. This method enables the attacker, from a page where they can embed their JavaScript code, to determine if other pages opened by the user are from the same site and extract confidential information from them, such as credentials or banking details populated by the auto-fill system in web forms. As a demonstration, it shows how one can attack someone else's blog on the Tumblr service if its owner opens a tab with the attackerâs blog hosted on the same service.

Another application of the method involves attacking browser extensions, allowing data extraction from other extensions when an extension controlled by the attackers is installed. For example, it demonstrates how a malicious extension can extract confidential information from the LastPass password manager.

Researchers have published a prototype exploit that operates in Chrome 89 on systems with Intel i7-6700K and i7-7600U CPUs. In creating the exploit, previously published JavaScript code prototypes for executing Spectre-type attacks by Google were used. It is noted that the researchers have managed to develop working exploits for systems based on Intel and Apple M1 processors, allowing them to read memory at a speed of 500 bytes per second with 96% accuracy. It is assumed that the method is applicable to AMD processors as well, although a fully functional exploit has not been successfully prepared.
RĂŒnnak sobib igasuguste Chromiumi-pĂ”histe brauserite, sealhulgas Google Chrome'i, Microsoft Edge'i ja Brave'i jaoks. Uurijad usuvad ka, et meetod vĂ”ib olla kohandatud töötama Firefoxiga, kuid kuna Firefoxi mootor erineb Chrome'ist oluliselt, siis on sarnase eksploitatsiooni loomine jÀÀnud tulevikku.
RĂŒnnakute vĂ€ltimiseks, mis on seotud spekulatiivse kĂ€skude tĂ€itmisega brauseri kaudu, on Chrome'is rakendatud aadressiruumi segmentimist - liivakasti isolatsioon vĂ”imaldab JavaScripti kasutada ainult 32-bitiste nĂ€idikutega ning jagab töötlejate mĂ€lu eraldi, mittetĂ€ielikes 4 GB hunnikutes (heap). Kogu protsessi aadressiruumi ligipÀÀsu korraldamiseks ja 32-bitise piiri ĂŒletamiseks kasutasid uurijad Type Confusion tehnikat, mis sunnib JavaScripti mootori töötlema objekti vale tĂŒĂŒbiga, vĂ”imaldades luua 64-bitise nĂ€idiku kahe 32-bitise vÀÀrtuse kombinatsiooni pĂ”hjal.
RĂŒnnaku olemus seisneb selles, et spetsiaalselt vormindatud pahatahtliku objekti töötlemisel JavaScripti mootori sees tekivad tingimused, mis viivad spekulatiivsete kĂ€skude tĂ€itmiseni, mis pÀÀsevad juurde massiivile. Objekt valitakse nii, et rĂŒndajate kontrollitavad vĂ€ljad paiknevad piirkonnas, kus kasutatakse 64-bitist nĂ€idikut. Kuna pahatahtliku objekti tĂŒĂŒp ei vasta töödeldava massiivi tĂŒĂŒbile, blokeerib Chrome'i koodide deoptiimeerimise mehhanism, mis on ette nĂ€htud massiividele juurde pÀÀsemiseks, tavaliselt selliseid toiminguid. Selle probleemi lahendamiseks viidatakse Type Confusion rĂŒnnaku kood tingimuslikku blokki âifâ, mis ei aktiveeru tavatingimustes, kuid töötab spekulatiivses reĆŸiimis, kui protsessor ennustab vale harunemist.
Protsessor teeb spekulatiivse pöörde moodustatud 64-bitisesse aadressi ja taastab oleku pĂ€rast ebaĂ”nnestunud prognoosi mÀÀramist, kuid kĂ€itamise jĂ€ljed jÀÀvad ĂŒldisesse vahemĂ€llu ja neid saab taastada vahemĂ€lu sisu mÀÀratlemise meetodite abil, mis analĂŒĂŒsivad juurdepÀÀsuaja muutust vahemĂ€lus ja mitte-vahemĂ€lus andmetele. VahemĂ€lu sisu analĂŒĂŒsimiseks, kus JavaScriptis on kellaga seotud tĂ€psus ebapiisav, rakendatakse Google'i poolt pakutud meetodit, mis petab protsessorites kasutatavat Tree-PLRU andmete eemaldamise strateegiat, vĂ”imaldades tsĂŒklite arvu suurendamise kaudu mĂ€rkimisvÀÀrselt suurendada aega, mis eristab vahemĂ€lus oleva ja mitteoleva vÀÀrtuse olemasolu.
Allikas: opennet.ru
