Torna al blog
dns Pubblicato: AEU DNS Newsroom

La battaglia di Cloudflare Workers contro Spectre: come il codice serverless è protetto dagli attacchi side-channel della CPU

La battaglia di Cloudflare Workers contro Spectre: come il codice serverless è protetto dagli attacchi side-channel della CPU

Cloudflare spiega come la sua piattaforma Workers neutralizzi minacce precedenti come Spectre, utilizzando restrizioni su Date, esecuzione a thread singolo e isolamento dinamico dei processi per mantenere il codice serverless al sicuro dagli attacchi side-channel.

Cloudflare gestisce una rete globale che memorizza e serve contenuti web, e la sua piattaforma Workers consente agli sviluppatori di eseguire codice su quella rete. Ma eseguire codice nel cloud significa pensare alla sicurezza a ogni livello. Una delle sfide più grandi è difendersi dalle vulnerabilità dei processori come Spectre. In un dettagliato post sul blog del 29 luglio 2020, Kenton Varda di Cloudflare ha spiegato come la piattaforma Workers mitiga queste minacce. Il suo post copre una varietà di tecniche, tra cui restrizioni sui tempi, sul threading e sull'isolamento dei processi.

La prima arma contro gli attacchi side-channel è bloccare al codice la misurazione locale del tempo. In Workers, l'oggetto Date è addomesticato in modo che i valori di inizio e fine di qualsiasi operazione risultino sempre esattamente gli stessi. Questo rimuove lo strumento di base che un attaccante userebbe per costruire un canale laterale temporale. Un canale laterale è un modo per dedurre dati segreti osservando indizi indiretti, come quanto tempo richiede un calcolo. Cloudflare ha implementato questo a metà 2017, ben prima che Spectre fosse annunciato pubblicamente. Il team era preoccupato dei canali laterali temporali fin dall'inizio e ha progettato il sistema con questa preoccupazione in mente.

Workers inoltre non può utilizzare multi-threading o memoria condivisa. Il multi-threading significa eseguire più attività contemporaneamente, e la memoria condivisa significa che più thread possono accedere agli stessi dati. Se uno dei due fosse consentito, un Worker malintenzionato potrebbe far gareggiare i thread per creare un timer nascosto. Quindi ogni evento viene elaborato su un singolo thread, e anche se più Workers gestiscono la stessa richiesta, vengono eseguiti in sequenza sullo stesso thread. Questo impedisce la creazione di timer impliciti.

Queste misure impediscono al codice di misurare il proprio tempo di esecuzione. Ma un attaccante può comunque misurarlo da remoto. Il client HTTP che invia una richiesta può semplicemente cronometrare quanto tempo impiega per ricevere una risposta. Questa misurazione è rumorosa perché il traffico Internet è imprevedibile. Ma un attaccante potrebbe eseguire l'attacco molte volte e fare la media dei risultati per filtrare il rumore. Cloudflare ha già considerato di reimpostare lo stato dell'applicazione tra le richieste, ma questo non aiuta perché il client dell'attaccante può memorizzare lo stato e rispedirlo alla richiesta successiva. Cloudflare afferma che, con l'aiuto di esperti prominenti di Spectre, non è riuscita a produrre un attacco reale che funzioni in produzione. Tuttavia, la mancanza di un attacco funzionante non impedisce all'azienda di costruire una difesa in profondità. Attualmente sta testando misure più avanzate.

Una di queste misure è l'isolamento dinamico dei processi. Gli attacchi Spectre sono molto lenti per natura. Hanno bisogno di ore o settimane per avere successo. Ma anche dopo un secondo di esecuzione, un attacco lascia una firma. Gli attaccanti Spectre creano deliberatamente modelli di prestazioni innaturali, specialmente quando sono costretti a ripetere miliardi di volte per superare le difese precedenti. Questi modelli appaiono nei contatori di prestazioni della CPU, che sono registri speciali che registrano statistiche come i cache miss e le predizioni dei salti.

Il problema con i contatori di prestazioni è che anche il codice legittimo può sembrare strano. Un programma con prestazioni scadenti potrebbe essere segnalato come sospetto. Cloudflare non vuole spegnere tali programmi. Invece, può riprogrammare un Worker che mostra prestazioni sospette nel proprio processo. Un processo è uno spazio di memoria separato per un programma. Una volta che un Worker è nel proprio processo, le difese integrate di Spectre del sistema operativo possono entrare in azione, proprio come fanno per i browser web desktop. Questo protegge il Worker senza danneggiarne la funzionalità, anche se c'è un leggero sovraccarico.

Isolare ogni Worker sarebbe troppo costoso. Ma isolarne alcuni è accettabile. E più tempo CPU usa un Worker, minore diventa il costo relativo dell'isolamento. Quindi Cloudflare usa l'isolamento dei processi per qualsiasi Worker che richiede molta CPU. È anche giusto riprogrammare un Worker in qualsiasi momento, poiché la piattaforma è flessibile.

Cloudflare ha lavorato su questo metodo per un anno con esperti dell'Università Tecnica di Graz in Austria. Quel team ha co-scoperto la vulnerabilità Spectre ed è stato responsabile di un enorme numero di scoperte successive. La collaborazione evidenzia l'importanza della ricerca per stare al passo con le minacce alla sicurezza.

Per i proprietari di siti web e i team IT, questa analisi approfondita mostra quanto la sicurezza possa essere complessa dietro le quinte. Mentre Cloudflare protegge i suoi Workers dagli attacchi side-channel a livello di CPU, puoi aggiungere un altro livello di protezione per il tuo traffico utilizzando un DNS privacy-first come AEU DNS, che blocca i domini dannosi e mantiene crittografate le tue query DNS. In questo modo, anche se gli attaccanti cercano di raggiungerti attraverso siti noti dannosi, la richiesta si ferma prima di arrivare al tuo browser.

Termini spiegati

Spectre
Una falla di sicurezza nei processori moderni che consente a un programma dannoso di leggere potenzialmente dati dalla memoria di un altro programma.
side channel
Un modo indiretto per rubare informazioni osservando indizi come quanto tempo richiede un calcolo o quanta energia consuma.
serverless
Un modello di cloud computing in cui il fornitore gestisce i server e scala automaticamente, così gli sviluppatori possono eseguire codice senza pensare all'infrastruttura.
Workers
La piattaforma di computing serverless di Cloudflare che consente agli sviluppatori di eseguire codice JavaScript sulla rete globale di Cloudflare.
process isolation
Eseguire ogni programma nel proprio spazio di memoria separato, così un problema di sicurezza in un programma non può facilmente influenzarne un altro.

Come proteggerti

  1. Attiva gli aggiornamenti automatici per il tuo sistema operativo e il browser web, perché le patch per vulnerabilità dei processori come Spectre vengono spesso distribuite in questo modo.
  2. Usa un servizio DNS incentrato sulla privacy come AEU DNS per bloccare domini dannosi che potrebbero essere collegati ad attacchi informatici.
  3. Evita di scaricare e installare software da fonti non attendibili, poiché gli attaccanti possono usarlo per tentare di sfruttare vulnerabilità side-channel.
  4. Controlla le impostazioni di sicurezza del tuo browser per assicurarti che funzionalità come l'isolamento dei siti o l'isolamento dei processi siano abilitate. In Chrome, questa è attiva per impostazione predefinita; verifica in Impostazion

Fonte: blog.cloudflare.com

Ottieni un DNS privato e cifrato