search menu icon-carat-right cmu-wordmark

CERT Coordination Center

OpenSSL re-uses unsafe prime numbers in Diffie-Hellman protocol

Vulnerability Note VU#257823

Original Release Date: 2016-01-28 | Last Revised: 2016-01-29

Overview

OpenSSL may generate unsafe primes for use in the Diffie-Hellman protocol, which may lead to disclosure of enough information for an attacker to recover the private encryption key.

Description

CWE-325: Missing Required Cryptographic Step - CVE-2016-0701

OpenSSL 1.0.2 introduced the ability to generate X9.42 style parameter files as required by RFC 5114. The primes generated in this mode may be 'unsafe', enabling generation of groups containing small subgroups, which may allow for cryptographic attacks that may recover the key. OpenSSL prior to 1.0.2f did not properly check for this possibility.

Furthermore, OpenSSL prior to 1.0.2f will by default reuse this number for the life of the process. Such a number, particularly if re-used, severely weakens applications of the Diffie-Hellman protocol such as TLS, allowing an attacker in some scenarios to possibly determine the Diffie-Hellman private exponent and decrypt the underlying traffic.

The researcher states in a blog post however that this attack "requires that the attacker complete multiple handshakes in which the peer (OpenSSL in this case) uses the same private DH exponent."

CWE-757: Selection of Less-Secure Algorithm During Negotiation ('Algorithm Downgrade') - CVE-2015-3197

According to OpenSSL, "A malicious client can negotiate SSLv2 ciphers that have been disabled on the server and complete SSLv2 handshakes even if all SSLv2 ciphers have been disabled, provided that the SSLv2 protocol was not also disabled via SSL_OP_NO_SSLv2."

For more information, please see OpenSSL's security advisory.

The CVSS score below is based on CVE-2016-0701.

Impact

A malicious remote user may be able to learn sensitive information by obtaining the decryption key. A remote attacker may also be able to negotiate for weak SSLv2 ciphers even if the SSLv2 ciphers have been disabled, allowing for further known attacks.

Solution

Apply an update

OpenSSL version 1.0.2f and 1.0.1r have been released to address these issues. Affected users should update as soon as possible.

Users may also consider the following mitigations:

Enable SSL_OP_SINGLE_DH_USE option

OpenSSL prior to version 1.0.2f may enable the SSL_OP_SINGLE_DH_USE option to prevent reuse of primes in the Diffie-Hellman protocol. This may help mitigate attacks against use of weak primes.

Vendor Information

257823
 

OpenSSL Affected

Updated:  January 28, 2016

Status

Affected

Vendor Statement

We have not received a statement from the vendor.

Vendor Information

We are not aware of further vendor information regarding this vulnerability.

Vendor References

Google Unknown

Updated:  January 28, 2016

Status

Unknown

Vendor Statement

We have not received a statement from the vendor.

Vendor Information

We are not aware of further vendor information regarding this vulnerability.

Addendum

Google maintains BoringSSL, a fork of OpenSSL.

If you have feedback, comments, or additional information about this vulnerability, please send us email.

LibreSSL Unknown

Updated:  January 28, 2016

Status

Unknown

Vendor Statement

We have not received a statement from the vendor.

Vendor Information

We are not aware of further vendor information regarding this vulnerability.


CVSS Metrics

Group Score Vector
Base 8.8 AV:N/AC:M/Au:N/C:C/I:C/A:N
Temporal 6.9 E:POC/RL:OF/RC:C
Environmental 6.9 CDP:ND/TD:H/CR:ND/IR:ND/AR:ND

References

Acknowledgements

OpenSSL credits Antonio Sanso of Adobe for reporting CVE-2016-0701, and Nimrod Aviram and Sebastian Schinzel for reporting CVE-2015-3197.

This document was written by Garret Wassermann.

Other Information

CVE IDs: CVE-2016-0701, CVE-2015-3197
Date Public: 2016-01-28
Date First Published: 2016-01-28
Date Last Updated: 2016-01-29 18:01 UTC
Document Revision: 54

Sponsored by CISA.