It took the developers of OpenSSL just over two weeks to patch a high severity vulnerability that allows attackers to obtain information that could be used to decrypt secure traffic.
The flaw, identified as CVE-2016-0701, was reported on January 12 by Antonio Sanso of Adobe and it was patched by the OpenSSL Project on Thursday with the release of version 1.0.2f. The researcher’s attack is based on a key recovery method described in a paper published in 1997.
Starting with OpenSSL 1.0.2, developers introduced support for generating X9.42 style parameter files as required in RFC 5114. The problem is that the primes in these files may not be “safe,” which in certain circumstances could allow an attacker to obtain the key needed to decrypt traffic.
In the case of applications using the Diffie-Hellman (DH) key exchange, such as TLS, if they are configured with parameters based on unsafe primes, an attacker could obtain enough information to recover the private DH exponent.
For an attack to work, the attacker must complete multiple handshakes with the target, which must use the same private DH exponent each time. In the case of a TLS server, an attacker could obtain its private key and decrypt traffic if the server is reusing the private DH exponent or is using a static DH ciphersuite.
OpenSSL has an option for using short-lived DH exponents in TLS, namely SSL_OP_SINGLE_DH_USE, but it’s not enabled by default. If the option is not enabled, the server uses the same private key until the server process is terminated, which exposes it to attacks.
“It is believed that many popular applications do set this option and would therefore not be at risk,” the OpenSSL Project said in its advisory.
According to Sanso, the developers of LibreSSL deprecated the use of SSL_OP_SINGLE_DH_USE this week, while Google’s BoringSSL removed support for the option months ago. The researcher says it’s unclear if these crypto libraries are affected when using a static DH ciphersuite.
The OpenSSL Project addressed the issue by adding a check to detect attacks in the case of static ciphersuites and by enabling the SSL_OP_SINGLE_DH_USE option by default, but developers have warned that both solutions could have an impact on performance.
OpenSSL 1.0.1r was also released on Thursday. This version patches a low severity SSLv2 cipher issue (CVE-2015-3197) and provides an update for the previous fix for the TLS vulnerability dubbed “Logjam.” These flaws also affect OpenSSL 1.0.2 so they have also been patched in version 1.0.2f.
The OpenSSL Project has once again reminded users that versions 0.9.8 and 1.0.0 are no longer supported since December 31, 2015, and they don’t receive security updates. Support for version 1.0.1 will end on December 31, 2016.