Diventa Autore per CoreTech | Scopri di più
09/07/20 CoreTech Blog
BEAST è l'acronimo di Browser Exploit Against SSL / TLS . È un attacco contro le vulnerabilità della rete nei protocolli SSL TLS 1.0 e precedenti . L'attacco è stato eseguito per la prima volta nel 2011 dai ricercatori di sicurezza Thai Duong e Juliano Rizzo, ma la vulnerabilità teorica è stata scoperta nel 2002 da Phillip Rogaway.
Perché vogliamo parlare di una tecnica di attacco così vecchia? Secondo una ricerca condotta per il Rapporto sulle vulnerabilità delle applicazioni Web Acunetix 2020 , il 30,7% dei server Web sottoposti a scansione ha ancora abilitato TLS 1.0 vulnerabile, il che significa che sono sensibili all'attacco BEAST.
Ciò dimostra come la sicurezza IT sia ancora un grosso problema per le aziende e, indipendentemente dal numero di nuove funzionalità che migliorano la sicurezza, i vecchi attacchi rappresentano ancora un grave problema. Questa situazione si applica anche alle vulnerabilità SSL / TLS, tra cui BEAST, BREACH, POODLE o OpenSSL Heartbleed.
Il protocollo TLS (Transport Layer Security) è il successore di Secure Sockets Layer (SSL). Entrambi sono protocolli crittografici che consentono di utilizzare diverse suite di crittografia per crittografare la comunicazione tra un browser Web e un server Web. Ciò rende impossibile per qualcuno ascoltare la comunicazione e rubare dati riservati.
Gli aggressori possono essere in grado di attingere alla conversazione tra un server Web e un browser Web utilizzando tecniche di attacco man-in-the-middle . In tal caso e in assenza di crittografia, hanno accesso a tutte le informazioni scambiate tra il server Web e il browser Web: password, numeri di carta di credito, ecc.
Tuttavia, anche la crittografia potrebbe avere i suoi punti deboli ed essere rotta. Questo è esattamente il caso dell'attacco BEAST. I ricercatori hanno scoperto che la crittografia TLS 1.0 (e precedenti) può essere interrotta rapidamente, dando all'aggressore l'opportunità di ascoltare la conversazione.
Se il tuo server supporta TLS 1.0, l'autore dell'attacco può far credere che questo è l'unico protocollo che il client può usare. Questo è chiamato un attacco di downgrade del protocollo. Quindi, l'attaccante può usare l'attacco BEAST per intercettare.
Il protocollo TLS utilizza la crittografia simmetrica con i cifrari a blocchi. Crittografia simmetrica significa che è necessaria la stessa chiave per crittografare e decrittografare il messaggio. I cifrari a blocchi indicano che le informazioni sono crittografate in blocchi di dati a lunghezza fissa. Se non ci sono abbastanza dati per l'ultimo blocco, l'ultimo blocco viene riempito. Alcuni cifrari a blocchi popolari sono DES, 3DES e AES.
Se gli stessi dati e la stessa chiave fornivano sempre lo stesso contenuto crittografato, un utente malintenzionato potrebbe facilmente interrompere qualsiasi crittografia. Ecco perché TLS utilizza i vettori di inizializzazione. Ciò significa che la crittografia viene trasmessa utilizzando contenuto casuale. In questo modo, se si utilizzano gli stessi dati e la stessa chiave più volte, ogni volta che si ottiene un contenuto crittografato diverso.
Tuttavia, non sarebbe efficiente utilizzare dati casuali per eseguire il seeding di ogni blocco in un codice a blocchi. Ecco perché SSL / TLS utilizza anche il cipher block chaining (CBC). I blocchi sono concatenati tra loro usando un'operazione XOR logica. In pratica, ciò significa che il valore di ciascun blocco dipende dal valore del blocco precedente. Pertanto, un valore crittografato che rappresenta alcuni dati originali dipende dal blocco precedente di tali dati.
Il principio di base della violazione dei codici è: tutto può essere infranto, dipende solo da quanto tempo ci vuole. Lo stesso principio si applica alle cifre SSL / TLS. Una buona cifra non è impossibile da rompere. È semplicemente impraticabile rompere - impossibile rompere in un ragionevole lasso di tempo usando le attuali risorse di calcolo.
L'attaccante potrebbe infrangere un codice a blocchi provando combinazioni diverse e vedendo se ottengono lo stesso risultato con lo stesso vettore di inizializzazione (che conoscono). Tuttavia, possono verificarlo solo per un intero blocco alla volta e un blocco può avere, ad esempio, 16 byte. Ciò significa che per verificare il blocco, l'attaccante dovrebbe testare 256 16 combinazioni (3.4028237e + 38) per ogni blocco.
L'attacco BEAST è molto più semplice: l'attaccante deve solo indovinare un singolo byte alla volta. Questo può essere fatto se l'attaccante è in grado di prevedere la maggior parte dei dati (ad esempio codice HTML) e necessita solo di un'informazione segreta, ad esempio una password. L'aggressore può quindi testare attentamente la crittografia, selezionando la giusta lunghezza dei dati, in modo che abbiano solo un byte di informazioni in un blocco che non conoscono. E quindi, possono testare il blocco solo per 256 combinazioni di questo byte. Quindi, ripetono il processo per il byte successivo, trovando presto l'intera password.
Un attacco BEAST non è facile da eseguire. L'attaccante deve utilizzare un exploit diverso per diventare un man-in-the-middle e iniettare contenuto nel flusso. I ricercatori che hanno scoperto questa vulnerabilità hanno utilizzato un'applet Java ma anche un utente malintenzionato può utilizzare JavaScript. Anche se l'attaccante induce l'utente a eseguire codice Java o JavaScript vulnerabile, l'applicazione Web è protetta per impostazione predefinita utilizzando la stessa politica di origine e ciò rende impossibile l'iniezione (a meno che l'applicazione Web non abbia intestazioni CORS sul lato server che sovrascrivono la politica predefinita).
La difficoltà dell'attacco è il motivo per cui questa vulnerabilità viene raramente sfruttata, nonostante un terzo dei siti Web supporti ancora il protocollo TLS 1.0 vulnerabile (secondo le nostre statistiche). Tuttavia, è possibile e quindi dovresti proteggerti da esso.
Scoprire se il tuo server web è vulnerabile a BEAST è molto semplice. Se supporta TLS 1.0 o qualsiasi versione di SSL, è vulnerabile a BEAST.
Puoi facilmente scoprire se il tuo server Web supporta TLS 1.0 o qualsiasi versione di SSL utilizzando Acunetix o manualmente. Il vantaggio di usare Acunetix è: troverai anche tutte le tue vulnerabilità web che altri strumenti non scopriranno. E qual è il punto di riparare solo una vulnerabilità e nemmeno di conoscere gli altri, che può essere altrettanto pericoloso?
BEAST mostra la principale differenza tra le vulnerabilità del web e le vulnerabilità della rete: le vulnerabilità della rete sono molto facili da rilevare anche utilizzando strumenti gratuiti e l'unico modo per eliminarle è aggiornare il software o l'hardware interessati. Le vulnerabilità del web devono essere rilevate da software specializzato come Acunetix e possono essere eliminate correggendo il codice dell'applicazione.
Inizialmente, la crittografia RC4 era consigliata per mitigare gli attacchi BEAST (poiché si tratta di un codice di flusso, non di un codice a blocchi). Tuttavia, in seguito RC4 è risultato non sicuro. Attualmente, PCI DSS (Payment Card Industry Data Security Standard) vieta l'utilizzo di questo codice. Pertanto, non dovresti mai usare questo metodo per proteggerti da BEAST.
Proprio come con le altre vulnerabilità della rete, esiste solo una semplice soluzione a BEAST: disattivare TLS 1.0 e protocolli precedenti. Ecco come è possibile farlo per il software server web più popolare. Ciò che consigliamo è anche disabilitare TLS versione 1.1 e lasciare in esecuzione solo TLS 1.2 (tutti i principali browser come Google Chrome, Firefox e Safari supportano TLS 1.2).
Modificare lo SSLProtocol direttiva nel ssl.conf file, che in genere si trova in /etc/httpd/conf.d/ssl.conf. Ad esempio, se hai:
SSLProtocol all -SSLv3
cambiarlo in:
SSLProtocol TLSv1.2
Quindi, riavvia httpd .
Modifica la direttiva ssl_protocols nel file nginx.conf . Ad esempio, se hai:
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
cambiarlo in:
ssl_protocols TLSv1.2;
Quindi, riavvia nginx.
Per disabilitare TLS 1.0 in Microsoft IIS, è necessario modificare le impostazioni del registro nel sistema operativo Microsoft Windows.
Ripetere i passaggi precedenti per tutte le versioni di SSL e TLS 1.1 (se si desidera seguire la nostra raccomandazione e anche disabilitarla).