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

Un gruppo di ricercatori di 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, denominato Spook.js, consente, tramite l'esecuzione di codice JavaScript, di eludere il meccanismo di isolamento dei siti web e di leggere il contenuto dell'intero spazio degli indirizzi del processo attuale, ovvero accedere ai dati di pagine aperte in altre schede, ma elaborate in un unico processo.

Poiché Chrome esegue diversi siti in processi separati, la possibilità di effettuare attacchi pratici è limitata ai servizi che consentono a diversi utenti di pubblicare le proprie pagine. Il metodo consente, da una pagina in cui l'attaccante può incorporare il proprio codice JavaScript, di determinare la presenza di altre pagine aperte dall'utente dello stesso sito e di estrarre informazioni riservate, ad esempio credenziali o dati bancari, inseriti automaticamente dalla funzione di completamento dei moduli web. Come dimostrazione, è stato mostrato come si può attaccare un blog altrui su Tumblr, se il proprietario apre in un'altra scheda il blog di un malintenzionato del medesimo servizio.

Guarda il video

Un altro possibile utilizzo del metodo è l'attacco alle estensioni del browser, che consente, con l'installazione di un'estensione controllata dagli attaccanti, di estrarre dati da altre estensioni. Come esempio, viene mostrato come, installando un'estensione malevola, si possano estrarre informazioni riservate dal gestore di password LastPass.

Guarda il video

I ricercatori hanno pubblicato un prototipo di exploit funzionante 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 attacchi di tipo Spectre. Si segnala che i ricercatori sono riusciti a preparare exploit funzionanti per sistemi basati su processori Intel e Apple M1, che consentono di organizzare la lettura della memoria a una velocità di 500 byte al secondo e con un'accuratezza del 96%. Si presuppone che il metodo sia applicabile anche ai processori AMD, ma non è stato possibile preparare un exploit completamente funzionante.

L'attacco è applicabile a qualsiasi browser basato sul 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 di Firefox è molto diverso da quello di Chrome, il lavoro per creare un exploit simile è stato rimandato al futuro.

Per proteggere contro attacchi basati su esecuzione speculativa tramite il browser, in Chrome è stata implementata la segmentazione dello spazio degli indirizzi: l'isolamento sandbox consente a JavaScript di lavorare solo con puntatori a 32 bit e separa la memoria dei gestori in heap non sovrapposti da 4GB. Per organizzare l'accesso all'intero spazio degli indirizzi del processo e per bypassare il limite a 32 bit, i ricercatori hanno utilizzato la tecnica Type Confusion, che costringe il motore JavaScript a trattare un oggetto con un tipo errato, permettendo di formare un puntatore a 64 bit a partire da una combinazione di due valori a 32 bit.

Il punto dell'attacco è che, durante l'elaborazione di un oggetto malevolo appositamente formattato nel motore JavaScript, si creano condizioni che portano all'esecuzione speculativa di istruzioni che accedono a un array. L'oggetto viene selezionato in modo tale che i campi controllati dagli aggressori siano collocati in un'area in cui viene utilizzato un puntatore a 64 bit. Poiché il tipo dell'oggetto malevolo non corrisponde al tipo dell'array elaborato, normalmente tali azioni vengono bloccate in Chrome dal meccanismo di deottimizzazione del codice utilizzato per l'accesso agli array. Per risolvere questo problema, il codice per l'attacco Type Confusion 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 per il successivo diramarsi.

Alla fine, il processore accede in modo speculativo a un puntatore a 64 bit formato e ripristina lo stato dopo aver determinato una previsione errata, ma le tracce di esecuzione rimangono nella cache generale e possono essere recuperate utilizzando metodi di determinazione del contenuto della cache attraverso canali alternativi, che analizzano la variazione dei tempi di accesso ai dati memorizzati nella cache e non memorizzati. Per analizzare il contenuto della cache in condizioni di precisione insufficiente del timer disponibile in JavaScript, viene applicato il metodo proposto da Google, che inganna la strategia di espulsione dei dati dalla cache Tree-PLRU utilizzata nei processori e consente, aumentando il numero di cicli, di amplificare significativamente la differenza di tempo tra la presenza e l'assenza di un valore nella cache.

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