CPU gyorsítótár-kivonási támadás JavaScript nélküli webböngészőben

Több amerikai, izraeli és ausztrál egyetem kutatóiból álló csoport három olyan támadást fejlesztett ki, amelyek webböngészőkben működnek, hogy információkat nyerjenek ki a CPU gyorsítótár tartalmáról. Az egyik módszer JavaScript nélküli böngészőkben is működik, míg a másik kettő megkerüli a meglévő, oldalcsatornás támadások elleni védelmi módszereket, beleértve a Tor böngészőben és a DeterFoxban használtakat is. A támadásokat bemutató kódot, valamint a támadásokhoz szükséges szerverkomponenseket a GitHubon tették közzé.

Minden támadás a Prime+Probe metódust használja a gyorsítótár tartalmának elemzésére. Ez a módszer magában foglalja a gyorsítótár feltöltését egy referenciaérték-készlettel, és a változások észlelését a hozzáférési idők mérésével az újratöltésük során. A pontos időzítést megakadályozó böngészővédelmi mechanizmusok megkerülése érdekében két változat egy támadó által irányított DNS- vagy WebSocket-kiszolgálóhoz fér hozzá, amely naplózza a kérések időpontjait. Az egyik változat fix DNS-válaszidőt használ referenciaidőként.

A külső DNS- vagy WebSocket-kiszolgálók segítségével végzett mérések egy gépi tanuláson alapuló osztályozási rendszernek köszönhetően a legjobb esetben is akár 98%-os pontosságú értékek előrejelzésére voltak alkalmasak (átlagosan 80-90%). A támadási módszereket különböző hardverplatformokon (Intel, AMD Ryzen, Apple M1, Samsung Exynos) tesztelték, és univerzálisan alkalmazhatónak bizonyultak.

CPU gyorsítótár-kivonási támadás JavaScript nélküli webböngészőben

A „DNS Racing” támadás első verziója a Prime+Probe metódus klasszikus implementációját használja JavaScript tömbök használatával. A különbségek egy külső DNS-alapú időzítő és egyhiba-kezelő használatában rejlenek, amely akkor aktiválódik, amikor egy nem létező domainről próbálnak meg képet betölteni. A külső időzítő lehetővé teszi a Prime+Probe támadás végrehajtását olyan böngészőkben, amelyek korlátozzák vagy teljesen letiltják a JavaScript időzítőkhöz való hozzáférést.

Egy ugyanazon az Ethernet hálózaton található DNS-kiszolgáló esetében az időzítő pontossága körülbelül 2 ms-ra becsülhető, ami elegendő egy oldalcsatornás támadáshoz (összehasonlításképpen, a Tor böngészőben az alapértelmezett JavaScript időzítő pontossága 100 ms-ra csökken). A támadás nem igényli a DNS-kiszolgáló vezérlését, mivel a művelet végrehajtási ideje úgy van beállítva, hogy a DNS válaszideje az ellenőrzés korábbi befejezését jelzi (attól függően, hogy az onerror kezelő korábban vagy később aktiválódik, következtetést von le a gyorsítótár-ellenőrzési művelet sebességéről).

A második támadási módszer, a „String and Sock” (Karakterlánc és zokni) célja a JavaScriptben a tömbök alacsony szintű használatát korlátozó biztonsági intézkedések megkerülése. A tömbök helyett a „String and Sock” nagyon nagy karakterláncokon végzett műveleteket használ, amelyek méretét úgy választják meg, hogy a változó lefedje a teljes LLC-t (utolsó szintű gyorsítótár). Ezután az indexOf() függvény segítségével a karakterláncban egy kis részkarakterláncot keresnek, amely kezdetben hiányzik az eredeti karakterláncból, ami azt jelenti, hogy a keresési művelet felsorolja a teljes karakterláncot. Mivel a karakterlánc mérete megfelel az LLC gyorsítótárának méretének, a keresés lehetővé teszi a gyorsítótár ellenőrzését a tömbök manipulálása nélkül. A késleltetés méréséhez a DNS-t a támadó által vezérelt WebSocket-kiszolgáló hívásával helyettesítik. A kéréseket a keresési művelet előtt és után küldik el, amelyek alapján a szerver Kiszámításra kerül a gyorsítótár tartalmának elemzéséhez használt késleltetés.

A „CSS PP0” támadás harmadik változata HTML-en és CSS-en keresztül valósul meg, és letiltott JavaScripttel rendelkező böngészőkben is működhet. A metódus hasonló a „String and Sock”-hoz, de nem JavaScripthez kötött. A támadás CSS szelektorok halmazát generálja, amelyek maszk alapján keresnek. A gyorsítótárat kitöltő kezdeti nagy karakterláncot egy nagyon nagy osztálynévvel rendelkező div tag létrehozásával adják meg. Belül további, saját azonosítójú div-ek halmaza található. Ezen beágyazott div-ek mindegyikéhez saját stílus tartozik egy szelektorral, amely egy alkarakterláncot keres. Az oldal renderelésekor a böngésző először megpróbálja feldolgozni a belső div-eket, ami egy keresési művelethez vezet a nagy karakterláncban. A keresést egy nyilvánvalóan hiányzó maszk végzi, és a teljes karakterlánc iterációjához vezet, majd a „nem” feltétel aktiválódik, és megpróbál betölteni egy véletlenszerűre hivatkozó háttérképet. domainek: #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 …

Az aldoméneket a támadó DNS-szervere szolgálja ki, amely mérni tudja a kérések fogadásának késéseit. A DNS-szerver minden kéréshez NXDOMAIN értéket ad vissza, és naplózza a kérések pontos időpontját. Egy div-készlet feldolgozása kéréssorozatot eredményez a támadó DNS-szerveréhez, amelyek közötti késések korrelálnak a gyorsítótár-ellenőrzés eredményeivel.

CPU gyorsítótár-kivonási támadás JavaScript nélküli webböngészőben


Forrás: opennet.ru
Vásároljon megbízható tárhelyet DDoS védelemmel, VPS VDS szerverekkel rendelkező webhelyekhez 🔥 Vásároljon megbízható weboldal tárhelyet DDoS védelemmel, VPS VDS szerverekkel | ProHoster