Google demonstruje zneužití zranitelnosti Spectre spuštěním JavaScriptu v prohlížeči

Google zveřejnil několik prototypů exploitů, které ukazují možnost zneužití zranitelností třídy Spectre při spouštění kódu JavaScript v prohlížeči, čímž obchází dříve přidané metody ochrany. Exploits lze použít k získání přístupu k paměti procesu, který zpracovává webový obsah na aktuální kartě. Pro otestování fungování exploitu byla spuštěna stránka leaky.page a kód popisující logiku práce byl zveřejněn na GitHubu.

Navrhovaný prototyp je navržen tak, aby útočil na systémy s procesory Intel Core i7-6500U v prostředí Linuxu a Chrome 88. Pro použití exploitu v jiných prostředích jsou nutné změny. Způsob využití není specifický pro procesory Intel - po patřičné adaptaci bylo potvrzeno exploit pracovat na systémech s CPU jiných výrobců, včetně Apple M1 na architektuře ARM. Po drobných úpravách exploit funguje i na jiných operačních systémech a dalších prohlížečích založených na enginu Chromium.

V prostředí založeném na standardních procesorech Chrome 88 a Intel Skylake unikala data z procesu odpovědného za zpracování webového obsahu na aktuální kartě Chrome (proces vykreslování) rychlostí 1 kilobajt za sekundu. Kromě toho byly vyvinuty alternativní prototypy, například exploit, který umožňuje za cenu snížení stability zvýšit rychlost úniku na 8 kB/s při použití časovače performance.now() s přesností 5 mikrosekund (0.005 milisekundy) . Připravena byla i varianta pracující s přesností časovače na jednu milisekundu, pomocí které by bylo možné organizovat přístup do paměti jiného procesu rychlostí asi 60 bajtů za vteřinu.

Publikovaný demo kód se skládá ze tří částí. První část kalibruje časovač pro odhad doby provádění operací požadovaných k obnovení dat ponechaných v mezipaměti procesoru v důsledku spekulativního provádění instrukcí CPU. Druhá část určuje rozložení paměti použité při alokaci pole JavaScript.

Třetí část přímo využívá zranitelnost Spectre k určení obsahu paměti aktuálního procesu v důsledku vytváření podmínek pro spekulativní provádění určitých operací, jejichž výsledek je po zjištění neúspěšné predikce procesorem zahozen, avšak provedení stopy jsou uloženy v obecné mezipaměti a lze je obnovit pomocí metod pro určování obsahu mezipaměti kanály třetích stran, které analyzují změny v době přístupu k datům uloženým v mezipaměti a neuloženým datům.

Navrhovaná technika využívání eliminuje vysoce přesné časovače dostupné prostřednictvím rozhraní performance.now() API a bez podpory pro typ SharedArrayBuffer, který umožňuje vytvářet pole ve sdílené paměti. Exploit zahrnuje gadget Spectre, který způsobuje řízené spekulativní spouštění kódu, a analyzátor úniku bočního kanálu, který určuje data získaná během spekulativního provádění, která se dostala do mezipaměti.

Gadget je implementován pomocí pole JavaScript, ve kterém je učiněn pokus o přístup do oblasti mimo hranice vyrovnávací paměti, což ovlivňuje stav bloku predikce větvení kvůli kontrole velikosti vyrovnávací paměti přidané kompilátorem (procesor, dívá se dopředu , spekulativně provede přístup, ale po kontrole vrátí stav zpět). Pro analýzu obsahu mezipaměti za podmínek nedostatečné přesnosti časovače je navržena metoda, která oklame strategii vyřazení mezipaměti Tree-PLRU používanou v procesorech a umožňuje zvýšením počtu cyklů výrazně zvýšit rozdíl v čase při vracení hodnota z mezipaměti a když v mezipaměti není žádná hodnota.

Je třeba poznamenat, že Google zveřejnil prototyp exploitu, aby ukázal realističnost útoků využívajících zranitelnosti třídy Spectre a povzbudil webové vývojáře, aby používali techniky, které minimalizují rizika plynoucí z takových útoků. Google se zároveň domnívá, že bez výrazné revize navrhovaného prototypu nelze vytvořit univerzální exploity, které jsou připraveny nejen k předvedení, ale i k širokému použití.

Aby se snížilo riziko, doporučujeme vlastníkům stránek, aby používali nedávno implementované zásady pro otevírání mezi původy (COOP), zásady pro vkládání mezi původy (COEP), zásady pro zdroje mezi původy (CORP), požadavek na načtení metadat, možnosti X-Frame, X -Content-Type-Options a SameSite Cookies. Tyto mechanismy přímo nechrání před útoky, ale umožňují izolovat data webu před únikem do procesů, ve kterých může být spuštěn JavaScriptový kód útočníka (k úniku dochází z paměti aktuálního procesu, ve kterém jsou kromě kódu útočníka také data z jiného webu otevřeného na stejné kartě). Hlavní myšlenkou je oddělit v různých procesech provádění kódu webu od kódu třetích stran získaného z nespolehlivých zdrojů, například zahrnutých prostřednictvím prvku iframe.



Zdroj: opennet.ru

Přidat komentář