Google ha dimostrato lo sfruttamento delle vulnerabilità Spectre tramite l'esecuzione di JavaScript nel browser

L'azienda Google ha pubblicato diversi prototipi di exploit che mostrano la possibilità di sfruttare vulnerabilità di tipo Spectre durante l'esecuzione di codice JavaScript nel browser, eludendo i metodi di protezione precedentemente implementati. Questi exploit possono essere utilizzati per accedere alla memoria del processo che gestisce il contenuto web nella scheda attuale. Per testare il funzionamento dell'exploit, è stato avviato il sito leaky.page, e il codice che descrive la logica d'operazione è disponibile su GitHub.

Il prototipo proposto è progettato per attaccare sistemi con processori Intel Core i7-6500U in un ambiente Linux e Chrome 88. Per applicare l'exploit in altri ambienti, sono necessarie modifiche. Il metodo di sfruttamento non è specifico per i processori Intel: dopo un'adeguata adattamento, è stata confermata la funzionalità dell'exploit su sistemi con CPU di altri produttori, inclusi Apple M1 basati su architettura ARM. Dopo lievi modifiche, l'exploit risulta funzionante anche su altri sistemi operativi e in altri browser basati su motori Chromium.

In un ambiente basato su Chrome 88 e processori Intel Skylake, è stato possibile ottenere una fuoriuscita di dati dal processo responsabile dell'elaborazione del contenuto web nella scheda attuale di Chrome (processo renderer), con una velocità di 1 kilobyte al secondo. Inoltre, sono stati sviluppati prototipi alternativi, come un exploit che permette, a fronte di una riduzione della stabilità, di aumentare la velocità di fuoriuscita fino a 8kB/s utilizzando un timer performance.now() con una precisione di 5 microsecondi (0,005 millisecondi). È stata anche preparata una versione che funziona con una precisione del timer di un millisecondo, la quale poteva essere utilizzata per accedere alla memoria di un altro processo con una velocità di circa 60 byte al secondo.

Il codice dimostrativo pubblicato è composto da tre parti. La prima parte esegue la calibrazione del timer per valutare il tempo necessario per completare le operazioni richieste per recuperare i dati rimasti nella cache della CPU a seguito dell'esecuzione speculativa delle istruzioni. La seconda parte determina la disposizione della memoria utilizzata per allocare un array JavaScript.

La terza parte sfrutta direttamente la vulnerabilità Spectre per determinare il contenuto della memoria del processo corrente creando le condizioni per l'esecuzione speculativa di determinate operazioni, i cui risultati vengono scartati dal processore dopo aver determinato una previsione errata. Tuttavia, le tracce di esecuzione si depositano nella cache generale e possono essere recuperate mediante metodi di determinazione del contenuto della cache tramite canali secondari, che analizzano la variazione del tempo di accesso ai dati in cache e non in cache.

La tecnica di sfruttamento proposta permette di fare a meno di timer ad alta precisione, accessibili tramite l'API performance.now(), e senza il supporto del tipo SharedArrayBuffer, che consente di creare array in memoria condivisa. L'exploit include un gadget Spectre che provoca un'esecuzione speculativa controllata del codice e un analizzatore di perdite tramite canali secondari, che determina i dati memorizzati nella cache ottenuti durante l'esecuzione speculativa.

Il gadget è realizzato utilizzando un array JavaScript, in cui si tenta di accedere a un'area al di fuori dei confini del buffer, influenzando lo stato del blocco di previsione delle transizioni a causa della presenza di un controllo della dimensione del buffer aggiunto dal compilatore (la CPU esegue speculativamente l'accesso, ma ripristina lo stato dopo il controllo). Per analizzare il contenuto della cache in condizioni di precisione insufficiente del timer, è stato proposto un metodo che inganna la strategia di espulsione dei dati dalla cache Tree-PLRU utilizzata nei processori, consentendo di aumentare significativamente la differenza di tempo nel fornire il valore dalla cache rispetto all'assenza di un valore nella cache aumentando il numero di cicli.

Si segnala che Google ha pubblicato un prototipo di exploit per dimostrare la realistica vulnerabilità degli attacchi che sfruttano le falle della classe Spectre e per incoraggiare gli sviluppatori web ad utilizzare tecniche che minimizzino i rischi derivanti da attacchi di questo tipo. Google ritiene che senza una significativa revisione del prototipo proposto, non sia possibile creare exploit universali pronti non solo per la dimostrazione, ma anche per l'uso generale.

Per ridurre il rischio, si consiglia ai proprietari di siti web di utilizzare le recenti intestazioni Cross-Origin Opener Policy (COOP), Cross-Origin Embedder Policy (COEP), Cross-Origin Resource Policy (CORP), Fetch Metadata Request, X-Frame-Options, X-Content-Type-Options e SameSite Cookie. Questi meccanismi non proteggono direttamente dagli attacchi, ma consentono di isolare i dati del sito da perdite nei processi in cui potrebbe essere eseguito il codice JavaScript dell'attaccante (la perdita avviene dalla memoria del processo attuale, che potrebbe elaborare anche i dati di un altro sito aperto nella stessa scheda). L'idea principale è separare l'esecuzione del codice del sito da codice di terze parti, proveniente da fonti non affidabili, come quello incluso attraverso iframe.

Riproduci video


Fonte: opennet.ru
Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster