Nieuwe techniek voor het misbruiken van Spectre-kwetsbaarheden in Chrome

Een groep onderzoekers van Amerikaanse, Australische en Israëlische universiteiten heeft een nieuwe zijkanaalaanvaltechniek voorgesteld om kwetsbaarheden van de Spectre-klasse te misbruiken in browsers die zijn gebaseerd op de Chromium-engine. Met de aanval, met de codenaam Spook.js, kunt u het site-isolatiemechanisme omzeilen door JavaScript-code uit te voeren en de inhoud van de volledige adresruimte van het huidige proces te lezen, d.w.z. toegang krijgen tot gegevens van pagina's die op andere tabbladen worden uitgevoerd, maar in hetzelfde proces worden verwerkt.

Omdat Chrome verschillende sites in verschillende processen uitvoert, is de mogelijkheid om praktische aanvallen uit te voeren beperkt tot services waarmee verschillende gebruikers hun pagina's kunnen hosten. Met deze methode kan vanaf een pagina waarop de aanvaller de mogelijkheid heeft om zijn JavaScript-code in te sluiten, de aanwezigheid van andere pagina's worden vastgesteld die door de gebruiker vanaf dezelfde site zijn geopend en daaruit vertrouwelijke informatie kunnen worden gehaald, bijvoorbeeld inloggegevens of vervangende bankgegevens door het systeem van automatisch invullen van velden in webformulieren. Als demonstratie wordt getoond hoe je de blog van iemand anders op de Tumblr-service kunt aanvallen als de eigenaar op een ander tabblad de blog van een aanvaller opent die op dezelfde service wordt gehost.

Een andere optie voor het gebruik van de methode is een aanval op browser-add-ons, waardoor bij het installeren van een add-on die wordt beheerd door de aanvaller, gegevens uit andere add-ons kunnen worden geëxtraheerd. Als voorbeeld laten we zien hoe u door het installeren van een kwaadaardige add-on vertrouwelijke informatie uit de LastPass-wachtwoordbeheerder kunt extraheren.

Onderzoekers hebben een prototype gepubliceerd van een exploit die werkt in Chrome 89 op systemen met een CPUIntel i7-6700K en i7-7600U. Bij het maken van de exploit werden prototypes van JavaScript-code die eerder door Google was gepubliceerd, gebruikt om Spectre-class-aanvallen uit te voeren. Opgemerkt wordt dat de onderzoekers werkende exploits konden voorbereiden voor systemen op basis van Intel- en Apple M1-processors, die het mogelijk maken om het lezen van geheugen te organiseren met een snelheid van 500 bytes per seconde en een nauwkeurigheid van 96%. Aangenomen wordt dat de methode ook toepasbaar is op AMD-processors, maar het was niet mogelijk een volledig functionele exploit voor te bereiden.

De aanval is van toepassing op alle browsers die zijn gebaseerd op de Chromium-engine, inclusief Google Chrome, Microsoft Edge en Brave. De onderzoekers zijn ook van mening dat de methode kan worden aangepast om met Firefox te werken, maar omdat de Firefox-engine heel anders is dan Chrome, wordt het werk aan het creëren van een dergelijke exploit aan de toekomst overgelaten.

Om te beschermen tegen browsergebaseerde aanvallen die verband houden met speculatieve uitvoering van instructies, implementeert Chrome adresruimtesegmentatie - sandbox-isolatie zorgt ervoor dat JavaScript alleen werkt met 32-bit pointers en deelt het geheugen van handlers in onsamenhangende hopen van 4 GB. Om toegang te bieden tot de volledige procesadresruimte en de 32-bits beperking te omzeilen, gebruikten de onderzoekers een techniek genaamd Type Confusion, die de JavaScript-engine dwingt een object met een onjuist type te verwerken, wat het mogelijk maakt om een ​​64-bits bestand te vormen. pointer gebaseerd op een combinatie van twee 32-bits waarden.

De essentie van de aanval is dat bij het verwerken van een speciaal ontworpen kwaadaardig object in de JavaScript-engine omstandigheden worden gecreëerd die leiden tot speculatieve uitvoering van instructies die toegang krijgen tot de array. Het object wordt zo geselecteerd dat de door de aanvaller bestuurde velden in het gebied worden geplaatst waar de 64-bits pointer wordt gebruikt. Omdat het type kwaadaardig object niet overeenkomt met het type array dat wordt verwerkt, worden dergelijke acties onder normale omstandigheden in Chrome geblokkeerd door een mechanisme voor het deoptimaliseren van de code die wordt gebruikt om toegang te krijgen tot arrays. Om dit probleem op te lossen wordt de code voor de Type Confusion-aanval in een voorwaardelijk “if”-blok geplaatst, dat onder normale omstandigheden niet wordt geactiveerd, maar in speculatieve modus wordt uitgevoerd als de processor verdere vertakkingen verkeerd voorspelt.

Als gevolg hiervan heeft de processor op speculatieve wijze toegang tot de gegenereerde 64-bits pointer en draait de status terug na het bepalen van een mislukte voorspelling, maar sporen van de uitvoering blijven in de gedeelde cache en kunnen worden hersteld met behulp van side-channel cache-detectiemethoden die veranderingen in de voorspelling analyseren. toegangstijden tot in de cache opgeslagen en niet in de cache opgeslagen gegevens. Om de inhoud van de cache te analyseren in omstandigheden van onvoldoende nauwkeurigheid van de timer die beschikbaar is in JavaScript, wordt een door Google voorgestelde methode gebruikt, die de Tree-PLRU cache-uitzettingsstrategie misleidt die in processors wordt gebruikt en het mogelijk maakt, door het aantal cycli te verhogen, vergroot aanzienlijk het tijdsverschil tussen het aanwezig en afwezig zijn van een waarde in de cache.

Bron: opennet.ru

Voeg een reactie