Nova tècnica per explotar les vulnerabilitats de la classe Spectre a Chrome

Un grup d'investigadors d'universitats nord-americanes, australianes i israelianes ha proposat una nova tècnica d'atac de canal lateral per explotar les vulnerabilitats de la classe Spectre als navegadors basats en el motor Chromium. L'atac, amb el nom en clau Spook.js, us permet evitar el mecanisme d'aïllament del lloc executant codi JavaScript i llegir el contingut de tot l'espai d'adreces del procés actual, és a dir. accedir a les dades de pàgines que s'executen en altres pestanyes, però processades en el mateix procés.

Com que Chrome executa diferents llocs en diferents processos, la capacitat de dur a terme atacs pràctics es limita als serveis que permeten a diferents usuaris allotjar les seves pàgines. El mètode permet, a partir d'una pàgina en la qual l'atacant té l'oportunitat d'incrustar el seu codi JavaScript, determinar la presència d'altres pàgines obertes per l'usuari des del mateix lloc i extreure'n informació confidencial, per exemple, credencials o dades bancàries substituïdes. pel sistema d'emplenament automàtic de camps en formularis web. Com a demostració, es mostra com podeu atacar el bloc d'una altra persona al servei Tumblr si el seu propietari obre un bloc d'atacants allotjat al mateix servei en una altra pestanya.

Una altra opció per utilitzar el mètode és un atac als complements del navegador, que permet, quan s'instal·la un complement controlat per l'atacant, extreure dades d'altres complements. Com a exemple, mostrem com instal·lant un complement maliciós podeu extreure informació confidencial del gestor de contrasenyes de LastPass.

Els investigadors han publicat un prototip d'explotació que funciona a Chrome 89 en sistemes amb CPUIntel i7-6700K i i7-7600U. En crear l'explotació, es van utilitzar prototips de codi JavaScript publicats anteriorment per Google per dur a terme atacs de classe Spectre. Cal destacar que els investigadors van poder preparar exploits de treball per a sistemes basats en processadors Intel i Apple M1, que permeten organitzar la lectura de la memòria a una velocitat de 500 bytes per segon i una precisió del 96%. Se suposa que el mètode també és aplicable als processadors AMD, però no va ser possible preparar un exploit totalment funcional.

L'atac és aplicable a qualsevol navegador basat en el motor Chromium, inclosos Google Chrome, Microsoft Edge i Brave. Els investigadors també creuen que el mètode es pot adaptar per treballar amb Firefox, però com que el motor Firefox és molt diferent de Chrome, el treball per crear aquest exploit es deixa per al futur.

Per protegir-se dels atacs basats en navegadors relacionats amb l'execució especulativa d'instruccions, Chrome implementa la segmentació de l'espai d'adreces: l'aïllament de la caixa de proves permet que JavaScript només funcioni amb punters de 32 bits i comparteixi la memòria dels controladors en munts de 4 GB no units. Per proporcionar accés a tot l'espai d'adreces del procés i evitar la limitació de 32 bits, els investigadors van utilitzar una tècnica anomenada Type Confusion, que obliga el motor JavaScript a processar un objecte amb un tipus incorrecte, cosa que permet formar un 64 bits. punter basat en una combinació de dos valors de 32 bits.

L'essència de l'atac és que quan es processa un objecte maliciós especialment dissenyat al motor JavaScript, es creen condicions que condueixen a l'execució especulativa d'instruccions que accedeixen a la matriu. L'objecte es selecciona de tal manera que els camps controlats per l'atacant es col·loquen a l'àrea on s'utilitza el punter de 64 bits. Com que el tipus d'objecte maliciós no coincideix amb el tipus de matriu que s'està processant, en condicions normals aquestes accions es bloquegen a Chrome mitjançant un mecanisme per desoptimitzar el codi utilitzat per accedir a les matrius. Per resoldre aquest problema, el codi per a l'atac de confusió de tipus es col·loca en un bloc condicional "si", que no s'activa en condicions normals, però s'executa en mode especulatiu, si el processador prediu incorrectament una ramificació addicional.

Com a resultat, el processador accedeix de manera especulativa al punter de 64 bits generat i fa retrocedir l'estat després de determinar una predicció fallida, però els rastres de l'execució romanen a la memòria cau compartida i es poden restaurar mitjançant mètodes de detecció de memòria cau de canal lateral que analitzen els canvis en temps d'accés a dades emmagatzemades i sense caché. Per analitzar el contingut de la memòria cau en condicions d'exactitud insuficient del temporitzador disponible en JavaScript, s'utilitza un mètode proposat per Google, que enganya l'estratègia de desallotjament de la memòria cau Tree-PLRU utilitzada en els processadors i permet, augmentant el nombre de cicles, augmentar significativament la diferència de temps quan un valor està present i absent a la memòria cau.

Font: opennet.ru

Afegeix comentari