Ny teknikk for å utnytte Spectre-sårbarheter i Chrome

En gruppe forskere fra amerikanske, australske og israelske universiteter har foreslått en ny sidekanalangrepsteknikk for å utnytte sårbarheter i Spectre-klassen i nettlesere basert på Chromium-motoren. Angrepet, kodenavnet Spook.js, lar deg omgå mekanismen for nettstedisolering ved å kjøre JavaScript-kode og lese innholdet i hele adresseområdet til den gjeldende prosessen, dvs. få tilgang til data fra sider som kjører i andre faner, men behandles i samme prosess.

Siden Chrome kjører forskjellige nettsteder i forskjellige prosesser, er muligheten til å utføre praktiske angrep begrenset til tjenester som lar forskjellige brukere være vert for sidene deres. Metoden gjør det mulig, fra en side der angriperen har mulighet til å bygge inn JavaScript-koden sin, å fastslå tilstedeværelsen av andre sider åpnet av brukeren fra samme nettsted og trekke ut konfidensiell informasjon fra dem, for eksempel legitimasjon eller bankdetaljer erstattet av systemet med automatisk utfylling av felt i nettskjemaer. Som en demonstrasjon vises det hvordan du kan angripe andres blogg på Tumblr-tjenesten hvis eieren åpner en angripers blogg som er vert for den samme tjenesten i en annen fane.

Et annet alternativ for å bruke metoden er et angrep på nettlesertillegg, som gjør det mulig, når du installerer et tillegg kontrollert av angriperen, å trekke ut data fra andre tillegg. Som et eksempel viser vi hvordan du ved å installere et ondsinnet tillegg kan trekke ut konfidensiell informasjon fra LastPass passordbehandling.

Forskere har publisert en prototype av en utnyttelse som fungerer i Chrome 89 på systemer med en CPUIntel i7-6700K og i7-7600U. Når du opprettet utnyttelsen, ble prototyper av JavaScript-kode tidligere publisert av Google brukt til å utføre angrep i Spectre-klassen. Det bemerkes at forskerne var i stand til å forberede arbeidsutnyttelser for systemer basert på Intel- og Apple M1-prosessorer, som gjør det mulig å organisere minnelesing med en hastighet på 500 byte per sekund og en nøyaktighet på 96%. Det antas at metoden også er anvendelig for AMD-prosessorer, men det var ikke mulig å utarbeide en fullt funksjonell utnyttelse.

Angrepet gjelder alle nettlesere basert på Chromium-motoren, inkludert Google Chrome, Microsoft Edge og Brave. Forskerne mener også at metoden kan tilpasses til å fungere med Firefox, men siden Firefox-motoren er veldig forskjellig fra Chrome, blir arbeidet med å lage en slik utnyttelse overlatt til fremtiden.

For å beskytte mot nettleserbaserte angrep relatert til spekulativ utførelse av instruksjoner, implementerer Chrome segmentering av adresserom – sandkasseisolering lar JavaScript bare fungere med 32-bits pekere og deler minnet til behandlere i usammenhengende 4 GB-hauger. For å gi tilgang til hele prosessadresserommet og omgå 32-bits begrensningen, brukte forskerne en teknikk kalt Type Confusion, som tvinger JavaScript-motoren til å behandle et objekt med feil type, noe som gjør det mulig å danne en 64-bits peker basert på en kombinasjon av to 32-bits verdier.

Essensen av angrepet er at ved behandling av et spesialdesignet ondsinnet objekt i JavaScript-motoren, skapes det forhold som fører til spekulativ utførelse av instruksjoner som får tilgang til matrisen. Objektet velges på en slik måte at de angriperkontrollerte feltene plasseres i området der 64-bits pekeren brukes. Siden typen av det skadelige objektet ikke samsvarer med typen av arrayen som behandles, blokkeres slike handlinger under normale forhold i Chrome av en mekanisme for å deoptimere koden som brukes for å få tilgang til arrays. For å løse dette problemet, plasseres koden for Type Confusion-angrepet i en betinget "hvis"-blokk, som ikke aktiveres under normale forhold, men utføres i spekulativ modus hvis prosessoren feilaktig forutsier ytterligere forgrening.

Som et resultat får prosessoren spekulativt tilgang til den genererte 64-bits pekeren og ruller tilbake tilstanden etter å ha bestemt en mislykket prediksjon, men spor av utførelsen forblir i den delte hurtigbufferen og kan gjenopprettes ved hjelp av side-kanals cache-deteksjonsmetoder som analyserer endringer i tilgangstider til hurtigbufrede og ubufrede data. For å analysere innholdet i hurtigbufferen under forhold med utilstrekkelig nøyaktighet av tidtakeren som er tilgjengelig i JavaScript, brukes en metode foreslått av Google, som lurer Tree-PLRU cache-utkastningsstrategien som brukes i prosessorer og tillater, ved å øke antall sykluser, å øke forskjellen i tid betydelig når en verdi er tilstede og fraværende i hurtigbufferen. .

Kilde: opennet.ru

Legg til en kommentar