[gnutls-devel] _gnutls_extension_list_check() isn't RFC 5746 compliant
Henrik Grubbström
grubba at grubba.org
Mon Dec 30 19:03:02 CET 2013
Hi.
The gnutls-cli-debug 3.2.8 test "Checking for SSL 3.0 support" fails
against servers that implement RFC 5746.
The client code sends the TLS_EMPTY_RENEGOTIATION_INFO_SCSV SCSV:
Received on the server from the client:
10 : SSL_rsa_with_3des_ede_cbc_sha
5 : SSL_rsa_with_rc4_128_sha
4 : SSL_rsa_with_rc4_128_md5
22 : SSL_dhe_rsa_with_3des_ede_cbc_sha
19 : SSL_dhe_dss_with_3des_ede_cbc_sha
49170 : TLS_ecdhe_rsa_with_3des_ede_cbc_sha
49169 : TLS_ecdhe_rsa_with_rc4_128_sha
49160 : TLS_ecdhe_ecdsa_with_3des_ede_cbc_sha
49159 : TLS_ecdhe_ecdsa_with_rc4_128_sha
255 : TLS_empty_renegotiation_info_scsv
For which according to RFC 5746 3.6 the server should:
o When a ClientHello is received, the server MUST check if it
includes the TLS_EMPTY_RENEGOTIATION_INFO_SCSV SCSV. If it does,
set the secure_renegotiation flag to TRUE.
o If the secure_renegotiation flag is set to TRUE, the server MUST
include an empty "renegotiation_info" extension in the ServerHello
message.
However the test in _gnutls_extension_list_check() doesn't like receiving
extensions it didn't request as extensions, and the test fails:
|<3>| HSK[0x657090]: SERVER HELLO (2) was received. Length 67[67], frag offset 0, frag length: 67, sequence: 0
|<3>| HSK[0x657090]: Server's version: 3.0
|<3>| HSK[0x657090]: SessionID length: 16
|<3>| HSK[0x657090]: SessionID: 52c1acce50696b6553534c3300000000
|<3>| HSK[0x657090]: Selected cipher suite: ECDHE_RSA_ARCFOUR_128_SHA1
|<3>| HSK[0x657090]: Selected compression method: NULL (0)
|<3>| EXT[0x657090]: Parsing extension 'SAFE RENEGOTIATION/65281' (1 bytes)
|<2>| ASSERT: gnutls_extensions.c:177
I see a couple of possible approaches to fixing the bug (in order of
desirability):
o Have SAFE RENEGOTIATION added to session->internals.extensions_sent
whenever TLS_EMPTY_RENEGOTIATION_INFO_SCSV is in the list of supported
cipher suites.
o Have a special case in _gnutls_extension_list_check() that
just ignores this extension.
o Stop sending TLS_EMPTY_RENEGOTIATION_INFO_SCSV in this test.
Thanks and a Happy New Year!
--
Henrik Grubbström grubba at grubba.org
Roxen Internet Software AB grubba at roxen.com
More information about the Gnutls-devel
mailing list