Forum Discussion
Dave_Burnett_20
Jul 03, 2012Nimbostratus
SSL Session Ciphers
Recent testing has identified that our web host allows clients to resume an SSL session with a different cipher to that originally negotiated.
e.g The server allowed the following session over SSLv3 to be resumed as follows : Session ID : 61ed39e667977078d6740c3b489280d9f62c56eac1bbf8a63eb76fe6d5de5ace
Initial Cipher : SSL3_CK_RSA_RC4_128_SHA (0x0005)
Resumed Cipher : SSL3_CK_RSA_DES_192_CBC3_SHA (0x000a)
We are being told that an attacker managing to locate the start of an SSL connection might be able to manipulate the session cache to cause subsequent resumptions of the session in order to use a cipher chosen by the attacker.
Is there a way the F5 can be configured to enforce resumed SSL sessions into using the originally negotiated cipher or is this purely a web server configuration ?
Many thanks
- nitassEmployeeis this relevant?
- Dave_Burnett_20NimbostratusA really prompt response ! Thanks for this.
- nitassEmployeeBut then it goes on to say that clients can only change to a cipher that has been enabled on the F5, which seems to suggest that attackers could still change the cipher and use it to attack the webserver session.
- Dave_Burnett_20NimbostratusIf I'm reading you correctly you're saying that the enforcement of using the origional cipher is possible by a combination of i-rules?
- nitassEmployeei am not an expert. anyway, it is fun to write irule, so i never mind to do it if i can. however, in some case, it is difficult or i am not able to test it out. i prefer testing it before giving irule.
[root@ve10:Active] config b virtual bar list virtual bar { snat automap pool foo destination 172.28.19.79:443 ip protocol 6 rules myrule profiles { clientssl { clientside } http {} tcp {} } } [root@ve10:Active] config b rule myrule list rule myrule { when RULE_INIT { set static::tabletimeout 3600 } when CLIENT_ACCEPTED { log local0. "[IP::client_addr]:[TCP::client_port] is connecting" } when CLIENTSSL_HANDSHAKE { set sid "[SSL::sessionid]" set cp "[SSL::cipher name]" log local0. "sessionid is $sid" log local0. "cipher is $cp" if {[table lookup $sid] ne ""} { if {[table lookup $sid] ne $cp} { log local0. "resume ssl session but cipher is different" reject } log local0. "resume ssl session and cipher is identical" } else { log local0. "new ssl session" table set $sid $cp $static::tabletimeout indefinite } } } /var/log/ltm Jul 3 23:31:03 local/tmm info tmm[5111]: Rule myrule : 192.168.206.55:51112 is connecting Jul 3 23:31:03 local/tmm info tmm[5111]: Rule myrule : sessionid is 80f1024444a55cd8189cffe6ca7e7c18decbac0776a4c09e1b762accc8e86974 Jul 3 23:31:03 local/tmm info tmm[5111]: Rule myrule : cipher is RC4-SHA Jul 3 23:31:03 local/tmm info tmm[5111]: Rule myrule : resume ssl session and cipher is identical
- Dave_Burnett_20NimbostratusWow. Thanks for this.
Recent Discussions
Related Content
DevCentral Quicklinks
* Getting Started on DevCentral
* Community Guidelines
* Community Terms of Use / EULA
* Community Ranking Explained
* Community Resources
* Contact the DevCentral Team
* Update MFA on account.f5.com
Discover DevCentral Connects