Dovecot TLS connessione handshake ChangeCipherSpec

1

Oggi ho aggiunto un dominio virtuale al nostro server di posta elettronica e poi ho controllato la sicurezza della connessione Dovecot TLS. Il test è stato eseguito da un host remoto che utilizza Thunderbird. Ho catturato la connessione con tcpdump e poi ho passato a ssldump . Ho anche usato nmap per verificare le cifre consentite. Tutto ciò può essere trovato in un pastebin qui .

Non capisco il server- > client ChangeCipherSpec (dove dice usando TLS_RSA_WITH_RC4_128_MD51 10 0.5695 ) Potrei semplicemente essere confuso su come la connessione TLS è stata configurata ma non ho abilitato le cifrature di tipo RC4 così come (o perché ) sta succedendo?

    
posta TrustNoOne 24.10.2015 - 00:28
fonte

2 risposte

2

Mi sono imbattuto recentemente in questo problema. Corriamo ssldump e openssl s_client allo stesso tempo - openssl mostrerebbe che il cipher attivo è AES256-SHA , ma ssldump continuerà a stampare TLS_RSA_WITH_RC4_128_MD5 nel suo output.

Credo di aver trovato un bug in ssldump . Guardando attraverso il codice sorgente ho trovato il seguente:

  • I pacchetti SSL handshake vengono decodificati nella funzione decode_ContentType_handshake() in ssl/ssl_enum.c:20
  • Questa funzione chiama quindi ssl_decode_switch(ssl,HandshakeType_decoder,t,dir,seg,data) , dove HandshakeType_decoder è una matrice di decoder structs \
  • ssl_decode_switch(ssl,dtable,value,dir,seg,data) ( ssl/ssl_print.c:204 ) itera attraverso l'array dtable finché non trova la voce decoder con type == value o type == -1 ("non trovato")
  • Tuttavia, guardando la definizione di HandshakeType_decoder in ssl/ssl_enum.c:212 la matrice non viene terminata con una struttura decoder con type == -1 - alla fine c'è un 0
  • Inoltre, immediatamente dopo la definizione HandshakeType_decoder è la definizione di cipher_suite_decoder ( ssl/ssl_enum.c:266 ) che è una matrice della stessa struttura decoder . Questo array contiene un elenco di cifre.
  • Ciò significa che se il tipo di handshake SSL non viene trovato in HandshakeType_decoder , ssl_decode_switch() continuerà la ricerca in cipher_suite_decoder come sarà (probabilmente) in memoria direttamente seguendo i dati HandshakeType_decoder
  • E questo si sta verificando nel mio caso. Per qualche ragione decode_ContentType_handshake() ha decodificato il pacchetto handshake di tipo 4 che ssl_decode_switch() non è stato trovato in HandshakeType_decoder . Tuttavia, per coincidenza 4 è il valore type della voce cipher_suite_decoder con name == TLS_RSA_WITH_RC4_128_MD5

Ho esaurito il tempo per indagare su questo problema, quindi non so perché ssldump sta tentando di decodificare un pacchetto di handshake con un tipo non valido. Sono comunque convinto che l'array HandshakeType_decoder debba essere terminato con un -1 per impedire l'overrun.

    
risposta data 14.12.2015 - 17:50
fonte
0

Non ho idea di cosa SSLDump stia facendo lì.

Ma il client segnala solo il supporto per due pacchetti di crittografia e quindi il server sceglie quello etichettato

cipherSuite         Unknown value 0xc014

E questo valore esadecimale decodifica in :

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

Quindi non c'è RC4 lì.

    
risposta data 24.10.2015 - 00:47
fonte

Leggi altre domande sui tag