Google demonstrira eksploataciju ranjivosti Spectre izvršavanjem JavaScripta u pretraživaču

Google je objavio nekoliko prototipova eksploatacije koji pokazuju mogućnost iskorišćavanja ranjivosti klase Spectre prilikom izvršavanja JavaScript koda u pretraživaču, zaobilazeći prethodno dodane metode zaštite. Eksploatacije se mogu koristiti za pristup memoriji procesa obrade web sadržaja na trenutnoj kartici. Kako bi se testirao rad exploit-a, pokrenuta je web stranica leaky.page, a kod koji opisuje logiku rada postavljen je na GitHub.

Predloženi prototip je dizajniran za napad na sisteme sa Intel Core i7-6500U procesorima u okruženju sa Linuxom i Chrome 88. Za korištenje eksploatacije za druga okruženja, potrebne su modifikacije. Metoda eksploatacije nije specifična za Intelove procesore – nakon odgovarajuće adaptacije, potvrđeno je da eksploatacija radi na sistemima sa CPU-ima drugih proizvođača, uključujući Apple M1 zasnovan na ARM arhitekturi. Nakon manjih prilagođavanja, eksploatacija je također izvodljiva u drugim operativnim sistemima i drugim pretraživačima baziranim na Chromium motoru.

U okruženju baziranom na standardnim Chrome 88 i Intel Skylake procesorima, bilo je moguće curenje podataka iz procesa odgovornog za obradu web sadržaja u trenutnoj kartici Chrome (proces renderera) brzinom od 1 kilobajta u sekundi. Dodatno, razvijeni su alternativni prototipovi, na primjer, eksploatacija koja omogućava, po cijenu smanjenja stabilnosti, povećanje stope curenja na 8kB/s kada se koristi tajmer performance.now() s preciznošću od 5 mikrosekundi (0.005 milisekundi ). Pripremljena je i verzija koja je radila sa tajmerom preciznosti od jedne milisekunde, koji se mogao koristiti za organizovanje pristupa memoriji drugog procesa brzinom od oko 60 bajtova u sekundi.

Objavljeni demo kod se sastoji od tri dijela. Prvi dio kalibrira tajmer za procjenu vremena izvršenja operacija potrebnih za vraćanje podataka preostalih u kešu procesora kao rezultat spekulativnog izvršavanja CPU instrukcija. Drugi dio određuje raspored memorije koji se koristi prilikom dodjele JavaScript niza.

Treći dio direktno iskorištava ranjivost Spectre za određivanje memorijskog sadržaja trenutnog procesa kao rezultat stvaranja uslova za spekulativno izvršenje određenih operacija čiji rezultat odbacuje procesor nakon utvrđivanja neuspješnog predviđanja, ali tragovi izvršenja se deponuju u opštu keš memoriju i mogu se vratiti korišćenjem metoda za određivanje sadržaja keš memorije putem kanala treće strane koji analiziraju promene u vremenu pristupa keširanim i nekeširanim podacima.

Predložena tehnika eksploatacije omogućava da se bez tajmera visoke preciznosti dostupnih preko API-ja performance.now() i bez podrške za tip SharedArrayBuffer, koji omogućava kreiranje nizova u zajedničkoj memoriji. Eksploatacija uključuje Spectre gadget, koji uzrokuje kontrolisano spekulativno izvršavanje koda, i analizator curenja bočnog kanala, koji detektuje keširane podatke dobijene tokom spekulativnog izvršavanja.

Gadget je implementiran pomoću JavaScript niza u kojem se pokušava pristupiti području izvan granica međumemorije, što utiče na stanje bloka predviđanja grananja zbog prisustva provjere veličine međuspremnika koju dodaje kompajler (procesor spekulativno izvodi pristup unaprijed, ali vraća stanje nakon provjere). Za analizu sadržaja keš memorije u uslovima nedovoljne tačnosti tajmera, predložena je metoda koja obmanjuje Tree-PLRU strategiju izbacivanja podataka koja se koristi u procesorima i omogućava da se povećanjem broja ciklusa značajno poveća razlika u vremenu pri vraćanju vrijednost iz keša i kada nema vrijednosti u kešu.

Napominje se da je Google objavio prototip eksploatacije kako bi pokazao izvodljivost napada koristeći ranjivosti klase Spectre i podstakao web programere da koriste tehnike koje minimiziraju rizike od takvih napada. Istovremeno, Google vjeruje da je bez značajne prerade predloženog prototipa nemoguće stvoriti univerzalne eksploatacije koje su spremne ne samo za demonstraciju, već i za široku upotrebu.

Kako bi smanjili rizik, vlasnici web lokacija se ohrabruju da koriste nedavno implementirana 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 direktno od napada, ali vam omogućavaju da izolujete podatke sajta od curenja u procese u kojima se može izvršiti JavaScript kod napadača (do curenja dolazi iz memorije trenutnog procesa, koji pored napadačevog koda , također može obraditi podatke s druge stranice otvorene na istoj kartici). Glavna ideja je da se odvoji izvršavanje koda web lokacije u različitim procesima od koda treće strane primljenog iz nepouzdanih izvora, na primjer, uključenog kroz iframe.



izvor: opennet.ru

Dodajte komentar