Google je demonstrirao iskorištavanje ranjivosti Spectre kroz izvršavanje JavaScript u pregledniku

Tvrtka Google objavila je nekoliko prototipova eksploitacija koji pokazuju mogućnost iskorištavanja ranjivosti klase Spectre prilikom izvršavanja JavaScript koda u pretraživaču, zaobilazeći ranije implementirane metode zaštite. Eksploiti se mogu koristiti za dobivanje pristupa memoriji procesa koji obrađuje web sadržaj na trenutnoj kartici. Za testiranje rada eksploita pokrenut je sajt leaky.page, a kod s opisom logike rada objavljen je na GitHubu.

Predloženi prototip namijenjen je izvođenju napada na sustave s procesorima Intel Core i7-6500U u okruženju s Linuxom i Chromeom 88. Za primjenu eksploita u drugim okruženjima potrebno je izvršiti izmjene. Metoda iskorištavanja nije specifična za Intel procesore — nakon odgovarajuće prilagodbe potvrđena je funkcionalnost eksploita na sustavima s CPU-ima drugih proizvođača, uključujući Apple M1 koji se temelji na ARM arhitekturi. Nakon manjih korekcija, eksploit je također operativan u drugim operativnim sustavima i drugim pretraživačima koji se temelje na Chromium engine-u.

U okruženju s standardnim Chromeom 88 i procesorima Intel Skylake postignuta je provala podataka iz procesa odgovornog za obradu web sadržaja na trenutnoj kartici Chrome-a (renderer process) brzinom od 1 kilobajt u sekundi. Dodatno su razvijeni alternativni prototipovi, na primjer, eksploit koji omogućuje, uz smanjenje stabilnosti, povećanje brzine provale do 8kB/s korištenjem tajmera performance.now() s točnošću od 5 mikrosekundi (0.005 milisekundi). Također je pripremljena varijanta koja funkcionira s točnošću tajmera na razini jedne milisekunde, koja bi mogla služiti za omogućavanje pristupa memoriji drugog procesa brzinom od oko 60 bajtova u sekundi.

Objavljeni demonstracijski kod sastoji se od tri dijela. Prvi dio izvodi kalibraciju tajmera za procjenu vremena izvršavanja operacija potrebnih za obnovu podataka koji su ostali u procesorskom cache-u kao rezultat spekulativnog izvršavanja instrukcija CPU-a. Drugi dio vrši određivanje raspodjele memorije koja se koristi prilikom postavljanja JavaScript niza.

Treći dio izravno koristi ranjivost Spectre za određivanje sadržaja memorije trenutačnog procesa stvaranjem uvjeta za spekulativno izvršavanje određenih operacija, čiji se rezultati odbacuju od strane procesora nakon utvrđivanja neuspješnog predviđanja, ali tragovi izvršavanja ostaju u zajedničkom cacheu i mogu se obnoviti pomoću metoda određivanja sadržaja cachea kroz vanjske kanale, analizirajući promjenu vremena pristupa keširanim i nekeširanim podacima.

Predložena tehnika iskorištavanja omogućuje zaobilaženje visoko preciznih tajmera dostupnih putem API-ja performance.now() i bez podrške za tip SharedArrayBuffer, koji omogućuje stvaranje nizova u dijeljenoj memoriji. Eksploit uključuje Spectre gadget koji pokreće kontrolirano spekulativno izvršavanje koda, i analizator curenje kroz vanjske kanale, koji određuje podatke koji su završili u cacheu, dobiveni tijekom spekulativnog izvršavanja.

Gadget je implementiran pomoću JavaScript niza, u kojem se pokušava pristupiti području izvan granica bafera, što utječe na stanje bloka predviđanja prijelaza zbog dodatne provjere veličine bafera koju obavlja kompajler (procesor spekulativno izvršava pristup unaprijed, ali vraća stanje nakon provjere). Za analizu sadržaja cachea u uvjetima nedovoljne preciznosti tajmera predložen je metod koji obmanjuje strategiju uklanjanja podataka iz cachea Tree-PLRU koja se koristi u procesorima i omogućuje značajno povećanje razlike u vremenu između vraćanja vrijednosti iz cachea i odsutnosti vrijednosti u cacheu povećanjem broja ciklusa.

Napominje se da je kompanija Google objavila prototip eksploita kako bi pokazala realnost napada koji koriste ranjivosti klase Spectre i potaknula web programere na korištenje tehnika koje minimiziraju rizike od sličnih napada. Pri tome Google smatra da bez značajne prerade predloženog prototipa nije moguće stvoriti univerzalne eksploite sposobne ne samo za demonstraciju već i za široku primjenu.

Kako bi se smanjio rizik, vlasnicima web stranica preporučuje se korištenje nedavno implementiranih zaglavlja Cross-Origin Opener Policy (COOP), Cross-Origin Embedder Policy (COEP), Cross-Origin Resource Policy (CORP), Fetch Metadata Request, X-Frame-Options, X-Content-Type-Options i SameSite Cookie. Ovi mehanizmi ne štite izravno od napada, ali omogućuju izolaciju podataka web stranice od curenja u procese u kojima se može izvršiti JavaScript kod napadača (curenje se događa iz memorije trenutnog procesa, u kojem uz kod napadača mogu biti obrađeni i podaci druge web stranice otvorene u istoj kartici). Osnovna ideja je odvojiti izvršenje koda web stranice u različitim procesima od vanjskog koda dobivenog iz nepouzdanih izvora, poput koda koji se učitava putem iframe-a.

Pogledajte video


Izvor: opennet.ru
Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster