Nová technika pro využívání zranitelností třídy Spectre v prohlížeči Chrome

Skupina výzkumníků z amerických, australských a izraelských univerzit navrhla novou techniku ​​útoku postranním kanálem, která by využila zranitelnosti třídy Spectre v prohlížečích založených na enginu Chromium. Útok s kódovým označením Spook.js umožňuje obejít mechanismus izolace stránek spuštěním kódu JavaScript a načíst obsah celého adresního prostoru aktuálního procesu, tzn. přistupovat k údajům ze stránek spuštěných na jiných kartách, ale zpracovávaných ve stejném procesu.

Vzhledem k tomu, že Chrome provozuje různé weby v různých procesech, je schopnost provádět praktické útoky omezena na služby, které umožňují různým uživatelům hostovat jejich stránky. Tato metoda umožňuje ze stránky, do které má útočník možnost vložit svůj JavaScript kód, určit přítomnost dalších stránek otevřených uživatelem ze stejného webu a získat z nich důvěrné informace, například nahrazené přihlašovací údaje nebo bankovní spojení. systémem automatického vyplňování polí ve webových formulářích. Jako ukázka je ukázáno, jak můžete zaútočit na blog někoho jiného ve službě Tumblr, pokud jeho vlastník otevře blog útočníků hostovaný ve stejné službě na jiné kartě.

Další možností využití metody je útok na doplňky prohlížeče, který umožňuje při instalaci doplňku ovládaného útočníkem extrahovat data z jiných doplňků. Jako příklad ukážeme, jak instalací škodlivého doplňku můžete získat důvěrné informace ze správce hesel LastPass.

Výzkumníci zveřejnili prototyp exploitu, který funguje v Chrome 89 na systémech s CPUIntel i7-6700K a i7-7600U. Při vytváření exploitu byly k provedení útoků třídy Spectre použity prototypy kódu JavaScript dříve publikované společností Google. Je třeba poznamenat, že výzkumníci byli schopni připravit pracovní exploity pro systémy založené na procesorech Intel a Apple M1, které umožňují organizovat čtení paměti rychlostí 500 bajtů za sekundu a přesností 96 %. Předpokládá se, že metoda je použitelná i pro procesory AMD, ale nepodařilo se připravit plně funkční exploit.

Útok je použitelný pro všechny prohlížeče založené na enginu Chromium, včetně Google Chrome, Microsoft Edge a Brave. Výzkumníci se také domnívají, že metodu lze přizpůsobit pro práci s Firefoxem, ale jelikož se engine Firefoxu od Chrome velmi liší, práce na vytvoření takového exploitu je ponechána na budoucnost.

Pro ochranu před útoky založenými na prohlížeči souvisejícími se spekulativním prováděním instrukcí Chrome implementuje segmentaci adresního prostoru – izolace sandboxu umožňuje JavaScriptu pracovat pouze s 32bitovými ukazateli a sdílí paměť obslužných rutin v nesouvislých 4GB hromadách. K zajištění přístupu k celému adresovému prostoru procesu a obejití 32bitového omezení použili vědci techniku ​​nazvanou Type Confusion, která nutí stroj JavaScript zpracovat objekt s nesprávným typem, což umožňuje vytvořit 64bitový ukazatel založený na kombinaci dvou 32bitových hodnot.

Podstatou útoku je, že při zpracování speciálně navrženého škodlivého objektu v JavaScriptovém enginu se vytvoří podmínky, které vedou ke spekulativnímu provádění instrukcí, které přistupují k poli. Objekt je vybrán tak, že pole ovládaná útočníkem jsou umístěna v oblasti, kde je použit 64bitový ukazatel. Protože typ škodlivého objektu neodpovídá typu zpracovávaného pole, za normálních podmínek jsou takové akce v prohlížeči Chrome blokovány mechanismem pro deoptimalizaci kódu používaného pro přístup k polím. K vyřešení tohoto problému je kód pro útok Type Confusion umístěn do podmíněného bloku „if“, který se za normálních podmínek neaktivuje, ale je spuštěn ve spekulativním režimu, pokud procesor nesprávně předpovídá další větvení.

Výsledkem je, že procesor spekulativně přistupuje k vygenerovanému 64bitovému ukazateli a po zjištění neúspěšné predikce vrátí stav zpět, ale stopy po provedení zůstávají ve sdílené mezipaměti a lze je obnovit pomocí metod detekce mezipaměti postranního kanálu, které analyzují změny v doby přístupu k datům uloženým v mezipaměti a datům bez mezipaměti. K analýze obsahu mezipaměti v podmínkách nedostatečné přesnosti časovače dostupného v JavaScriptu se používá metoda navržená společností Google, která klame 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, kdy je hodnota přítomna a nepřítomná v mezipaměti.

Zdroj: opennet.ru

Přidat komentář