Nuove tecniche di sfruttamento delle vulnerabilità di tipo Spectre in Chrome

Un gruppo di ricercatori provenienti da università americane, australiane e israeliane ha proposto una nuova tecnica di attacco tramite canali laterali per sfruttare le vulnerabilità di tipo Spectre nei browser basati sul motore Chromium. L'attacco, soprannominato Spook.js, consente, tramite l'esecuzione di codice JavaScript, di bypassare il meccanismo di isolamento dei siti e leggere il contenuto dell'intero spazio indirizzi del processo corrente, ossia accedere ai dati delle pagine aperte in altre schede, ma elaborate all'interno di un unico processo.

Poiché Chrome esegue siti diversi in processi separati, la possibilità di attacchi pratici è limitata dai servizi che consentono a diversi utenti di pubblicare le proprie pagine. Il metodo consente, da una pagina in cui l'attaccante è in grado di incorporare il proprio codice JavaScript, di determinare l'esistenza di altre pagine aperte dall'utente sullo stesso sito e di estrarre da esse informazioni riservate, come credenziali o dettagli bancari inseriti automaticamente nei moduli web dal sistema di riempimento automatico. Come dimostrazione, è mostrato come attaccare un blog altrui su Tumblr, se il suo proprietario apre in una nuova scheda il blog dell'aggressore ospitato nello stesso servizio.

Riproduci video

Un'altra applicazione del metodo è l'attacco alle estensioni del browser, che consente, installando un'estensione controllata dagli attaccanti, di estrarre dati da altre estensioni. Come esempio, è mostrato come installando un'estensione malevola sia possibile estrarre informazioni riservate dal gestore password LastPass.

Riproduci video

I ricercatori hanno pubblicato un prototipo di exploit che funziona su Chrome 89 su sistemi con CPU Intel i7-6700K e i7-7600U. Nella creazione dell'exploit sono stati utilizzati prototipi di codice JavaScript precedentemente pubblicati da Google per eseguire attacchi di tipo Spectre. Si segnala che i ricercatori sono riusciti a preparare exploit funzionanti per sistemi basati su processori Intel e Apple M1, consentendo di effettuare letture di memoria a una velocità di 500 byte al secondo e con un'accuratezza del 96%. Si presume che il metodo sia applicabile anche ai processori AMD, ma non è stato possibile produrre un exploit completamente funzionante.

L'attacco è applicabile a qualsiasi browser basato su motore Chromium, inclusi Google Chrome, Microsoft Edge e Brave. I ricercatori ritengono anche che il metodo possa essere adattato per funzionare con Firefox, ma poiché il motore Firefox è molto diverso da Chrome, il lavoro sulla creazione di un simile exploit è stato rimandato al futuro.

Per proteggere dagli attacchi tramite il browser legati all'esecuzione speculativa delle istruzioni, Chrome ha implementato la segmentazione dello spazio degli indirizzi: l'isolamento in sandbox consente l'esecuzione di JavaScript solo con puntatori a 32 bit e separa la memoria dei gestori in heap da 4 GB non sovrapposti. Per organizzare l'accesso all'intero spazio degli indirizzi del processo e aggirare il limite a 32 bit, i ricercatori hanno utilizzato la tecnica del Type Confusion, che costringe il motore JavaScript a elaborare un oggetto di tipo errato, consentendo di formare un puntatore a 64 bit basato su una combinazione di due valori a 32 bit.

L'essenza dell'attacco è che, durante l'elaborazione di un oggetto dannoso appositamente formattato nel motore JavaScript, si creano condizioni che portano all'esecuzione speculativa di istruzioni che accedono a un array. L'oggetto è scelto in un modo tale che i campi controllati dagli aggressori vengono posizionati in un'area in cui viene utilizzato un puntatore a 64 bit. Poiché il tipo dell'oggetto dannoso non corrisponde al tipo dell'array elaborato, in condizioni normali tali azioni vengono bloccate nel Chrome dal meccanismo di deottimizzazione del codice utilizzato per l'accesso agli array. Per risolvere questo problema, il codice per l'attacco di Confusione di Tipo viene spostato in un blocco condizionale "if", che non viene attivato in condizioni normali, ma viene eseguito in modalità speculativa, in caso di previsione errata da parte del processore riguardo al successivo ramificarsi.

Di conseguenza, il processore accede in modo speculativo a un puntatore a 64 bit formato e ripristina lo stato dopo aver determinato una previsione non riuscita, ma le tracce di esecuzione si depositano nella cache generale e possono essere ripristinate tramite metodi di identificazione del contenuto della cache attraverso canali esterni che analizzano la variazione del tempo di accesso ai dati in cache e non in cache. Per analizzare il contenuto della cache in condizioni di scarsa precisione del timer disponibile in JavaScript, viene utilizzato un metodo proposto da Google che inganna la strategia di sostituzione dei dati nelle cache Tree-PLRU nei processori, consentendo di aumentare significativamente la differenza temporale tra la presenza e l'assenza di un valore nella cache aumentando il numero di cicli.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster