En gruppe forskere fra amerikanske, australske og israelske universiteter har foreslået en ny teknik til angreb via sidekanaler for at udnytte sårbarheder i Spectre-klassen i browsere baseret på Chromium-motoren. Angrebet, som har fået kodeordet Spook.js, gør det muligt at omgå mekanismen for sites isolering og lede JavaScript-kode, hvilket gør det muligt at læse hele adressen for det aktuelle processrum, dvs. få adgang til data fra sider åbnet i andre faner, men som behandles i én proces.
Da Chrome kører forskellige sites i forskellige processer, er muligheden for at udføre praktiske angreb begrænset af tjenester, der gør det muligt for forskellige brugere at hoste deres sider. Metoden gør det muligt fra en side, hvor angriberen har mulighed for at integrere sin JavaScript-kode, at bestemme tilstedeværelsen af andre sider, som brugeren har åbnet fra samme site, og udtrække følsomme oplysninger fra dem, såsom legitimationsoplysninger eller bankoplysninger, der er indsat af autofuldførelsessystemet i webformer. Som demonstration blev det vist, hvordan man kan angribe en andens blog på Tumblr, hvis ejer åbner en anden faneblad med angriberens blog, der er hostet på samme tjeneste.

En anden anvendelse af metoden er angreb på browserudvidelser, der gør det muligt at udtrække data fra andre udvidelser ved installation af en angriberkontrolleret udvidelse. Som eksempel vises det, hvordan man kan udtrække følsomme oplysninger fra LastPass password manager ved at installere en ondsindet udvidelse.

Forskerne har offentliggjort en prototype af et exploit, der fungerer i Chrome 89 på systemer med CPU Intel i7-6700K og i7-7600U. Ved oprettelsen af exploit er der brugt tidligere offentliggjorte prototyper af JavaScript-kode fra Google til at udføre Spectre-klasse angreb. Det bemærkes, at forskerne har været i stand til at forberede funktionelle exploits til systemer baseret på Intel- og Apple M1-processorer, som kan organisere læsning af hukommelse med en hastighed på 500 byte per sekund og en præcision på 96%. Det antages, at metoden også er anvendelig for AMD-processorer, men det lykkedes ikke at forberede et fuldt fungerende exploit.
Angrebet kan anvendes mod enhver browser, der er baseret på Chromium-motoren, herunder Google Chrome, Microsoft Edge og Brave. Forskerne mener også, at metoden kan tilpasses til at fungere med Firefox, men da Firefox-motoren adskiller sig meget fra Chrome, er arbejdet med at skabe en lignende exploit blevet efterladt til fremtiden.
For at beskytte mod angreb relateret til spekulativ udførelse af instruktioner gennem browseren, er der implementeret segmentering af adresseområdet i Chrome — sandbox-isoleringen tillader kun JavaScript at arbejde med 32-bit pointers og opdeler behandlerens hukommelse i ikke-overlappende 4 GB heaps. For at organisere adgangen til hele procesens adresseområde og omgå begrænsningen på 32 bit har forskerne brugt teknikken Type Confusion, som tvinger JavaScript-motoren til at behandle et objekt med en forkert type, hvilket muliggør dannelsen af en 64-bit pointer baseret på en kombination af to 32-bit værdier.
Essensen af angrebet er, at der under behandlingen af et særligt udformet ondsindet objekt i JavaScript-motoren skabes betingelser, der fører til spekulativ udførelse af instruktioner, som giver adgang til et array. Objektet vælges således, at de kontrollerede felter, der styres af angriberne, placeres i et område, hvor der anvendes en 64-bit pointer. Da typen af det ondsindede objekt ikke svarer til typen af det behandlede array, blokeres sådanne handlinger under normale omstændigheder af Chrome's deoptimering af kodemekanismen, der anvendes til adgang til arrays. For at løse dette problem placeres koden for Type Confusion angrebet i et betinget
Som følge heraf henvender processoren sig spekulativt til den dannede 64-bit pointer og ruller status tilbage efter at have bestemt en mislykket forudsigelse, men sporene fra udførelsen sætter sig fast i den generelle cache og kan gendannes ved hjælp af metoder til bestemmelse af cacheindholdet over alternative kanaler, der analyserer ændringen i adgangstid til cachede og ikke-cachede data. Til analyse af cacheindhold under forhold med utilstrækkelig nøjagtighed af timeren, der er tilgængelig i JavaScript, anvendes en metode foreslået af Google, som omgår den anvendte datalæsningsstrategi i processorer kaldet Tree-PLRU og muliggør en betydelig forøgelse af tidsforskellen ved tilstedeværelse og fravær af en værdi i cachen ved at øge antallet af cyklusser.
Kilde: opennet.ru
