Protecting Against the POODLE SSLv3 Vulnerability


Introduction

On October 14th, 2014, POODLE (Padding Oracle On Downgraded Legacy Encryption), a vulnerability in version 3 of the SSL encryption protocol was disclosed. This vulnerability allows an attacker to read information encrypted with this version of the protocol in plain text using a man-in-the-middle attack.

Even though SSLv3 is an older version and is mainly obsolete, there are many pieces of software that still fall back on SSLv3 when better encryption options are not available. More importantly, it is possible for an attacker to force SSLv3 connections if SSLv3 is an available alternative for both participants attempting a connection.

The POODLE vulnerability affects any services or clients that make it possible to communicate using SSLv3. Because this is a flaw with the protocol design, and not an implementation issue, every piece of software that uses SSLv3 is vulnerable.

To find out more information about the vulnerability, consult the CVE information found at CVE-2014-3566.

 

What is POODLE?

POODLE is a weakness in version 3 of the SSL protocol that allows an attacker in a context of man-in-the-middle to decipher the plain text content of a SSLv3 encrypted message.

 

Who is Affected by POODLE?

POODLE affects every piece of software that can be coerced into communicating with SSLv3. This means that any software that implements a fallback mechanism that includes SSLv3 support is vulnerable and can be exploited.

Some common pieces of software that may be affected are web browsers, web servers, VPN servers, mail servers, etc.

 

How Does It Work?

The POODLE vulnerability exists because the SSLv3 protocol does not adequately check the padding bytes that are sent with encrypted messages. Since these messages cannot be verified by the receiving party, an attacker can replace them and pass the messages on to the intended destination. When done in a specific way, the modified payload will potentially be accepted by the recipient without complaint.

An average one out of every 256 requests will be accepted at the destination, allowing the attacker to decrypt a single byte. This can be repeated easily in order to progressively decrypt additional bytes. Any attacker able to repeatedly force a participant to resend data using this protocol can break the encryption in a very short amount of time.

 

How Can I Protect Myself?

Actions should be taken to ensure that you are not vulnerable in your roles as both a client and a server. Since encryption is usually negotiated between clients and servers, it is an issue that involves both parties.

Servers and clients should take steps to disable SSLv3 support completely. Many applications use better encryption by default, but implement SSLv3 support as a fallback option. This should be disabled, as a malicious user can force SSLv3 communication if both participants allow it as an acceptable method.

 

Protecting Common Applications

How to disable SSLv3 on some common server applications is covered below. Take care to evaluate your servers to protect any additional services that may rely on SSL/TCP encryption.

Because POODLE does not represent an implementation problem and is an inherent issue with the entire protocol, there is no workaround and the only reliable solution is to disable it.

 

Apache Web Server

To disable SSLv3 on the Apache web server, adjust the SSLProtocol directive provided by the mod_ssl module.

This directive can be set either at the server level or in a virtual host configuration. Depending on the distribution’s Apache configuration, the SSL configuration may be located in a separate file that is sourced.

Ubuntu

The server-wide specification for servers can be adjusted by editing the /etc/apache2/mods-available/ssl.conf file. If mod_ssl is enabled, a symbolic link will connect this file to the mods-enabled subdirectory:

Save and close the file. Restart the service to enable the changes:

 

CentOS

Adjust this in the SSL configuration file located here (if SSL is enabled):

Find the SSLProtocol directive. If this is not available, create it. Modify this to explicitly remove support for SSLv3:

Save and close the file. Restart the service to enable the changes:

 

OpenVPN VPN Server

Recent versions of OpenVPN do not allow SSLv3. The service is not vulnerable to this specific problem.

See this post on the OpenVPN forums for more information.

 

Postfix SMTP Server

If the Postfix configuration is set up to require encryption, it will use a directive called:

This can be found in the main Postfix configuration file:

 

To ensure that SSLv3 and SSLv2 are not accepted select the parameter below. If encryption is not forced to not change anything:

Save configuration. Restart the service to implement changes:

 

Further Steps

Along with server-side applications, any client applications should be updated.

Web browsers may be vulnerable to this issue because of their step-down protocol negotiation. Ensure that all browsers do not allow SSLv3 as an acceptable encryption method. This may be adjustable in the settings or through the installation of an additional plugin or extension.

 

Summary

POODLE is a dangerous vulnerability with far reaching ramifications because of a large installed application base which requires support for SSLv3. Protective measures need to be taken to protect both consumer and provider resources that utilize SSL encryption.