Google har nylig lansert flere prototype-utnyttelser som demonstrerer muligheten for å utnytte sårbarheter i Spectre-klassen ved å kjøre JavaScript-kode i en nettleser, uten å gå gjennom tidligere tillagte sikkerhetstiltak.
Utnyttelser kan brukes til å få tilgang til minnet til en prosess som behandler nettinnhold i gjeldende fane. For å teste utnyttelsens funksjonalitet ble nettstedet til den lekkede siden lansert, og koden som beskriver logikken i operasjonen ble publisert på GitHub.
Den foreslåtte prototypen er designet for å angripe systemer med Intel Core i7-6500U-prosessorer i et miljø med Linux og Chrome 88, selv om dette ikke utelukker muligheten for å gjøre endringer for å bruke angrepet i andre miljøer.
Driftsmetoden er ikke spesifikk for Intel -prosessorer : etter passende tilpasning ble det bekreftet at utnyttelsen fungerer på systemer med CPUer fra andre produsenter, inkludert Apple M1 basert på ARM-arkitekturen. Etter mindre justeringer fungerer utnyttelsen også på andre operativsystemer og andre nettlesere basert på Chromium-motoren.
I et miljø basert på standard Chrome 88- og Intel Skylake-prosessorer oppnådde vi en datalekkasje fra prosessen som er ansvarlig for gjengivelse av nettinnhold i den nåværende Chrome-fanen (gjengivelsesprosess) med en hastighet på 1 kilobyte per sekund. I tillegg ble det utviklet alternative prototyper, for eksempel en utnyttelse som tillater, på bekostning av redusert stabilitet, å øke lekkasjeraten til 8 kB / s når du bruker ytelsen. Nå () timer med en presisjon på 5 mikrosekunder (0.005 millisekunder. ). Det ble også utarbeidet en variant som opererte med en tidsinnstilt presisjon på ett millisekund, som kunne brukes til å organisere tilgang til minnet til en annen prosess med en hastighet på ca. 60 byte per sekund.
Den publiserte demo-koden består av tre deler:
- Den første delen kalibrer timeren for å estimere kjøretiden av operasjonene som er nødvendige for å hente dataene som er igjen i prosessorbufferen som et resultat av den spekulative utførelsen av CPU-instruksjonene.
- Den andre delen Definerer minneoppsettet som brukes når du tildeler JavaScript-matrisen.
- Den tredje delen utnytter direkte Spectre-sårbarheten for å bestemme minneinnhold av den nåværende prosessen som et resultat av opprettelsen av betingelser for spekulativ utførelse av visse operasjoner, hvis resultat blir forkastet av prosessoren etter å ha bestemt en mislykket prognose, men utførelsessporene avgjøres i den delte cachen og kan gjenopprettes ved hjelp av metoder for å bestemme innholdet i hurtigbufferen ved hjelp av tredjepartskanaler som analyserer endringen i tilgangstid til hurtigbufrede og ikke-hurtigbufrede data.
Den foreslåtte utnyttelsesteknikken tillater å dispensere med høy presisjonstimere som er tilgjengelige gjennom performance.now() API-et og uten støtte for SharedArrayBuffer-typen, som tillater oppretting av arrayer i delt minne.
Utnyttelsen inkluderer Spectre-enheten, som forårsaker kontrollert eksekvering av spekulativ kode, og en sidekanallekkasje-analysator, som bestemmer hvilke data som er lagret under spekulativ kjøring.
Gadgeten implementeres ved hjelp av en JavaScript-array, der det gjøres et forsøk på å få tilgang til et område utenfor buffergrensene , noe som påvirker tilstanden til grenprediksjonsblokken på grunn av tilstedeværelsen av en bufferstørrelseskontroll lagt til av kompilatoren (prosessoren utfører spekulativt en tidlig tilgang, men tilbakestiller tilstanden etter kontroll).
For å analysere innholdet i hurtigbufferen under forhold med utilstrekkelig tidsinnstilt presisjon, ble det foreslått en metode som lurer Tree-PLRU-cache-datautkastingsstrategien som brukes i prosessorer og tillater, ved å øke antall sykluser, å øke forskjellstiden når verdien blir betydelig returneres fra hurtigbufferen og i fravær av en verdi i hurtigbufferen.
Google har gitt ut en prototype av angrepet for å demonstrere muligheten for angrep ved hjelp av Spectre-klassen sårbarheter og for å oppmuntre nettutviklere til å bruke teknikker som minimerer risikoen for slike angrep.
Samtidig mener Google at uten en vesentlig revisjon av den foreslåtte prototypen, er det umulig å lage universelle utnyttelser som er klare ikke bare for demonstrasjon, men også for utbredt bruk.
Kilde: https://security.googleblog.com