Nova tehnika za iskorištavanje ranjivosti Spectre u Chromeu

Grupa istraživača s američkih, australskih i izraelskih sveučilišta predložila je novu tehniku ​​napada bočnog kanala za iskorištavanje ranjivosti klase Spectre u preglednicima koji se temelje na Chromium motoru. Napad, kodnog naziva Spook.js, omogućuje vam da zaobiđete mehanizam izolacije stranice pokretanjem JavaScript koda i čitanjem sadržaja cijelog adresnog prostora trenutnog procesa, tj. pristup podacima sa stranica koje se izvode u drugim karticama, ali se obrađuju u istom procesu.

Budući da Chrome pokreće različite web-lokacije u različitim procesima, mogućnost izvođenja praktičnih napada ograničena je na usluge koje različitim korisnicima omogućuju hostiranje njihovih stranica. Metoda omogućuje, sa stranice u koju napadač ima priliku ugraditi svoj JavaScript kod, utvrđivanje prisutnosti drugih stranica koje je korisnik otvorio s iste stranice i izdvajanje povjerljivih informacija s njih, na primjer, vjerodajnice ili bankovne podatke zamijenjene sustavom automatskog popunjavanja polja u web obrascima. Kao demonstracija, prikazano je kako možete napasti tuđi blog na servisu Tumblr ako njegov vlasnik otvori blog napadača koji se nalazi na istom servisu u drugoj kartici.

Druga opcija za korištenje metode je napad na dodatke preglednika, koji omogućuje, kada se instalira dodatak koji kontrolira napadač, izvlačenje podataka iz drugih dodataka. Kao primjer, pokazujemo kako instaliranjem zlonamjernog dodatka možete izvući povjerljive informacije iz LastPass upravitelja lozinki.

Istraživači su objavili prototip exploita koji radi u Chromeu 89 na sustavima s CPUIntel i7-6700K i i7-7600U. Prilikom stvaranja eksploatacije, prototipovi JavaScript koda koje je Google prethodno objavio korišteni su za izvođenje napada klase Spectre. Napominje se da su istraživači uspjeli pripremiti radne eksploatacije za sustave temeljene na procesorima Intel i Apple M1, koji omogućuju organiziranje čitanja memorije brzinom od 500 bajtova u sekundi i točnosti od 96%. Pretpostavlja se da je metoda primjenjiva i na AMD procesore, ali nije bilo moguće pripremiti potpuno funkcionalan exploit.

Napad je primjenjiv na sve preglednike temeljene na Chromium motoru, uključujući Google Chrome, Microsoft Edge i Brave. Istraživači također vjeruju da se metoda može prilagoditi za rad s Firefoxom, ali budući da se Firefoxov motor uvelike razlikuje od Chromea, rad na stvaranju takvog exploita ostavljen je za budućnost.

Kako bi se zaštitio od napada temeljenih na pregledniku koji se odnose na spekulativno izvršavanje instrukcija, Chrome implementira segmentaciju adresnog prostora - izolacija sandboxa omogućuje JavaScriptu da radi samo s 32-bitnim pokazivačima i dijeli memoriju rukovatelja u nepovezanim hrpama od 4 GB. Kako bi omogućili pristup cijelom adresnom prostoru procesa i zaobišli 32-bitno ograničenje, istraživači su koristili tehniku ​​nazvanu Type Confusion, koja tjera JavaScript mehanizam da obradi objekt s netočnim tipom, što omogućuje formiranje 64-bitnog pokazivač koji se temelji na kombinaciji dviju 32-bitnih vrijednosti.

Bit napada je da se prilikom obrade posebno dizajniranog malicioznog objekta u JavaScript motoru stvaraju uvjeti koji dovode do spekulativnog izvršavanja instrukcija koje pristupaju nizu. Objekt je odabran na način da su polja kojima upravlja napadač postavljena u područje gdje se koristi 64-bitni pokazivač. Budući da vrsta zlonamjernog objekta ne odgovara vrsti niza koji se obrađuje, u normalnim uvjetima takve radnje blokirane su u Chromeu mehanizmom za deoptimizaciju koda koji se koristi za pristup nizovima. Kako bi se riješio ovaj problem, kod za napad Type Confusion stavlja se u uvjetni blok "if", koji se ne aktivira u normalnim uvjetima, već se izvršava u spekulativnom načinu rada, ako procesor netočno predvidi daljnje grananje.

Kao rezultat toga, procesor spekulativno pristupa generiranom 64-bitnom pokazivaču i vraća stanje nakon utvrđivanja neuspjelog predviđanja, ali tragovi izvršenja ostaju u zajedničkoj predmemoriji i mogu se vratiti korištenjem metoda detekcije predmemorije bočnog kanala koje analiziraju promjene u vremena pristupa predmemoriranim i nekeširanim podacima. Za analizu sadržaja predmemorije u uvjetima nedovoljne točnosti mjerača vremena dostupnog u JavaScriptu, koristi se metoda koju je predložio Google, koja vara strategiju izbacivanja predmemorije Tree-PLRU koja se koristi u procesorima i omogućuje, povećanjem broja ciklusa, značajno povećati razliku u vremenu kada je vrijednost prisutna i odsutna u predmemoriji. .

Izvor: opennet.ru

Dodajte komentar