Nova tehnika za iskorištavanje Spectre ranjivosti u Chromeu

Grupa istraživača sa američkih, australijskih i izraelskih univerziteta predložila je novu tehniku ​​napada sa strane kanala kako bi se iskoristile ranjivosti klase Spectre u pretraživačima baziranim na Chromium motoru. Napad, kodnog naziva Spook.js, omogućava vam da zaobiđete mehanizam izolacije stranice pokretanjem JavaScript koda i pročitate sadržaj cijelog adresnog prostora trenutnog procesa, tj. pristup podacima sa stranica koje se pokreću na drugim karticama, ali se obrađuju u istom procesu.

Budući da Chrome pokreće različite stranice u različitim procesima, mogućnost izvođenja praktičnih napada ograničena je na usluge koje omogućavaju različitim korisnicima da hostuju svoje stranice. Metoda omogućava, sa stranice u koju napadač ima priliku da ugradi svoj JavaScript kod, da utvrdi prisustvo drugih stranica koje je otvorio korisnik sa iste stranice i iz njih izvuče povjerljive informacije, na primjer, akreditive ili zamijenjene bankovne podatke po sistemu automatskog popunjavanja polja u web obrascima. Kao demonstracija, prikazano je kako možete napasti tuđi blog na Tumblr servisu 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 pretraživača, koji omogućava da se prilikom instaliranja dodatka koji kontrolira napadač izvuče podaci 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 eksploatacije koji radi u Chrome-u 89 na sistemima sa CPUIntel i7-6700K i i7-7600U. Prilikom kreiranja eksploatacije, prototipovi JavaScript koda koje je prethodno objavio Google korišteni su za izvođenje napada klase Spectre. Napominje se da su istraživači bili u mogućnosti da pripreme radne eksploatacije za sisteme zasnovane na Intel i Apple M1 procesorima, koji omogućavaju organizovanje čitanja memorije brzinom od 500 bajtova u sekundi i preciznošću 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 pretraživače bazirane 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 sa Firefoxom, ali budući da se Firefox engine uvelike razlikuje od Chromea, rad na kreiranju ovakvog exploit-a je ostavljen za budućnost.

Da bi se zaštitio od napada baziranih na pretraživaču koji se odnose na spekulativno izvršavanje instrukcija, Chrome implementira segmentaciju adresnog prostora - izolacija sandbox-a omogućava JavaScriptu da radi samo sa 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 prisiljava JavaScript motor da obrađuje objekt s neispravnim tipom, što omogućava formiranje 64-bitnog pokazivač baziran na kombinaciji dvije 32-bitne vrijednosti.

Suština napada je da se prilikom obrade posebno dizajniranog zlonamjernog objekta u JavaScript motoru stvaraju uslovi koji dovode do spekulativnog izvršavanja instrukcija koje pristupaju nizu. Objekat se bira na način da se polja koja kontroliše napadač postavljaju u oblast u kojoj se koristi 64-bitni pokazivač. Budući da tip zlonamjernog objekta ne odgovara tipu niza koji se obrađuje, u normalnim uvjetima takve radnje su blokirane u Chromeu mehanizmom za deoptimiziranje koda koji se koristi za pristup nizovima. Da bi se riješio ovaj problem, kod za napad tipa Confusion stavlja se u uslovni blok “if”, koji se ne aktivira u normalnim uvjetima, ali se izvršava u spekulativnom načinu, ako procesor pogrešno predvidi dalje 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 dijeljenom kešu i mogu se vratiti korištenjem metoda detekcije predmemorije bočnog kanala koje analiziraju promjene u vremena pristupa keširanim i nekeširanim podacima. Za analizu sadržaja keš memorije u uslovima nedovoljne tačnosti tajmera dostupnog u JavaScript-u, koristi se metoda koju je predložio Google, koja obmanjuje strategiju izbacivanja keša Tree-PLRU koja se koristi u procesorima i omogućava povećanjem broja ciklusa da se značajno povećati razliku u vremenu kada je vrijednost prisutna i odsutna u kešu.

izvor: opennet.ru

Dodajte komentar