Google demonstrira iskorištavanje ranjivosti Spectre izvršavanjem JavaScripta u pregledniku

Google je objavio nekoliko prototipova exploita koji pokazuju mogućnost iskorištavanja ranjivosti klase Spectre prilikom izvršavanja JavaScript koda u pregledniku, zaobilazeći prethodno dodane metode zaštite. Eksploatacije se mogu koristiti za pristup memoriji procesa koji obrađuje web sadržaj u trenutnoj kartici. Kako bi se testirao rad exploita, pokrenuta je stranica leaky.page, a kod koji opisuje logiku rada objavljen je na GitHubu.

Predloženi prototip dizajniran je za napad na sustave s Intel Core i7-6500U procesorima u okruženju Linuxa i Chromea 88. Promjene su potrebne za primjenu iskorištavanja u drugim okruženjima. Metoda iskorištavanja nije specifična za Intelove procesore - nakon odgovarajuće prilagodbe, potvrđeno je da exploit radi na sustavima s CPU-ima drugih proizvođača, uključujući Apple M1 temeljen na ARM arhitekturi. Nakon manjih prilagodbi, exploit također radi na drugim operativnim sustavima i drugim preglednicima koji se temelje na Chromium motoru.

U okruženju koje se temelji na standardnim procesorima Chrome 88 i Intel Skylake, došlo je do curenja podataka iz procesa odgovornog za obradu web sadržaja u trenutnoj kartici Chrome (proces renderiranja), brzinom od 1 kilobajta u sekundi. Dodatno, razvijeni su alternativni prototipovi, na primjer, exploit koji omogućuje, po cijenu smanjenja stabilnosti, povećanje brzine curenja na 8kB/s pri korištenju timera performance.now() s točnošću od 5 mikrosekundi (0.005 milisekundi) . Pripremljena je i varijanta koja radi s preciznošću mjerača vremena od jedne milisekunde, a koja se može koristiti za organiziranje pristupa memoriji drugog procesa brzinom od oko 60 bajtova u sekundi.

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

Treći dio izravno iskorištava ranjivost Spectre za određivanje sadržaja memorije trenutnog procesa kao rezultat stvaranja uvjeta za spekulativno izvođenje određenih operacija, čiji rezultat odbacuje procesor nakon utvrđivanja neuspješnog predviđanja, ali izvođenje tragovi se pohranjuju u opću predmemoriju i mogu se obnoviti korištenjem metoda za određivanje sadržaja predmemorije putem kanala trećih strana koji analiziraju promjene u vremenu pristupa predmemoriranim i ne-keširanim podacima.

Predložena tehnika iskorištavanja eliminira visokoprecizne mjerače vremena dostupne putem API-ja performance.now() i bez podrške za tip SharedArrayBuffer, koji omogućuje stvaranje nizova u zajedničkoj memoriji. Eksploatacija uključuje Spectre gadget, koji uzrokuje kontrolirano spekulativno izvršavanje koda, i analizator curenja bočnog kanala, koji utvrđuje podatke dobivene tijekom spekulativnog izvršavanja koji su dospjeli u predmemoriju.

Gadget je implementiran pomoću niza JavaScripta, u kojem se pokušava pristupiti području izvan granica međuspremnika, što utječe na stanje bloka predviđanja grananja zbog provjere veličine međuspremnika koju je dodao kompajler (procesor, gledajući unaprijed , spekulativno izvodi pristup, ali vraća stanje nakon provjere). Za analizu sadržaja predmemorije u uvjetima nedovoljne točnosti mjerača vremena, predložena je metoda koja obmanjuje strategiju izbacivanja predmemorije Tree-PLRU koja se koristi u procesorima i omogućuje, povećanjem broja ciklusa, značajno povećanje vremenske razlike pri vraćanju vrijednost iz predmemorije i kada nema vrijednosti u predmemoriji.

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

Kako bi se smanjio rizik, vlasnici web-mjesta se potiču da koriste nedavno implementirana pravila otvaranja više izvora (COOP), pravila ugrađivanja različitih izvora (COEP), pravila resursa različitih izvora (CORP), zahtjev za dohvat metapodataka, X-Frame-Opcije, X -Content-Type-Options i kolačići SameSite. Ovi mehanizmi ne štite izravno od napada, ali omogućuju izolaciju podataka o web-mjestu od curenja u procese u kojima se može izvršiti napadačev JavaScript kod (curenje se događa iz memorije trenutnog procesa, u kojem se, osim napadačevog koda, nalaze i podaci s drugog mjesta otvorenog na istoj kartici). Glavna ideja je u različitim procesima odvojiti izvršavanje koda web-mjesta od koda treće strane dobivenog iz nepouzdanih izvora, na primjer, uključenog putem iframea.



Izvor: opennet.ru

Dodajte komentar