Google demostra l'explotació de les vulnerabilitats de Spectre executant JavaScript al navegador

Google ha publicat diversos prototips d'explotació que mostren la possibilitat d'explotar les vulnerabilitats de la classe Spectre quan s'executa codi JavaScript al navegador, evitant els mètodes de protecció afegits anteriorment. Els exploits es poden utilitzar per accedir a la memòria del procés de processament del contingut web a la pestanya actual. Per provar el funcionament de l'explotació, es va llançar el lloc web leaky.page i el codi que descriu la lògica del treball es va publicar a GitHub.

El prototip proposat està dissenyat per atacar sistemes amb processadors Intel Core i7-6500U en un entorn amb Linux i Chrome 88. Per utilitzar l'explotació per a altres entorns, calen modificacions. El mètode d'explotació no és específic dels processadors Intel: després d'una adaptació adequada, es va confirmar que l'explotació funcionava en sistemes amb CPU d'altres fabricants, inclòs l'Apple M1 basat en l'arquitectura ARM. Després d'ajustaments menors, l'explotació també és viable en altres sistemes operatius i en altres navegadors basats en el motor Chromium.

En un entorn basat en processadors estàndard Chrome 88 i Intel Skylake, era possible filtrar dades del procés responsable del processament del contingut web a la pestanya de Chrome actual (procés de renderització) a una velocitat d'1 kilobyte per segon. A més, s'han desenvolupat prototips alternatius, per exemple, un exploit que permet, a costa de reduir l'estabilitat, augmentar la taxa de fuites a 8 kB/s quan s'utilitza el temporitzador performance.now() amb una precisió de 5 microsegons (0.005 mil·lisegons). ). També es va preparar una versió que funcionava amb una precisió de temporitzador d'un mil·lisegon, que es podia utilitzar per organitzar l'accés a la memòria d'un altre procés a una velocitat d'uns 60 bytes per segon.

El codi de demostració publicat consta de tres parts. La primera part calibra el temporitzador per estimar el temps d'execució de les operacions necessàries per restaurar les dades que queden a la memòria cau del processador com a resultat de l'execució especulativa de les instruccions de la CPU. La segona part determina la disposició de la memòria utilitzada en assignar la matriu JavaScript.

La tercera part explota directament la vulnerabilitat Spectre per determinar el contingut de la memòria del procés actual com a resultat de la creació de condicions per a l'execució especulativa de determinades operacions, el resultat de les quals és descartat pel processador després de determinar una predicció no reeixida, però traces de la l'execució es dipositen a la memòria cau general i es poden restaurar mitjançant mètodes per determinar el contingut de la memòria cau per canals de tercers que analitzen els canvis en el temps d'accés a les dades emmagatzemades i no a la memòria cau.

La tècnica d'explotació proposada permet prescindir dels temporitzadors d'alta precisió disponibles a través de l'API performance.now(), i sense suport per al tipus SharedArrayBuffer, que permet crear matrius en memòria compartida. L'explotació inclou el gadget Spectre, que provoca l'execució especulativa controlada del codi, i un analitzador de fuites de canals laterals, que detecta les dades emmagatzemades a la memòria cau obtingudes durant l'execució especulativa.

El gadget s'implementa mitjançant una matriu JavaScript, en la qual s'intenta accedir a una àrea fora dels límits de la memòria intermèdia, afectant l'estat del bloc de predicció de la branca a causa de la presència d'una comprovació de la mida de la memòria intermèdia afegida pel compilador (el processador realitza especulament l'accés, mirant cap endavant, però fa retrocedir l'estat després de comprovar-ho). Per analitzar el contingut de la memòria cau en condicions de precisió del temporitzador insuficient, s'ha proposat un mètode que enganya l'estratègia de desallotjament de la memòria cau Tree-PLRU que s'utilitza en els processadors i permet, augmentant el nombre de cicles, augmentar significativament la diferència de temps en tornar. un valor de la memòria cau i quan no hi ha cap valor a la memòria cau.

Cal assenyalar que Google va publicar un prototip de l'explotació per tal de mostrar la viabilitat dels atacs amb vulnerabilitats de classe Spectre i per animar els desenvolupadors web a utilitzar tècniques que minimitzin els riscos d'aquests atacs. Al mateix temps, Google creu que sense una reelaboració significativa del prototip proposat, és impossible crear exploits universals que estiguin preparats no només per a la demostració, sinó també per a un ús generalitzat.

Per reduir el risc, es recomana als propietaris del lloc que utilitzin les capçaleres implementades recentment: Política d'obertura entre orígens (COOP), Política d'inserció entre orígens (COEP), Política de recursos entre orígens (CORP), Sol·licitud de recuperació de metadades, X-Frame- Opcions, X -Content-Type-Options i SameSite Cookie. Aquests mecanismes no protegeixen directament dels atacs, però permeten aïllar les dades del lloc de les fuites en processos en què es pot executar el codi JavaScript de l'atacant (la filtració es produeix des de la memòria del procés actual, que, a més del codi de l'atacant, , també pot processar dades d'un altre lloc obert en aquesta mateixa pestanya). La idea principal és separar l'execució del codi del lloc en diferents processos del codi de tercers rebut de fonts poc fiables, per exemple, inclòs a través d'un iframe.



Font: opennet.ru

Afegeix comentari