In my server application using OpenSSL, to prevent the poodle attack, I added an option to fully allow/prevent SSL3 protocol.
SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2); //Prevent SSLv2
SSL_CTX_set_options(ctx,SSL_OP_NO_SSLv3); // Prevent SSL3
The allowing of SSL3 was done to inter-op with those clients which doesn't support TLS.
There is a way to be immune to POODLE attack with SSLv3. Disallow CBC-mode cipher suites in SSLv3.
Now,if I disable CBC-mode ciphers from my application, it affects TLS as well (Have one for one Server Interface). Is there a way I can disallow CBC-mode cipher only on SSL3 connections but use them for TLS connections?
Edit:
Following shows in brief about how loading cipher suites into OpenSSL's CTX object:
Cipher-Suite-Table Configuration:
--------------------------------
rsa-rc4-md5
rsa-des-cbc3-sha
rsa-aes256-cbc-sha
get_cipher_suites(ssl_cipher_suites);
get_cipher_suites(char *ssl_cipher_suites)
{
for(i=0; i < MAX_CIPHERS;i++) // traverse the list of cipher suites configured
{
strncat(ssl_cipher_suites,configured_suite[i]);
strncat(ssl_cipher_suites,":",1);
}
}
SSL_CTX_set_cipher_list(ctx,ssl_cipher_suites);