Ny teknik til at udnytte Spectre-sårbarheder i Chrome

En gruppe forskere fra amerikanske, australske og israelske universiteter har foreslået en ny side-kanal angrebsteknik til at udnytte Spectre-klassens sårbarheder i browsere baseret på Chromium-motoren. Angrebet, kodenavnet Spook.js, giver dig mulighed for at omgå webstedsisoleringsmekanismen ved at køre JavaScript-kode og læse indholdet af hele adresserummet i den aktuelle proces, dvs. få adgang til data fra sider, der kører på andre faner, men behandles i samme proces.

Da Chrome kører forskellige websteder i forskellige processer, er muligheden for at udføre praktiske angreb begrænset til tjenester, der tillader forskellige brugere at hoste deres sider. Metoden gør det muligt, fra en side, hvor angriberen har mulighed for at indlejre sin JavaScript-kode, at bestemme tilstedeværelsen af ​​andre sider åbnet af brugeren fra det samme websted og udtrække fortrolige oplysninger fra dem, f.eks. legitimationsoplysninger eller bankoplysninger erstattet ved systemet med automatisk udfyldning af felter i webformularer. Som en demonstration er det vist, hvordan du kan angribe en andens blog på Tumblr-tjenesten, hvis dens ejer åbner en angribers blog, der er hostet på den samme tjeneste i en anden fane.

En anden mulighed for at bruge metoden er et angreb på browser-add-ons, som gør det muligt, når man installerer en add-on styret af angriberen, at udtrække data fra andre add-ons. Som et eksempel viser vi, hvordan du ved at installere en ondsindet tilføjelse kan udtrække fortrolige oplysninger fra LastPass password manager.

Forskere har offentliggjort en prototype af en udnyttelse, der fungerer i Chrome 89 på systemer med en CPUIntel i7-6700K og i7-7600U. Ved oprettelsen af ​​udnyttelsen blev prototyper af JavaScript-kode, der tidligere var udgivet af Google, brugt til at udføre angreb i Spectre-klassen. Det bemærkes, at forskerne var i stand til at forberede arbejdsudnyttelser til systemer baseret på Intel- og Apple M1-processorer, som gør det muligt at organisere hukommelseslæsning med en hastighed på 500 bytes i sekundet og en nøjagtighed på 96%. Det antages, at metoden også er anvendelig til AMD-processorer, men det var ikke muligt at udarbejde en fuldt funktionel udnyttelse.

Angrebet gælder for alle browsere baseret på Chromium-motoren, inklusive Google Chrome, Microsoft Edge og Brave. Forskerne mener også, at metoden kan tilpasses til at fungere med Firefox, men da Firefox-motoren er meget anderledes end Chrome, er arbejdet med at skabe en sådan udnyttelse overladt til fremtiden.

For at beskytte mod browserbaserede angreb relateret til spekulativ udførelse af instruktioner implementerer Chrome adresserumssegmentering - sandbox-isolering tillader JavaScript kun at arbejde med 32-bit pointere og deler hukommelsen hos behandlere i usammenhængende 4 GB-dynger. For at give adgang til hele processens adresserum og omgå 32-bit begrænsningen brugte forskerne en teknik kaldet Type Confusion, som tvinger JavaScript-motoren til at behandle et objekt med en forkert type, hvilket gør det muligt at danne en 64-bit pointer baseret på en kombination af to 32-bit værdier.

Essensen af ​​angrebet er, at der ved behandling af et specielt designet ondsindet objekt i JavaScript-motoren skabes forhold, der fører til spekulativ udførelse af instruktioner, der tilgår arrayet. Objektet er valgt på en sådan måde, at de angriberkontrollerede felter placeres i det område, hvor 64-bit-markøren bruges. Da typen af ​​det ondsindede objekt ikke matcher typen af ​​det array, der behandles, blokeres sådanne handlinger under normale forhold i Chrome af en mekanisme til deoptimering af den kode, der bruges til at få adgang til arrays. For at løse dette problem placeres koden til Type Confusion-angrebet i en betinget "hvis"-blok, som ikke aktiveres under normale forhold, men udføres i spekulativ tilstand, hvis processoren fejlagtigt forudsiger yderligere forgrening.

Som et resultat får processoren spekulativt adgang til den genererede 64-bit pointer og ruller tilstanden tilbage efter at have fastslået en mislykket forudsigelse, men spor af udførelsen forbliver i den delte cache og kan gendannes ved hjælp af side-channel cache detektionsmetoder, der analyserer ændringer i adgangstider til cachelagrede og ikke-cachelagrede data. For at analysere indholdet af cachen under forhold med utilstrækkelig nøjagtighed af timeren, der er tilgængelig i JavaScript, bruges en metode foreslået af Google, som bedrager Tree-PLRU cache-eviction-strategien, der bruges i processorer og tillader, ved at øge antallet af cyklusser, at øge forskellen i tid markant, når en værdi er til stede og fraværende i cachen. .

Kilde: opennet.ru

Tilføj en kommentar