CVE-2014-3470: Exploring the SSL3_Send_Client_Key_Exchange Vulnerability in OpenSSL

In this long-read post, we will be discussing the vulnerability discovered in OpenSSL, specifically identified as CVE-2014-3470. We will dive deep into the details of the vulnerability, including code snippets, original references, and exploit details. For those who are not familiar with OpenSSL, it is a widely-used software library for enciphering and deciphering network traffic using the Secure Sockets Layer (SSL) and Transport Layer Security (TLS) protocols.

Introduction

The vulnerability CVE-2014-3470 is caused by a code flaw in the ssl3_send_client_key_exchange function in s3_clnt.c. This vulnerability affects OpenSSL versions before .9.8za, 1.. before 1..m, and 1..1 before 1..1h. When an anonymous ECDH (Elliptic Curve Diffie-Hellman) cipher suite is used, this particular vulnerability allows remote attackers to cause a denial of service (DoS) through NULL pointer dereference and a subsequent client crash. This can be triggered by a NULL certificate value.

Code Snippet

First, let's discuss the flawed code. The ssl3_send_client_key_exchange function in the s3_clnt.c file contains the problematic code. The relevant portion is provided below:

int ssl3_send_client_key_exchange(SSL *s)
{
...
   if (send_s3_client_key_exchange(s3,s,key,client_cert,key_len,alg_k)) {
     ...
   }
...
}

The key issue here is that the client_cert value could be NULL while being passed to the send_s3_client_key_exchange function. This ultimately results in a NULL pointer dereference and a client crash (DoS).

Exploit Details

To exploit this vulnerability, an attacker can intentionally send a malicious packet with a NULL certificate value to an affected OpenSSL client using an anonymous ECDH cipher suite. This will cause the client to crash, thus causing a denial of service.

Original References

The CVE-2014-3470 vulnerability was discovered and reported by the OpenSSL team. The official advisory can be found at the following link:

- OpenSSL Security Advisory

The patch for this vulnerability was provided by the OpenSSL team in the following releases

- OpenSSL .9.8za, available here
- OpenSSL 1..m, available here
- OpenSSL 1..1h, available here

Conclusion

The CVE-2014-3470 vulnerability within OpenSSL is a significant issue, as it causes denial of service for clients using anonymous ECDH cipher suites and affected versions. Although this vulnerability is not as severe as other OpenSSL vulnerabilities, such as the infamous "Heartbleed" bug, it still poses a risk to the overall security of SSL/TLS communication. To protect against this vulnerability, it is advised that users and administrators update their OpenSSL software to one of the patched versions provided by the OpenSSL team and discontinue using anonymous ECDH cipher suites.

Timeline

Published on: 06/05/2014 21:55:07 UTC
Last modified on: 11/07/2023 02:20:08 UTC