Google dimostra u sfruttamentu di e vulnerabilità Spectre eseguendu JavaScript in u navigatore

Google hà publicatu parechji prototipi di sfruttamentu chì mostranu a pussibilità di sfruttà e vulnerabilità di a classe Spectre quandu eseguisce codice JavaScript in u navigatore, sguassendu i metudi di prutezzione aghjustati prima. Exploits pò esse usatu per acquistà l'accessu à a memoria di u prucessu di trasfurmazioni di u cuntenutu web in a tabulazione attuale. Per pruvà l'operazione di u sfruttamentu, u situ web leaky.page hè stata lanciata, è u codice chì descriva a logica di u travagliu hè stata publicata in GitHub.

U prototipu prupostu hè designatu per attaccà i sistemi cù i prucessori Intel Core i7-6500U in un ambiente cù Linux è Chrome 88. Per utilizà l'exploit per altri ambienti, mudificazioni sò necessarii. U metudu di sfruttamentu ùn hè micca specificu per i prucessori Intel - dopu l'adattazione adattata, u sfruttamentu hè statu cunfirmatu per travaglià in sistemi cù CPU di altri fabricatori, cumpresu l'Apple M1 basatu in l'architettura ARM. Dopu aghjustamenti minori, u sfruttamentu hè ancu operabile in altri sistemi operativi è in altri navigatori basati nantu à u mutore Chromium.

In un ambiente basatu nantu à i prucessori standard Chrome 88 è Intel Skylake, era pussibile fughje e dati da u prucessu rispunsevuli di trasfurmà u cuntenutu web in a tabulazione Chrome attuale (processu di rendering) à una veloce di 1 kilobyte per seconda. Inoltre, prototipi alternativi sò stati sviluppati, per esempiu, un sfruttamentu chì permette, à u costu di riduce a stabilità, per aumentà a rata di fuga à 8kB / s quandu si usa u timer performance.now() cù una precisione di 5 microsecondi (0.005 millisecondi). ). Una versione hè stata ancu preparata chì hà travagliatu cù una precisione di timer di un millisecondu, chì puderia esse aduprata per urganizà l'accessu à a memoria di un altru prucessu à una veloce di circa 60 bytes per seconda.

U codice demo publicatu hè custituitu di trè parti. A prima parte calibra u timer per stima u tempu d'esekzione di l'operazioni necessarie per restaurà e dati chì restanu in a cache di u processatore per u risultatu di l'esekzione speculativa di l'istruzzioni di CPU. A seconda parte determina u layout di memoria utilizatu quandu si attribuisce l'array JavaScript.

A terza parte sfrutta direttamente a vulnerabilità Spectre per determinà u cuntenutu di memoria di u prucessu attuale in u risultatu di creazione di e cundizioni per l'esekzione speculativa di certe operazioni, u risultatu di quale hè scartatu da u processatore dopu avè determinatu una prediczione senza successu, ma tracce di u l'esecuzione sò dipositati in u cache generale è ponu esse restaurati utilizendu metudi per determinà u cuntenutu di u cache da i canali di terzu chì analizanu i cambiamenti in u tempu d'accessu à i dati cache è uncached.

A tecnica di sfruttamentu pruposta permette di fà senza timers d'alta precisione dispunibuli attraversu l'API performance.now(), è senza supportu per u tipu SharedArrayBuffer, chì permette di creà arrays in memoria sparta. U sfruttamentu include u gadget Spectre, chì provoca l'esekzione speculativa cuntrullata di u codice, è un analizatore di fughe di canali laterali, chì rileva dati in cache ottenuti durante l'esecuzione speculativa.

U gadget hè implementatu cù un array JavaScript in quale un tentativu hè fattu per accede à una zona fora di i cunfini di u buffer, affettendu u statu di u bloccu di prediczione di ramu per a presenza di un cuntrollu di dimensione di buffer aghjuntu da u compilatore (u processatore, fighjendu avanti, speculativamente esegue l'accessu, ma torna u statu dopu a verificazione). Per analizà u cuntenutu di u cache in cundizioni di precisione di timer insufficiente, hè statu prupostu un metudu chì inganna a strategia di eviction di cache Tree-PLRU aduprata in i prucessori è permette, aumentendu u nùmeru di ciculi, per aumentà significativamente a diffarenza di u tempu quandu torna. un valore da a cache è quandu ùn ci hè micca valore in a cache.

Hè nutatu chì Google hà publicatu un prototipu di u sfruttamentu per dimustrà a fattibilità di l'attacchi chì utilizanu vulnerabilità di a classe Spectre è incuragisce i sviluppatori web à utilizà tecniche chì minimizzanu i risichi di tali attacchi. À u listessu tempu, Google crede chì, senza una reelaborazione significativa di u prototipu prupostu, hè impussibile di creà sfruttamenti universali chì sò pronti micca solu per a dimostrazione, ma ancu per l'usu generalizatu.

Per riduce u risicu, i pruprietarii di u situ sò incuraghjiti à utilizà l'intestazione recentemente implementata Cross-Origin Opener Policy (COOP), Cross-Origin Embedder Policy (COEP), Cross-Origin Resource Policy (CORP), Fetch Metadata Request, X-Frame- Opzioni, X -Content-Type-Options è SameSite Cookie. Questi miccanismi ùn pruteghjanu micca direttamente contr'à l'attacchi, ma permettenu di isolà e dati di u situ da a fuga in prucessi in quale u codice JavaScript di l'attaccu pò esse eseguitu (a fuga si trova da a memoria di u prucessu attuale, chì, in più di u codice di l'attaccante). , pò ancu processà dati da un altru situ apertu in quella stessa tabulazione). L'idea principale hè di separà l'esekzione di u codice di u situ in diversi prucessi da u codice di terzu ricivutu da fonti inaffidabili, per esempiu, inclusu attraversu un iframe.



Source: opennet.ru

Add a comment