C'è un modo per mitigare BEAST senza disabilitare completamente AES?

23

Sembra che il modo più semplice per proteggere gli utenti contro l'attacco BEAST su TLS < = 1.0 sia preferire RC4 o addirittura disabilitare tutte le altre suite di crittografia (CBC) del tutto, ad es. specificando qualcosa come

SSLCipherSuite RC4-SHA:HIGH:!ADH

nella configurazione mod_ssl di Apache.

Tuttavia, il problema con CBC sembra essere stato risolto in TLS > = 1.1; esiste un modo per (ri) abilitare questi codici per i client che dichiarano di supportare TLS 1.1 o 1.2? Sembra esserci una soluzione:

SSLCipherSuite ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH

che fa il trucco specificando suite di crittografia disponibili solo in TLS > = 1.1. Ciò sembra avere l'effetto collaterale di impedire ai client TLS > = 1.1 di utilizzare una qualsiasi delle suite di crittografia "più vecchie".

Non c'è davvero alcun modo di dire esplicitamente a mod_ssl di usare le cifrature in modalità CBC per TLS > = 1.1, ma solo RC4 per SSL / TLS < = 1.0? Sembra una combinazione ottimale di sicurezza e compatibilità.

    
posta lxgr 11.07.2012 - 15:38
fonte

3 risposte

15

Un modo per mitigare BEAST è non fare nulla . Accade che, sebbene la vulnerabilità utilizzata in BEAST sia ancora lì, sfruttarla è piuttosto difficile. Richiede la capacità di eseguire richieste tra domini, con un alto livello di controllo sui dati inviati nella richiesta; in particolare, ha bisogno di dati "binari". Duong e Rizzo non hanno trovato un modo per mappare l'attacco su semplici tag <img> (Javascript ostile che produce tali tag, con un percorso scelto da un attaccante: il percorso arriva nella richiesta, ma è solo testo). Nella loro dimostrazione, potrebbero utilizzare due fori tra domini, uno in una versione bozza di WebSockets, l'altro nell'implementazione di Java da Oracle. Entrambi i fori sono stati quindi sistemati, quindi, adesso BEAST non si applica più (a meno che tu non abbia aggiornato il tuo browser per più di un anno, nel qual caso probabilmente hai problemi più grandi).

Dal momento che fare affidamento sull'assenza di vulnerabilità tra domini è, nel migliore dei casi, inconsistente, i venditori di browser hanno incluso anche alcune contromisure aggiuntive, con divisione del record . Quando il browser vuole inviare un blocco di n byte di dati, invece di inserirlo in un record SSL, lo divide in due record, il primo è molto piccolo. I limiti di registrazione non hanno alcun significato semantico in SSL / TLS, quindi è possibile eseguire tale suddivisione senza modificare il significato. Tuttavia, ogni record termina con un MAC calcolato sui dati del record e un numero di sequenza e utilizzando una chiave derivata dallo scambio di chiavi iniziale. Questo in qualche modo si comporta come un generatore di numeri pseudo-casuali. Pertanto, il piccolo record "emula" la generazione casuale di IV che rende immune TLS 1.1+ da BEAST.

Idealmente, la divisione sarebbe 0 / n : un record senza dati (ma sempre con un MAC), seguito da un record con i dati effettivi. Sono consentiti record a lunghezza zero (come per lo standard ) ma le implementazioni client e server non sono tollerabili (in particolare IE 6.0); i browser utilizzano invece uno split 1 / n-1 , che è altrettanto valido per sconfiggere BEAST, ma funziona anche con quasi tutti i client ei server SSL / TLS esistenti. Almeno Chrome e Firefox lo hanno spinto l'anno scorso .

La buona soluzione è TLS 1.1 + ma anche su SSL 3.0 e TLS 1.0, il problema BEAST può essere considerato fisso, almeno nel contesto Web. Pertanto, utilizza AES e sii felice.

    
risposta data 26.11.2012 - 00:36
fonte
10

OpenSSL ha una mitigation per BEAST che è stata abilitata di default a partire da 0.9 .6d, quindi fintanto che la versione di OpenSSL è questa o quella successiva e non hai impostato SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS non è necessario limitare le cifre o disabilitare TLS 1.0.

    
risposta data 25.07.2012 - 21:11
fonte
0

La mia comprensione è che TLS < 1.1 con qualsiasi codice a blocchi in modalità CBC è vulnerabile a BEAST. Ancora una volta, a mio avviso, le tue uniche opzioni sono utilizzare TLS 1.1 o versioni successive o utilizzare una codifica di streaming.

O, naturalmente, potresti usare un protocollo diverso che non è influenzato da BEAST, come SSH:)

    
risposta data 21.07.2012 - 17:54
fonte

Leggi altre domande sui tag