Útok extrakcie CPU cache implementovaný vo webovom prehliadači bez JavaScriptu

Tím výskumníkov z niekoľkých amerických, izraelských a austrálskych univerzít vyvinul tri útoky, ktoré bežia na webové prehliadače a získavajú informácie o obsahu vyrovnávacej pamäte procesora. Jedna metóda funguje v prehliadačoch bez JavaScriptu a ďalšie dve obchádzajú existujúce metódy ochrany pred útokmi z bočných kanálov vrátane tých, ktoré sa používajú v prehliadači Tor a DeterFox. Kód na demonštráciu útokov, ako aj serverové komponenty potrebné na útoky, sú zverejnené na GitHub.

Na analýzu obsahu vyrovnávacej pamäte používajú všetky útoky metódu Prime+Probe, ktorá zahŕňa naplnenie vyrovnávacej pamäte štandardnou sadou hodnôt a zisťovanie zmien meraním času prístupu k nim pri ich dopĺňaní. Na obídenie bezpečnostných mechanizmov prítomných v prehliadačoch, ktoré narúšajú presné meranie času, sa v dvoch možnostiach odvolá na server DNS alebo WebSocket kontrolovaný útočníkom, ktorý uchováva záznam o čase prijatých požiadaviek. V jednom uskutočnení sa ako časová referencia používa pevný čas odozvy DNS.

Merania vykonané pomocou externých serverov DNS alebo WebSocket pomocou klasifikačného systému založeného na strojovom učení boli dostatočné na predpovedanie hodnôt s presnosťou až 98 % v najoptimálnejšom scenári (priemer 80 – 90 %). Metódy útoku boli testované na rôznych hardvérových platformách (Intel, AMD Ryzen, Apple M1, Samsung Exynos) a ukázali sa ako univerzálne.

Útok extrakcie CPU cache implementovaný vo webovom prehliadači bez JavaScriptu

Prvý variant útoku DNS Racing využíva klasickú implementáciu metódy Prime+Probe pomocou JavaScriptových polí. Rozdiely sa zmenšujú na použitie externého časovača založeného na DNS a obslužného programu pri chybe, ktorý sa spustí pri pokuse o načítanie obrázka z neexistujúcej domény. Externý časovač umožňuje útok Prime+Probe na prehliadače, ktoré obmedzujú alebo úplne zakazujú prístup k časovačom JavaScript.

Pre server DNS umiestnený v rovnakej ethernetovej sieti sa presnosť časovača odhaduje na približne 2 ms, čo je dostatočné na vykonanie útoku na bočný kanál (pre porovnanie, presnosť štandardného časovača JavaScript v prehliadači Tor je znížená na 100 ms). Pri útoku nie je potrebná kontrola nad serverom DNS, pretože čas vykonania operácie je zvolený tak, aby čas odozvy z DNS slúžil ako znak skoršieho dokončenia kontroly (v závislosti od toho, či bol spustený obslužný program onerror). skôr alebo neskôr sa vyvodí záver o rýchlosti operácie kontroly s vyrovnávacou pamäťou).

Druhá metóda útoku, „String and Sock“, má za cieľ obísť bezpečnostné techniky, ktoré obmedzujú nízkoúrovňové používanie polí v JavaScripte. Namiesto polí String and Sock používa operácie na veľmi veľkých reťazcoch, ktorých veľkosť je zvolená tak, aby premenná pokrývala celú vyrovnávaciu pamäť LLC (Last level cache). Ďalej sa pomocou funkcie indexOf() vyhľadá v reťazci malý podreťazec, ktorý spočiatku v zdrojovom reťazci chýba, t.j. výsledkom operácie vyhľadávania je iterácia celého reťazca. Keďže veľkosť riadku zodpovedá veľkosti vyrovnávacej pamäte LLC, skenovanie vám umožňuje vykonať operáciu kontroly vyrovnávacej pamäte bez manipulácie s poľami. Na meranie oneskorení sa namiesto DNS uskutoční volanie na server WebSocket kontrolovaný útočníkom - pred a po dokončení operácie vyhľadávania sa v riadku odošlú dotazy, na základe ktorých server vypočíta oneskorenie použité na analýzu vyrovnávacej pamäte. obsahu.

Tretí variant útoku „CSS PP0“ je implementovaný prostredníctvom HTML a CSS a môže fungovať v prehliadačoch s vypnutým JavaScriptom. Metóda je podobná ako „String and Sock“, ale nie je viazaná na JavaScript. Počas útoku sa vygeneruje sada CSS selektorov, ktoré vyhľadávajú podľa masky. Počiatočný veľký reťazec, ktorý vyplní vyrovnávaciu pamäť, sa nastaví vytvorením značky div s veľmi veľkým názvom triedy. Vo vnútri je sada ďalších divov s vlastnými identifikátormi. Každý z týchto vnorených prvkov div má svoj vlastný štýl so selektorom, ktorý hľadá podreťazec. Pri vykresľovaní stránky sa prehliadač najprv pokúša spracovať vnútorné prvky div, čo má za následok operáciu vyhľadávania vo veľkom riadku. Vyhľadávanie sa vykonáva pomocou zámerne chýbajúcej masky a vedie k iterácii cez celý riadok, po ktorej sa spustí podmienka „nie“ a vykoná sa pokus o načítanie obrázka pozadia odkazujúceho na náhodné domény: #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 ...

Subdomény sú obsluhované serverom DNS útočníka, ktorý dokáže merať oneskorenia pri prijímaní požiadaviek. Server DNS vydáva doménu NXDOMAIN pre všetky požiadavky a uchováva záznam o presnom čase žiadostí. V dôsledku spracovania množiny divov dostane útočníkov server DNS sériu požiadaviek, ktorých oneskorenia korelujú s výsledkom kontroly obsahu vyrovnávacej pamäte.

Útok extrakcie CPU cache implementovaný vo webovom prehliadači bez JavaScriptu


Zdroj: opennet.ru

Pridať komentár