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.