Nová technika na využívanie zraniteľností Spectre v prehliadači Chrome

Skupina výskumníkov z amerických, austrálskych a izraelských univerzít navrhla novú techniku ​​útoku na bočný kanál na využitie zraniteľností triedy Spectre v prehliadačoch založených na motore Chromium. Útok s kódovým označením Spook.js umožňuje obísť mechanizmus izolácie stránok spustením kódu JavaScript a prečítať obsah celého adresného priestoru aktuálneho procesu, t.j. pristupovať k údajom zo stránok spustených na iných kartách, ale spracovávaných v rovnakom procese.

Keďže Chrome prevádzkuje rôzne stránky v rôznych procesoch, schopnosť vykonávať praktické útoky je obmedzená na služby, ktoré umožňujú rôznym používateľom hostiť ich stránky. Metóda umožňuje zo stránky, do ktorej má útočník možnosť vložiť svoj JavaScript kód, zistiť prítomnosť iných stránok otvorených používateľom z tej istej stránky a získať z nich dôverné informácie, napríklad nahradené poverenia alebo bankové údaje. systémom automatického vypĺňania polí vo webových formulároch. Ako ukážka je znázornené, ako môžete zaútočiť na blog niekoho iného v službe Tumblr, ak jeho vlastník otvorí blog útočníkov hostený v rovnakej službe na inej karte.

Ďalšou možnosťou využitia metódy je útok na doplnky prehliadača, ktorý umožňuje pri inštalácii doplnku ovládaného útočníkom extrahovať dáta z iných doplnkov. Ako príklad uvádzame, ako môžete inštaláciou škodlivého doplnku získať dôverné informácie zo správcu hesiel LastPass.

Výskumníci zverejnili prototyp exploitu, ktorý funguje v Chrome 89 na systémoch s CPUIntel i7-6700K a i7-7600U. Pri vytváraní exploitu boli prototypy kódu JavaScript, ktorý predtým zverejnil Google, použité na uskutočnenie útokov triedy Spectre. Je potrebné poznamenať, že výskumníci boli schopní pripraviť pracovné exploity pre systémy založené na procesoroch Intel a Apple M1, ktoré umožňujú organizovať čítanie pamäte rýchlosťou 500 bajtov za sekundu a presnosťou 96%. Predpokladá sa, že metóda je použiteľná aj pre procesory AMD, ale nepodarilo sa pripraviť plne funkčný exploit.

Útok je použiteľný pre všetky prehliadače založené na jadre Chromium vrátane Google Chrome, Microsoft Edge a Brave. Výskumníci sa tiež domnievajú, že metóda môže byť prispôsobená pre prácu s Firefoxom, ale keďže Firefox engine je veľmi odlišný od Chrome, práca na vytvorení takéhoto exploitu je ponechaná na budúcnosť.

Na ochranu pred útokmi založenými na prehliadači súvisiacimi so špekulatívnym vykonávaním inštrukcií Chrome implementuje segmentáciu adresného priestoru – izolácia karantény umožňuje JavaScriptu pracovať iba s 32-bitovými ukazovateľmi a zdieľa pamäť obslužných programov v nesúvislých 4 GB hromadách. Na poskytnutie prístupu k celému adresnému priestoru procesu a obídenie 32-bitového obmedzenia výskumníci použili techniku ​​zvanú Type Confusion, ktorá núti engine JavaScript spracovať objekt s nesprávnym typom, čo umožňuje vytvoriť 64-bitový ukazovateľ založený na kombinácii dvoch 32-bitových hodnôt.

Podstata útoku spočíva v tom, že pri spracovaní špeciálne navrhnutého škodlivého objektu v engine JavaScript sa vytvoria podmienky, ktoré vedú k špekulatívnemu vykonávaniu pokynov, ktoré pristupujú k poli. Objekt je vybraný tak, že polia ovládané útočníkom sú umiestnené v oblasti, kde sa používa 64-bitový ukazovateľ. Keďže typ škodlivého objektu nezodpovedá typu spracovávaného poľa, za normálnych podmienok sú takéto akcie v prehliadači Chrome blokované mechanizmom na deoptimalizáciu kódu používaného na prístup k poliam. Na vyriešenie tohto problému je kód pre útok Type Confusion umiestnený do podmieneného bloku „if“, ktorý sa za normálnych podmienok neaktivuje, ale vykoná sa v špekulatívnom režime, ak procesor nesprávne predpovedá ďalšie vetvenie.

Výsledkom je, že procesor špekulatívne pristupuje k vygenerovanému 64-bitovému ukazovateľu a vráti späť stav po určení neúspešnej predikcie, ale stopy vykonania zostávajú v zdieľanej vyrovnávacej pamäti a možno ich obnoviť pomocou metód detekcie vyrovnávacej pamäte bočného kanála, ktoré analyzujú zmeny v časy prístupu k údajom uloženým vo vyrovnávacej pamäti a údajom uloženým vo vyrovnávacej pamäti. Na analýzu obsahu vyrovnávacej pamäte v podmienkach nedostatočnej presnosti časovača dostupného v JavaScripte sa používa metóda navrhnutá spoločnosťou Google, ktorá klame stratégiu vymazania vyrovnávacej pamäte Tree-PLRU používanú v procesoroch a umožňuje zvýšením počtu cyklov výrazne zvýšiť rozdiel v čase, keď je hodnota prítomná a neprítomná vo vyrovnávacej pamäti.

Zdroj: opennet.ru

Pridať komentár