Nová technika exploatace zranitelností třídy Spectre v Chromu

Skupina výzkumníků z amerických, australských a izraelských univerzit navrhla novou techniku útoku pomocí bočních kanálů pro zneužití zranitelností třídy Spectre v prohlížečích založených na enginu Chromium. Útok, který dostal kódové jméno Spook.js, umožňuje prostřednictvím spuštění JavaScriptového kódu obejít mechanismus izolace stránek a přečíst obsah celého adresního prostoru aktuálního procesu, tedy získat přístup k datům stránek spuštěných v jiných záložkách, ale zpracovávaných v jednom procesu.

Jelikož Chrome spouští různé stránky v různých procesech, je možnost provádění praktických útoků omezená službami, které umožňují různým uživatelům umisťovat své stránky. Metoda umožňuje ze stránky, do které má útočník možnost vložit svůj JavaScriptový kód, zjistit přítomnost dalších otevřených stránek uživatele ze stejného webu a extrahovat z nich citlivé informace, například přihlašovací údaje nebo bankovní údaje, které do systému automatického vyplňování polí vyplňuje systém. Jako demonstrace bylo ukázáno, jak lze cílit na cizí blog na platformě Tumblr, pokud jeho vlastník otevře v jiné záložce blog útočníků, umístěný na téže platformě.

Přehrát video

Další variantou použití metody je útok na rozšíření prohlížeče, který umožňuje při instalaci rozšíření, které je pod kontrolou útočníků, získat data z jiných rozšíření. Jako příklad bylo ukázáno, jak lze po nainstalování škodlivého rozšíření extrahovat citlivé informace z менеджера hesel LastPass.

Přehrát video

Výzkumníci zveřejnili prototyp exploitů, který funguje v Chrome 89 na systémech s CPU Intel i7-6700K a i7-7600U. Při vytváření exploitu byly použity dříve zveřejněné prototypy JavaScriptového kódu od společnosti Google pro provádění útoků třídy Spectre. Uvádí se, že výzkumníkům se podařilo připravit funkční 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 s přesností 96 %. Předpokládá se, že metoda je použitelná i pro procesory AMD, ale plně funkční exploit se připravit nepodařilo.

Útok je použitelný na jakékoliv prohlížeče založené na enginu Chromium, včetně Google Chrome, Microsoft Edge a Brave. Výzkumníci také věří, že metodu lze přizpůsobit pro Firefox, ale protože se engine Firefox výrazně liší od Chrome, práce na vytvoření podobného exploitu byla odložena na později.

Pro ochranu před útoky spojenými se spekulativním prováděním instrukcí přes prohlížeč byl v Chrome implementován segmentace adresového prostoru — sandboxizace umožňuje provoz JavaScriptu pouze s 32bitovými ukazateli a odděluje paměť handlerů do nepřekrývajících se 4GB hald (heap). Aby bylo možné přistupovat ke všem adresovým prostorům procesu a obcházet 32bitového omezení, výzkumníci použili techniku Type Confusion, která nutí JavaScript engine zpracovat objekt s nesprávným typem, což umožňuje vytvořit 64bitový ukazatel na základě kombinace dvou 32bitových hodnot.

Podstatou útoku je to, že při zpracování speciálně upraveného škodlivého objektu v JavaScript engine se vytvářejí podmínky vedoucí k spekulativnímu provedení instrukcí, které zajišťují přístup k poli. Objekt je vybírán tak, aby kontrolovaná pole útočníky byla umístěna v oblasti, kde je používán 64bitový ukazatel. Jelikož typ škodlivého objektu neodpovídá typu zpracovávaného pole, jsou takové akce v normálních podmínkách běžně blokovány v Chrome mechanismem deoptimalizace kódu používaným pro přístup k polím. K vyřešení tohoto problému je kód pro útok Type Confusion vytažen do podmínkového bloku „if“, který není aktivován za běžných podmínek, ale je prováděn ve spekulativním režimu při nesprávné předpovědi procesoru ohledně dalšího větvení.

Processor spekulativně přistupuje k vytvořenému 64-bitovému ukazateli a obnovuje stav poté, co je určen neúspěšný odhad. Nicméně stopy vykonávání zůstávají v sdílené cache a mohou být obnoveny pomocí metod určování obsahu cache prostřednictvím bočních kanálů, které analyzují změny času přístupu k uloženým a neuloženým datům. Pro analýzu obsahu cache v podmínkách nedostatečné přesnosti časovače dostupného v JavaScriptu se používá Googlem navržená metoda, která obchází strategii vyřazování dat z cache Tree-PLRU a umožňuje výrazně zvýšit rozdíl v čase mezi přítomností a nepřítomností hodnoty v cache díky zvýšení počtu cyklů.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster