Ny teknik för att utnyttja Spectre-sårbarheter i Chrome

En grupp forskare från amerikanska, australiensiska och israeliska universitet har föreslagit en ny sidokanalattackteknik för att utnyttja sårbarheter i Spectre-klass i webbläsare baserade på Chromium-motorn. Attacken, med kodnamnet Spook.js, låter dig kringgå webbplatsisoleringsmekanismen genom att köra JavaScript-kod och läsa innehållet i hela adressutrymmet för den aktuella processen, dvs. åtkomst till data från sidor som körs på andra flikar, men som bearbetas i samma process.

Eftersom Chrome kör olika webbplatser i olika processer är möjligheten att utföra praktiska attacker begränsad till tjänster som tillåter olika användare att vara värd för sina sidor. Metoden gör det möjligt att, från en sida där angriparen har möjlighet att bädda in sin JavaScript-kod, fastställa förekomsten av andra sidor som öppnats av användaren från samma webbplats och extrahera konfidentiell information från dem, till exempel autentiseringsuppgifter eller bankuppgifter som ersätts genom systemet med automatisk fyllning av fält i webbformulär. Som en demonstration visas hur du kan attackera någon annans blogg på Tumblr-tjänsten om dess ägare öppnar en angripares blogg som är värd på samma tjänst på en annan flik.

Ett annat alternativ för att använda metoden är en attack mot webbläsartillägg, som gör att man, när man installerar ett tillägg som kontrolleras av angriparen, kan extrahera data från andra tillägg. Som ett exempel visar vi hur du genom att installera ett skadligt tillägg kan extrahera konfidentiell information från LastPass lösenordshanteraren.

Forskare har publicerat en prototyp av en exploit som fungerar i Chrome 89 på system med en CPUIntel i7-6700K och i7-7600U. När man skapade exploateringen användes prototyper av JavaScript-kod som tidigare publicerats av Google för att utföra attacker av Spectre-klass. Det noteras att forskarna kunde förbereda arbetsexploater för system baserade på Intel- och Apple M1-processorer, som gör det möjligt att organisera minnesläsning med en hastighet av 500 byte per sekund och en noggrannhet på 96%. Det antas att metoden även är tillämpbar på AMD-processorer, men det var inte möjligt att förbereda en fullt fungerande exploatering.

Attacken är tillämplig på alla webbläsare baserade på Chromium-motorn, inklusive Google Chrome, Microsoft Edge och Brave. Forskarna tror också att metoden kan anpassas för att fungera med Firefox, men eftersom Firefox-motorn skiljer sig väldigt mycket från Chrome lämnas arbetet med att skapa en sådan exploit för framtiden.

För att skydda mot webbläsarbaserade attacker relaterade till spekulativ exekvering av instruktioner implementerar Chrome segmentering av adressutrymme - sandlådeisolering tillåter JavaScript att endast fungera med 32-bitarspekare och delar minnet av hanterare i osammanhängande 4GB-högar. För att ge tillgång till hela processens adressutrymme och kringgå 32-bitars begränsningen använde forskarna en teknik som kallas Type Confusion, som tvingar JavaScript-motorn att bearbeta ett objekt med en felaktig typ, vilket gör det möjligt att bilda en 64-bitars pekare baserad på en kombination av två 32-bitars värden.

Kärnan i attacken är att vid bearbetning av ett speciellt utformat skadligt objekt i JavaScript-motorn skapas förhållanden som leder till spekulativ exekvering av instruktioner som kommer åt arrayen. Objektet väljs på ett sådant sätt att de angriparkontrollerade fälten placeras i området där 64-bitarspekaren används. Eftersom typen av det skadliga objektet inte matchar typen av array som bearbetas, blockeras sådana åtgärder under normala förhållanden i Chrome av en mekanism för att deoptimera koden som används för att komma åt arrayer. För att lösa detta problem placeras koden för Type Confusion-attacken i ett villkorligt "om"-block, som inte aktiveras under normala förhållanden, utan exekveras i spekulativt läge, om processorn felaktigt förutsäger ytterligare förgrening.

Som ett resultat får processorn spekulativt åtkomst till den genererade 64-bitarspekaren och rullar tillbaka tillståndet efter att ha fastställt en misslyckad förutsägelse, men spåren av exekveringen finns kvar i den delade cachen och kan återställas med hjälp av sidokanalscachedetekteringsmetoder som analyserar förändringar i åtkomsttider till cachad och uncachad data. För att analysera innehållet i cachen under förhållanden med otillräcklig noggrannhet av timern som är tillgänglig i JavaScript, används en metod som föreslagits av Google, som lurar Tree-PLRU-cache-eviction-strategin som används i processorer och tillåter, genom att öka antalet cykler, att öka skillnaden i tid avsevärt när ett värde är närvarande och frånvarande i cachen. .

Källa: opennet.ru

Lägg en kommentar