Vulnerabilities 1.0.1

If you think you have found a security bug in OpenSSL, please report it to us.

Show issues fixed only in OpenSSL 3.3, 3.2, 3.1, 3.0, 1.1.1, 1.1.0, 1.0.2, 1.0.1, 1.0.0, 0.9.8, 0.9.7, 0.9.6, or all versions.

OpenSSL 1.0.1 is out of support since 1st January 2017 and no longer receiving updates.

CVE-2016-6306

Severity
Low
Published at
21 September 2016
Found by
Shi Lei (Gear Team, Qihoo 360 Inc.)
Affected
  • from 1.0.1 before 1.0.1u
  • from 1.0.2 before 1.0.2i
References

In OpenSSL 1.0.2 and earlier some missing message length checks can result in OOB reads of up to 2 bytes beyond an allocated buffer. There is a theoretical DoS risk but this has not been observed in practice on common platforms. The messages affected are client certificate, client certificate request and server certificate. As a result the attack can only be performed against a client or a server which enables client authentication.

CVE-2016-6304

Severity
High
Published at
22 September 2016
Found by
Shi Lei (Gear Team, Qihoo 360 Inc.)
Affected
  • from 1.0.1 before 1.0.1u
  • from 1.0.2 before 1.0.2i
  • from 1.1.0 before 1.1.0a
References

A malicious client can send an excessively large OCSP Status Request extension. If that client continually requests renegotiation, sending a large OCSP Status Request extension each time, then there will be unbounded memory growth on the server. This will eventually lead to a Denial Of Service attack through memory exhaustion. Servers with a default configuration are vulnerable even if they do not support OCSP. Builds using the “no-ocsp” build time option are not affected. Servers using OpenSSL versions prior to 1.0.1g are not vulnerable in a default configuration, instead only if an application explicitly enables OCSP stapling support.

CVE-2016-6303

Severity
Low
Published at
24 August 2016
Found by
Shi Lei (Gear Team, Qihoo 360 Inc.)
Affected
  • from 1.0.1 before 1.0.1u
  • from 1.0.2 before 1.0.2i
References

An overflow can occur in MDC2_Update() either if called directly or through the EVP_DigestUpdate() function using MDC2. If an attacker is able to supply very large amounts of input data after a previous call to EVP_EncryptUpdate() with a partial block then a length check can overflow resulting in a heap corruption. The amount of data needed is comparable to SIZE_MAX which is impractical on most platforms.

CVE-2016-6302

Severity
Low
Published at
23 August 2016
Found by
Shi Lei (Gear Team, Qihoo 360 Inc.)
Affected
  • from 1.0.1 before 1.0.1u
  • from 1.0.2 before 1.0.2i
References

If a server uses SHA512 for TLS session ticket HMAC it is vulnerable to a DoS attack where a malformed ticket will result in an OOB read which will ultimately crash. The use of SHA512 in TLS session tickets is comparatively rare as it requires a custom server callback and ticket lookup mechanism.

CVE-2016-2182

Severity
Low
Published at
16 August 2016
Found by
Shi Lei (Gear Team, Qihoo 360 Inc.)
Affected
  • from 1.0.1 before 1.0.1u
  • from 1.0.2 before 1.0.2i
References

The function BN_bn2dec() does not check the return value of BN_div_word(). This can cause an OOB write if an application uses this function with an overly large BIGNUM. This could be a problem if an overly large certificate or CRL is printed out from an untrusted source. TLS is not affected because record limits will reject an oversized certificate before it is parsed.

CVE-2016-2181

Severity
Low
Published at
19 August 2016
Found by
OCAP audit team
Affected
  • from 1.0.1 before 1.0.1u
  • from 1.0.2 before 1.0.2i
References

A flaw in the DTLS replay attack protection mechanism means that records that arrive for future epochs update the replay protection “window” before the MAC for the record has been validated. This could be exploited by an attacker by sending a record for the next epoch (which does not have to decrypt or have a valid MAC), with a very large sequence number. This means that all subsequent legitimate packets are dropped causing a denial of service for a specific DTLS connection.

CVE-2016-2180

Severity
Low
Published at
22 July 2016
Found by
Shi Lei (Gear Team, Qihoo 360 Inc.)
Affected
  • from 1.0.1 before 1.0.1u
  • from 1.0.2 before 1.0.2i
References

The function TS_OBJ_print_bio() misuses OBJ_obj2txt(): the return value is the total length the OID text representation would use and not the amount of data written. This will result in OOB reads when large OIDs are presented.

CVE-2016-2179

Severity
Low
Published at
22 August 2016
Found by
Quan Luo
Affected
  • from 1.0.1 before 1.0.1u
  • from 1.0.2 before 1.0.2i
References

In a DTLS connection where handshake messages are delivered out-of-order those messages that OpenSSL is not yet ready to process will be buffered for later use. Under certain circumstances, a flaw in the logic means that those messages do not get removed from the buffer even though the handshake has been completed. An attacker could force up to approx. 15 messages to remain in the buffer when they are no longer required. These messages will be cleared when the DTLS connection is closed. The default maximum size for a message is 100k. Therefore the attacker could force an additional 1500k to be consumed per connection. By opening many simulataneous connections an attacker could cause a DoS attack through memory exhaustion.

CVE-2016-2178

Severity
Low
Published at
7 June 2016
Found by
César Pereida (Aalto University), Billy Brumley (Tampere University of Technology), and Yuval Yarom (The University of Adelaide and NICTA)
Affected
  • from 1.0.1 before 1.0.1u
  • from 1.0.2 before 1.0.2i
References

Operations in the DSA signing algorithm should run in constant time in order to avoid side channel attacks. A flaw in the OpenSSL DSA implementation means that a non-constant time codepath is followed for certain operations. This has been demonstrated through a cache-timing attack to be sufficient for an attacker to recover the private DSA key.

CVE-2016-2177

Severity
Low
Published at
1 June 2016
Found by
Guido Vranken
Affected
  • from 1.0.1 before 1.0.1u
  • from 1.0.2 before 1.0.2i
References

Avoid some undefined pointer arithmetic A common idiom in the codebase is to check limits in the following manner: “p + len > limit” Where “p” points to some malloc’d data of SIZE bytes and limit == p + SIZE “len” here could be from some externally supplied data (e.g. from a TLS message). The rules of C pointer arithmetic are such that “p + len” is only well defined where len <= SIZE. Therefore the above idiom is actually undefined behaviour. For example this could cause problems if some malloc implementation provides an address for “p” such that “p + len” actually overflows for values of len that are too big and therefore p + len < limit.

CVE-2016-2176

Severity
Low
Published at
3 May 2016
Found by
Guido Vranken
Affected
  • from 1.0.1 before 1.0.1t
  • from 1.0.2 before 1.0.2h
References

ASN1 Strings that are over 1024 bytes can cause an overread in applications using the X509_NAME_oneline() function on EBCDIC systems. This could result in arbitrary stack data being returned in the buffer.

CVE-2016-2109

Severity
Low
Published at
3 May 2016
Found by
Brian Carpenter
Affected
  • from 1.0.1 before 1.0.1t
  • from 1.0.2 before 1.0.2h
References

When ASN.1 data is read from a BIO using functions such as d2i_CMS_bio() a short invalid encoding can casuse allocation of large amounts of memory potentially consuming excessive resources or exhausting memory. Any application parsing untrusted data through d2i BIO functions is affected. The memory based functions such as d2i_X509() are not affected. Since the memory based functions are used by the TLS library, TLS applications are not affected.

CVE-2016-2108

Severity
High
Published at
3 May 2016
Found by
Huzaifa Sidhpurwala (Red Hat), Hanno Böck, David Benjamin (Google)
Affected
  • from 1.0.1 before 1.0.1o
  • from 1.0.2 before 1.0.2c
References

This issue affected versions of OpenSSL prior to April 2015. The bug causing the vulnerability was fixed on April 18th 2015, and released as part of the June 11th 2015 security releases. The security impact of the bug was not known at the time. In previous versions of OpenSSL, ASN.1 encoding the value zero represented as a negative integer can cause a buffer underflow with an out-of-bounds write in i2c_ASN1_INTEGER. The ASN.1 parser does not normally create “negative zeroes” when parsing ASN.1 input, and therefore, an attacker cannot trigger this bug. However, a second, independent bug revealed that the ASN.1 parser (specifically, d2i_ASN1_TYPE) can misinterpret a large universal tag as a negative zero value. Large universal tags are not present in any common ASN.1 structures (such as X509) but are accepted as part of ANY structures. Therefore, if an application deserializes untrusted ASN.1 structures containing an ANY field, and later reserializes them, an attacker may be able to trigger an out-of-bounds write. This has been shown to cause memory corruption that is potentially exploitable with some malloc implementations. Applications that parse and re-encode X509 certificates are known to be vulnerable. Applications that verify RSA signatures on X509 certificates may also be vulnerable; however, only certificates with valid signatures trigger ASN.1 re-encoding and hence the bug. Specifically, since OpenSSL’s default TLS X509 chain verification code verifies the certificate chain from root to leaf, TLS handshakes could only be targeted with valid certificates issued by trusted Certification Authorities.

CVE-2016-2107

Severity
High
Published at
3 May 2016
Found by
Juraj Somorovsky
Affected
  • from 1.0.1 before 1.0.1t
  • from 1.0.2 before 1.0.2h
References

A MITM attacker can use a padding oracle attack to decrypt traffic when the connection uses an AES CBC cipher and the server support AES-NI. This issue was introduced as part of the fix for Lucky 13 padding attack (CVE-2013-0169). The padding check was rewritten to be in constant time by making sure that always the same bytes are read and compared against either the MAC or padding bytes. But it no longer checked that there was enough data to have both the MAC and padding bytes.

CVE-2016-2106

Severity
Low
Published at
3 May 2016
Found by
Guido Vranken
Affected
  • from 1.0.1 before 1.0.1t
  • from 1.0.2 before 1.0.2h
References

An overflow can occur in the EVP_EncryptUpdate() function. If an attacker is able to supply very large amounts of input data after a previous call to EVP_EncryptUpdate() with a partial block then a length check can overflow resulting in a heap corruption. Following an analysis of all OpenSSL internal usage of the EVP_EncryptUpdate() function all usage is one of two forms. The first form is where the EVP_EncryptUpdate() call is known to be the first called function after an EVP_EncryptInit(), and therefore that specific call must be safe. The second form is where the length passed to EVP_EncryptUpdate() can be seen from the code to be some small value and therefore there is no possibility of an overflow. Since all instances are one of these two forms, it is believed that there can be no overflows in internal code due to this problem. It should be noted that EVP_DecryptUpdate() can call EVP_EncryptUpdate() in certain code paths. Also EVP_CipherUpdate() is a synonym for EVP_EncryptUpdate(). All instances of these calls have also been analysed too and it is believed there are no instances in internal usage where an overflow could occur. This could still represent a security issue for end user code that calls this function directly.

CVE-2016-2105

Severity
Low
Published at
3 May 2016
Found by
Guido Vranken
Affected
  • from 1.0.1 before 1.0.1t
  • from 1.0.2 before 1.0.2h
References

An overflow can occur in the EVP_EncodeUpdate() function which is used for Base64 encoding of binary data. If an attacker is able to supply very large amounts of input data then a length check can overflow resulting in a heap corruption. Internally to OpenSSL the EVP_EncodeUpdate() function is primarly used by the PEM_write_bio* family of functions. These are mainly used within the OpenSSL command line applications. These internal uses are not considered vulnerable because all calls are bounded with length checks so no overflow is possible. User applications that call these APIs directly with large amounts of untrusted data may be vulnerable. (Note: Initial analysis suggested that the PEM_write_bio* were vulnerable, and this is reflected in the patch commit message. This is no longer believed to be the case).

CVE-2016-0800

Severity
High
Published at
1 March 2016
Found by
Nimrod Aviram and Sebastian Schinzel
Affected
  • from 1.0.1 before 1.0.1s
  • from 1.0.2 before 1.0.2g
References

A cross-protocol attack was discovered that could lead to decryption of TLS sessions by using a server supporting SSLv2 and EXPORT cipher suites as a Bleichenbacher RSA padding oracle. Note that traffic between clients and non-vulnerable servers can be decrypted provided another server supporting SSLv2 and EXPORT ciphers (even with a different protocol such as SMTP, IMAP or POP) shares the RSA keys of the non-vulnerable server. This vulnerability is known as DROWN (CVE-2016-0800). Recovering one session key requires the attacker to perform approximately 2^50 computation, as well as thousands of connections to the affected server. A more efficient variant of the DROWN attack exists against unpatched OpenSSL servers using versions that predate 1.0.2a, 1.0.1m, 1.0.0r and 0.9.8zf released on 19/Mar/2015 (see CVE-2016-0703 below). Users can avoid this issue by disabling the SSLv2 protocol in all their SSL/TLS servers, if they’ve not done so already. Disabling all SSLv2 ciphers is also sufficient, provided the patches for CVE-2015-3197 (fixed in OpenSSL 1.0.1r and 1.0.2f) have been deployed. Servers that have not disabled the SSLv2 protocol, and are not patched for CVE-2015-3197 are vulnerable to DROWN even if all SSLv2 ciphers are nominally disabled, because malicious clients can force the use of SSLv2 with EXPORT ciphers. OpenSSL 1.0.2g and 1.0.1s deploy the following mitigation against DROWN: SSLv2 is now by default disabled at build-time. Builds that are not configured with “enable-ssl2” will not support SSLv2. Even if “enable-ssl2” is used, users who want to negotiate SSLv2 via the version-flexible SSLv23_method() will need to explicitly call either of: SSL_CTX_clear_options(ctx, SSL_OP_NO_SSLv2); or SSL_clear_options(ssl, SSL_OP_NO_SSLv2); as appropriate. Even if either of those is used, or the application explicitly uses the version-specific SSLv2_method() or its client or server variants, SSLv2 ciphers vulnerable to exhaustive search key recovery have been removed. Specifically, the SSLv2 40-bit EXPORT ciphers, and SSLv2 56-bit DES are no longer available. In addition, weak ciphers in SSLv3 and up are now disabled in default builds of OpenSSL. Builds that are not configured with “enable-weak-ssl-ciphers” will not provide any “EXPORT” or “LOW” strength ciphers.

CVE-2016-0799

Severity
Low
Published at
1 March 2016
Found by
Guido Vranken
Affected
  • from 1.0.1 before 1.0.1s
  • from 1.0.2 before 1.0.2g
References

The internal |fmtstr| function used in processing a “%s” format string in the BIO_*printf functions could overflow while calculating the length of a string and cause an OOB read when printing very long strings. Additionally the internal |doapr_outch| function can attempt to write to an OOB memory location (at an offset from the NULL pointer) in the event of a memory allocation failure. In 1.0.2 and below this could be caused where the size of a buffer to be allocated is greater than INT_MAX. E.g. this could be in processing a very long “%s” format string. Memory leaks can also occur. The first issue may mask the second issue dependent on compiler behaviour. These problems could enable attacks where large amounts of untrusted data is passed to the BIO_*printf functions. If applications use these functions in this way then they could be vulnerable. OpenSSL itself uses these functions when printing out human-readable dumps of ASN.1 data. Therefore applications that print this data could be vulnerable if the data is from untrusted sources. OpenSSL command line applications could also be vulnerable where they print out ASN.1 data, or if untrusted data is passed as command line arguments. Libssl is not considered directly vulnerable. Additionally certificates etc received via remote connections via libssl are also unlikely to be able to trigger these issues because of message size limits enforced within libssl.

CVE-2016-0798

Severity
Low
Published at
1 March 2016
Found by
Emilia Käsper (OpenSSL)
Affected
  • from 1.0.1 before 1.0.1s
  • from 1.0.2 before 1.0.2g
References

The SRP user database lookup method SRP_VBASE_get_by_user had confusing memory management semantics; the returned pointer was sometimes newly allocated, and sometimes owned by the callee. The calling code has no way of distinguishing these two cases. Specifically, SRP servers that configure a secret seed to hide valid login information are vulnerable to a memory leak: an attacker connecting with an invalid username can cause a memory leak of around 300 bytes per connection. Servers that do not configure SRP, or configure SRP but do not configure a seed are not vulnerable. In Apache, the seed directive is known as SSLSRPUnknownUserSeed. To mitigate the memory leak, the seed handling in SRP_VBASE_get_by_user is now disabled even if the user has configured a seed. Applications are advised to migrate to SRP_VBASE_get1_by_user. However, note that OpenSSL makes no strong guarantees about the indistinguishability of valid and invalid logins. In particular, computations are currently not carried out in constant time.

CVE-2016-0797

Severity
Low
Published at
1 March 2016
Found by
Guido Vranken
Affected
  • from 1.0.1 before 1.0.1s
  • from 1.0.2 before 1.0.2g
References

In the BN_hex2bn function the number of hex digits is calculated using an int value |i|. Later |bn_expand| is called with a value of |i * 4|. For large values of |i| this can result in |bn_expand| not allocating any memory because |i * 4| is negative. This can leave the internal BIGNUM data field as NULL leading to a subsequent NULL ptr deref. For very large values of |i|, the calculation |i * 4| could be a positive value smaller than |i|. In this case memory is allocated to the internal BIGNUM data field, but it is insufficiently sized leading to heap corruption. A similar issue exists in BN_dec2bn. This could have security consequences if BN_hex2bn/BN_dec2bn is ever called by user applications with very large untrusted hex/dec data. This is anticipated to be a rare occurrence. All OpenSSL internal usage of these functions use data that is not expected to be untrusted, e.g. config file data or application command line arguments. If user developed applications generate config file data based on untrusted data then it is possible that this could also lead to security consequences. This is also anticipated to be rare.

CVE-2016-0705

Severity
Low
Published at
1 March 2016
Found by
Adam Langley (Google/BoringSSL)
Affected
  • from 1.0.1 before 1.0.1s
  • from 1.0.2 before 1.0.2g
References

A double free bug was discovered when OpenSSL parses malformed DSA private keys and could lead to a DoS attack or memory corruption for applications that receive DSA private keys from untrusted sources. This scenario is considered rare.

CVE-2016-0704

Severity
Moderate
Published at
1 March 2016
Found by
David Adrian and J.Alex Halderman (University of Michigan)
Affected
  • from 0.9.8 before 0.9.8zf
  • from 1.0.0 before 1.0.0r
  • from 1.0.1 before 1.0.1m
  • from 1.0.2 before 1.0.2a
References

This issue only affected versions of OpenSSL prior to March 19th 2015 at which time the code was refactored to address the vulnerability CVE-2015-0293. s2_srvr.c overwrite the wrong bytes in the master-key when applying Bleichenbacher protection for export cipher suites. This provides a Bleichenbacher oracle, and could potentially allow more efficient variants of the DROWN attack.

CVE-2016-0703

Severity
High
Published at
1 March 2016
Found by
David Adrian and J.Alex Halderman (University of Michigan)
Affected
  • from 0.9.8 before 0.9.8zf
  • from 1.0.0 before 1.0.0r
  • from 1.0.1 before 1.0.1m
  • from 1.0.2 before 1.0.2a
References

This issue only affected versions of OpenSSL prior to March 19th 2015 at which time the code was refactored to address vulnerability CVE-2015-0293. s2_srvr.c did not enforce that clear-key-length is 0 for non-export ciphers. If clear-key bytes are present for these ciphers, they displace encrypted-key bytes. This leads to an efficient divide-and-conquer key recovery attack: if an eavesdropper has intercepted an SSLv2 handshake, they can use the server as an oracle to determine the SSLv2 master-key, using only 16 connections to the server and negligible computation. More importantly, this leads to a more efficient version of DROWN that is effective against non-export ciphersuites, and requires no significant computation.

CVE-2016-0702

Severity
Low
Published at
1 March 2016
Found by
Yuval Yarom, The University of Adelaide and NICTA, Daniel Genkin, Technion and Tel Aviv University, and Nadia Heninger, University of Pennsylvania
Affected
  • from 1.0.1 before 1.0.1s
  • from 1.0.2 before 1.0.2g
References

A side-channel attack was found which makes use of cache-bank conflicts on the Intel Sandy-Bridge microarchitecture which could lead to the recovery of RSA keys. The ability to exploit this issue is limited as it relies on an attacker who has control of code in a thread running on the same hyper-threaded core as the victim thread which is performing decryptions.

CVE-2015-3197

Severity
Low
Published at
28 January 2016
Found by
Nimrod Aviram and Sebastian Schinzel
Affected
  • from 1.0.1 before 1.0.1r
  • from 1.0.2 before 1.0.2f
References

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.

CVE-2015-3196

Severity
Low
Published at
3 December 2015
Found by
Stephen Henson (OpenSSL)
Affected
  • from 1.0.2 before 1.0.2d
  • from 1.0.1 before 1.0.1p
  • from 1.0.0 before 1.0.0t
References

If PSK identity hints are received by a multi-threaded client then the values are wrongly updated in the parent SSL_CTX structure. This can result in a race condition potentially leading to a double free of the identify hint data.

CVE-2015-3195

Severity
Moderate
Published at
3 December 2015
Found by
Adam Langley (Google/BoringSSL) using libFuzzer
Affected
  • from 1.0.2 before 1.0.2e
  • from 1.0.1 before 1.0.1q
  • from 1.0.0 before 1.0.0t
  • from 0.9.8 before 0.9.8zh
References

When presented with a malformed X509_ATTRIBUTE structure OpenSSL will leak memory. This structure is used by the PKCS#7 and CMS routines so any application which reads PKCS#7 or CMS data from untrusted sources is affected. SSL/TLS is not affected.

CVE-2015-3194

Severity
Moderate
Published at
3 December 2015
Found by
Loïc Jonas Etienne (Qnective AG)
Affected
  • from 1.0.2 before 1.0.2e
  • from 1.0.1 before 1.0.1q
References

The signature verification routines will crash with a NULL pointer dereference if presented with an ASN.1 signature using the RSA PSS algorithm and absent mask generation function parameter. Since these routines are used to verify certificate signature algorithms this can be used to crash any certificate verification operation and exploited in a DoS attack. Any application which performs certificate verification is vulnerable including OpenSSL clients and servers which enable client authentication.

CVE-2015-1793

Severity
High
Published at
9 July 2015
Found by
Adam Langley and David Benjamin (Google/BoringSSL)
Affected
  • from 1.0.2b before 1.0.2d
  • from 1.0.1n before 1.0.1p
References

An error in the implementation of the alternative certificate chain logic could allow an attacker to cause certain checks on untrusted certificates to be bypassed, such as the CA flag, enabling them to use a valid leaf certificate to act as a CA and “issue” an invalid certificate.

CVE-2015-1792

Severity
Moderate
Published at
11 June 2015
Found by
Johannes Bauer
Affected
  • from 1.0.2 before 1.0.2b
  • from 1.0.1 before 1.0.1n
  • from 1.0.0 before 1.0.0s
  • from 0.9.8 before 0.9.8zg
References

When verifying a signedData message the CMS code can enter an infinite loop if presented with an unknown hash function OID. This can be used to perform denial of service against any system which verifies signedData messages using the CMS code.

CVE-2015-1791

Severity
Low
Published at
2 June 2015
Found by
Emilia Käsper (OpenSSL)
Affected
  • from 1.0.2 before 1.0.2b
  • from 1.0.1 before 1.0.1n
  • from 1.0.0 before 1.0.0s
  • from 0.9.8 before 0.9.8zg
References

If a NewSessionTicket is received by a multi-threaded client when attempting to reuse a previous ticket then a race condition can occur potentially leading to a double free of the ticket data.

CVE-2015-1790

Severity
Moderate
Published at
11 June 2015
Found by
Michal Zalewski (Google)
Affected
  • from 1.0.2 before 1.0.2b
  • from 1.0.1 before 1.0.1n
  • from 1.0.0 before 1.0.0s
  • from 0.9.8 before 0.9.8zg
References

The PKCS#7 parsing code does not handle missing inner EncryptedContent correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs with missing content and trigger a NULL pointer dereference on parsing. Applications that decrypt PKCS#7 data or otherwise parse PKCS#7 structures from untrusted sources are affected. OpenSSL clients and servers are not affected.

CVE-2015-1789

Severity
Moderate
Published at
11 June 2015
Found by
Robert Święcki (Google Security Team)
Affected
  • from 1.0.2 before 1.0.2b
  • from 1.0.1 before 1.0.1n
  • from 1.0.0 before 1.0.0s
  • from 0.9.8 before 0.9.8zg
References

X509_cmp_time does not properly check the length of the ASN1_TIME string and can read a few bytes out of bounds. In addition, X509_cmp_time accepts an arbitrary number of fractional seconds in the time string. An attacker can use this to craft malformed certificates and CRLs of various sizes and potentially cause a segmentation fault, resulting in a DoS on applications that verify certificates or CRLs. TLS clients that verify CRLs are affected. TLS clients and servers with client authentication enabled may be affected if they use custom verification callbacks.

CVE-2015-1788

Severity
Moderate
Published at
11 June 2015
Found by
Joseph Birr-Pixton
Affected
  • from 1.0.2 before 1.0.2b
  • from 1.0.1 before 1.0.1n
  • from 1.0.0 before 1.0.0e
  • from 0.9.8 before 0.9.8s
References

When processing an ECParameters structure OpenSSL enters an infinite loop if the curve specified is over a specially malformed binary polynomial field. This can be used to perform denial of service against any system which processes public keys, certificate requests or certificates. This includes TLS clients and TLS servers with client authentication enabled.

CVE-2015-0293

Severity
Moderate
Published at
19 March 2015
Found by
Sean Burford (Google) and Emilia Käsper (OpenSSL development team)
Affected
  • from 1.0.2 before 1.0.2a
  • from 1.0.1 before 1.0.1m
  • from 1.0.0 before 1.0.0r
  • from 0.9.8 before 0.9.8zf
References

DoS via reachable assert in SSLv2 servers. A malicious client can trigger an OPENSSL_assert in servers that both support SSLv2 and enable export cipher suites by sending a specially crafted SSLv2 CLIENT-MASTER-KEY message.

CVE-2015-0292

Severity
Moderate
Published at
19 March 2015
Found by
Robert Dugal, also David Ramos, also Huzaifa Sidhpurwala (Red Hat)
Affected
  • from 1.0.1 before 1.0.1h
  • from 1.0.0 before 1.0.0m
  • from 0.9.8 before 0.9.8za
References

A vulnerability existed in previous versions of OpenSSL related to the processing of base64 encoded data. Any code path that reads base64 data from an untrusted source could be affected (such as the PEM processing routines). Maliciously crafted base 64 data could trigger a segmenation fault or memory corruption.

CVE-2015-0289

Severity
Moderate
Published at
19 March 2015
Found by
Michal Zalewski (Google)
Affected
  • from 1.0.2 before 1.0.2a
  • from 1.0.1 before 1.0.1m
  • from 1.0.0 before 1.0.0r
  • from 0.9.8 before 0.9.8zf
References

PKCS#7 NULL pointer dereference. The PKCS#7 parsing code does not handle missing outer ContentInfo correctly. An attacker can craft malformed ASN.1-encoded PKCS#7 blobs with missing content and trigger a NULL pointer dereference on parsing. Applications that verify PKCS#7 signatures, decrypt PKCS#7 data or otherwise parse PKCS#7 structures from untrusted sources are affected. OpenSSL clients and servers are not affected.

CVE-2015-0288

Severity
Low
Published at
2 March 2015
Found by
Brian Carpenter
Affected
  • from 1.0.2 before 1.0.2a
  • from 1.0.1 before 1.0.1m
  • from 1.0.0 before 1.0.0r
  • from 0.9.8 before 0.9.8zf
References

X509_to_X509_REQ NULL pointer deref. The function X509_to_X509_REQ will crash with a NULL pointer dereference if the certificate key is invalid. This function is rarely used in practice.

CVE-2015-0287

Severity
Moderate
Published at
19 March 2015
Found by
Emilia Käsper (OpenSSL development team)
Affected
  • from 1.0.2 before 1.0.2a
  • from 1.0.1 before 1.0.1m
  • from 1.0.0 before 1.0.0r
  • from 0.9.8 before 0.9.8zf
References

ASN.1 structure reuse memory corruption. Reusing a structure in ASN.1 parsing may allow an attacker to cause memory corruption via an invalid write. Such reuse is and has been strongly discouraged and is believed to be rare.

CVE-2015-0286

Severity
Moderate
Published at
19 March 2015
Found by
Stephen Henson (OpenSSL development team)
Affected
  • from 1.0.2 before 1.0.2a
  • from 1.0.1 before 1.0.1m
  • from 1.0.0 before 1.0.0r
  • from 0.9.8zd before 0.9.8zf
References

Segmentation fault in ASN1_TYPE_cmp. The function ASN1_TYPE_cmp will crash with an invalid read if an attempt is made to compare ASN.1 boolean types. Since ASN1_TYPE_cmp is used to check certificate signature algorithm consistency this can be used to crash any certificate verification operation and exploited in a DoS attack. Any application which performs certificate verification is vulnerable including OpenSSL clients and servers which enable client authentication.

CVE-2015-0209

Severity
Low
Published at
19 March 2015
Found by
The BoringSSL project
Affected
  • from 1.0.2 before 1.0.2a
  • from 1.0.1 before 1.0.1m
  • from 1.0.0 before 1.0.0r
  • from 0.9.8 before 0.9.8zf
References

Use After Free following d2i_ECPrivatekey error. A malformed EC private key file consumed via the d2i_ECPrivateKey function could cause a use after free condition. This, in turn, could cause a double free in several private key parsing functions (such as d2i_PrivateKey or EVP_PKCS82PKEY) and could lead to a DoS attack or memory corruption for applications that receive EC private keys from untrusted sources. This scenario is considered rare.

CVE-2015-0206

Severity
Moderate
Published at
8 January 2015
Found by
Chris Mueller
Affected
  • from 1.0.1 before 1.0.1k
  • from 1.0.0 before 1.0.0p
References

A memory leak can occur in the dtls1_buffer_record function under certain conditions. In particular this could occur if an attacker sent repeated DTLS records with the same sequence number but for the next epoch. The memory leak could be exploited by an attacker in a Denial of Service attack through memory exhaustion.

CVE-2015-0205

Severity
Low
Published at
8 January 2015
Found by
Karthikeyan Bhargavan of the PROSECCO team at INRIA
Affected
  • from 1.0.1 before 1.0.1k
  • from 1.0.0 before 1.0.0p
References

An OpenSSL server will accept a DH certificate for client authentication without the certificate verify message. This effectively allows a client to authenticate without the use of a private key. This only affects servers which trust a client certificate authority which issues certificates containing DH keys: these are extremely rare and hardly ever encountered.

CVE-2015-0204

Severity
Low
Published at
6 January 2015
Found by
Karthikeyan Bhargavan of the PROSECCO team at INRIA
Affected
  • from 1.0.1 before 1.0.1k
  • from 1.0.0 before 1.0.0p
  • from 0.9.8 before 0.9.8zd
References

An OpenSSL client will accept the use of an RSA temporary key in a non-export RSA key exchange ciphersuite. A server could present a weak temporary key and downgrade the security of the session.

CVE-2014-8275

Severity
Low
Published at
5 January 2015
Found by
Antti Karjalainen and Tuomo Untinen from the Codenomicon CROSS program/Konrad Kraszewski from Google
Affected
  • from 1.0.1 before 1.0.1k
  • from 1.0.0 before 1.0.0p
  • from 0.9.8 before 0.9.8zd
References

OpenSSL accepts several non-DER-variations of certificate signature algorithm and signature encodings. OpenSSL also does not enforce a match between the signature algorithm between the signed and unsigned portions of the certificate. By modifying the contents of the signature algorithm or the encoding of the signature, it is possible to change the certificate’s fingerprint. This does not allow an attacker to forge certificates, and does not affect certificate verification or OpenSSL servers/clients in any other way. It also does not affect common revocation mechanisms. Only custom applications that rely on the uniqueness of the fingerprint (e.g. certificate blacklists) may be affected.

CVE-2014-8176

Severity
Moderate
Published at
11 June 2015
Found by
Praveen Kariyanahalli, and subsequently by Ivan Fratric and Felix Groebert (Google)
Affected
  • from 1.0.1 before 1.0.1h
  • from 1.0.0 before 1.0.0m
  • from 0.9.8 before 0.9.8za
References

This vulnerability does not affect current versions of OpenSSL. It existed in previous OpenSSL versions and was fixed in June 2014. If a DTLS peer receives application data between the ChangeCipherSpec and Finished messages, buffering of such data may cause an invalid free, resulting in a segmentation fault or potentially, memory corruption.

CVE-2014-5139

Published at
6 August 2014
Found by
Joonas Kuorilehto and Riku Hietamäki (Codenomicon)
Affected
  • from 1.0.1 before 1.0.1i
References

A crash was found affecting SRP ciphersuites used in a Server Hello message. The issue affects OpenSSL clients and allows a malicious server to crash the client with a null pointer dereference (read) by specifying an SRP ciphersuite even though it was not properly negotiated with the client. This could lead to a Denial of Service.

CVE-2014-3572

Severity
Low
Published at
5 January 2015
Found by
Karthikeyan Bhargavan of the PROSECCO team at INRIA
Affected
  • from 1.0.1 before 1.0.1k
  • from 1.0.0 before 1.0.0p
  • from 0.9.8 before 0.9.8zd
References

An OpenSSL client will accept a handshake using an ephemeral ECDH ciphersuite using an ECDSA certificate if the server key exchange message is omitted. This effectively removes forward secrecy from the ciphersuite.

CVE-2014-3571

Severity
Moderate
Published at
5 January 2015
Found by
Markus Stenberg of Cisco Systems, Inc
Affected
  • from 1.0.1 before 1.0.1k
  • from 1.0.0 before 1.0.0p
  • from 0.9.8 before 0.9.8zd
References

A carefully crafted DTLS message can cause a segmentation fault in OpenSSL due to a NULL pointer dereference. This could lead to a Denial Of Service attack.

CVE-2014-3570

Severity
Low
Published at
8 January 2015
Found by
Pieter Wuille (Blockstream)
Affected
  • from 1.0.1 before 1.0.1k
  • from 1.0.0 before 1.0.0p
  • from 0.9.8 before 0.9.8zd
References

Bignum squaring (BN_sqr) may produce incorrect results on some platforms, including x86_64. This bug occurs at random with a very low probability, and is not known to be exploitable in any way, though its exact impact is difficult to determine. The following has been determined: *) The probability of BN_sqr producing an incorrect result at random is very low: 1/2^64 on the single affected 32-bit platform (MIPS) and 1/2^128 on affected 64-bit platforms. *) On most platforms, RSA follows a different code path and RSA operations are not affected at all. For the remaining platforms (e.g. OpenSSL built without assembly support), pre-existing countermeasures thwart bug attacks [1]. *) Static ECDH is theoretically affected: it is possible to construct elliptic curve points that would falsely appear to be on the given curve. However, there is no known computationally feasible way to construct such points with low order, and so the security of static ECDH private keys is believed to be unaffected. *) Other routines known to be theoretically affected are modular exponentiation, primality testing, DSA, RSA blinding, JPAKE and SRP. No exploits are known and straightforward bug attacks fail - either the attacker cannot control when the bug triggers, or no private key material is involved.

CVE-2014-3569

Severity
Low
Published at
21 October 2014
Found by
Frank Schmirler
Affected
  • from 1.0.1j before 1.0.1k
  • from 1.0.0o before 1.0.0p
  • from 0.9.8zc before 0.9.8zd
References

When openssl is built with the no-ssl3 option and a SSL v3 ClientHello is received the ssl method would be set to NULL which could later result in a NULL pointer dereference.

CVE-2014-3568

Severity
Low
Published at
15 October 2014
Found by
Akamai Technologies
Affected
  • from 1.0.1 before 1.0.1j
  • from 1.0.0 before 1.0.0o
  • from 0.9.8 before 0.9.8zc
References

When OpenSSL is configured with “no-ssl3” as a build option, servers could accept and complete a SSL 3.0 handshake, and clients could be configured to send them.

CVE-2014-3567

Severity
Moderate
Published at
15 October 2014
Affected
  • from 1.0.1 before 1.0.1j
  • from 1.0.0 before 1.0.0o
  • from 0.9.8g before 0.9.8zc
References

When an OpenSSL SSL/TLS/DTLS server receives a session ticket the integrity of that ticket is first verified. In the event of a session ticket integrity check failing, OpenSSL will fail to free memory causing a memory leak. By sending a large number of invalid session tickets an attacker could exploit this issue in a Denial Of Service attack.

CVE-2014-3513

Severity
High
Published at
15 October 2014
Found by
LibreSSL project
Affected
  • from 1.0.1 before 1.0.1j
References

A flaw in the DTLS SRTP extension parsing code allows an attacker, who sends a carefully crafted handshake message, to cause OpenSSL to fail to free up to 64k of memory causing a memory leak. This could be exploited in a Denial Of Service attack. This issue affects OpenSSL 1.0.1 server implementations for both SSL/TLS and DTLS regardless of whether SRTP is used or configured. Implementations of OpenSSL that have been compiled with OPENSSL_NO_SRTP defined are not affected.

CVE-2014-3512

Published at
6 August 2014
Found by
Sean Devlin and Watson Ladd (Cryptography Services, NCC Group)
Affected
  • from 1.0.1 before 1.0.1i
References

A SRP buffer overrun was found. A malicious client or server can send invalid SRP parameters and overrun an internal buffer. Only applications which are explicitly set up for SRP use are affected.

CVE-2014-3511

Published at
6 August 2014
Found by
David Benjamin and Adam Langley (Google)
Affected
  • from 1.0.1 before 1.0.1i
References

A flaw in the OpenSSL SSL/TLS server code causes the server to negotiate TLS 1.0 instead of higher protocol versions when the ClientHello message is badly fragmented. This allows a man-in-the-middle attacker to force a downgrade to TLS 1.0 even if both the server and the client support a higher protocol version, by modifying the client’s TLS records.

CVE-2014-3510

Published at
6 August 2014
Found by
Felix Gröbert (Google)
Affected
  • from 1.0.1 before 1.0.1i
  • from 1.0.0 before 1.0.0n
  • from 0.9.8 before 0.9.8zb
References

A flaw in handling DTLS anonymous EC(DH) ciphersuites was found. OpenSSL DTLS clients enabling anonymous (EC)DH ciphersuites are subject to a denial of service attack. A malicious server can crash the client with a null pointer dereference (read) by specifying an anonymous (EC)DH ciphersuite and sending carefully crafted handshake messages.

CVE-2014-3509

Published at
6 August 2014
Found by
Gabor Tyukasz (LogMeIn Inc)
Affected
  • from 1.0.1 before 1.0.1i
  • from 1.0.0 before 1.0.0n
References

A race condition was found in ssl_parse_serverhello_tlsext. If a multithreaded client connects to a malicious server using a resumed session and the server sends an ec point format extension, it could write up to 255 bytes to freed memory.

CVE-2014-3508

Published at
6 August 2014
Found by
Ivan Fratric (Google)
Affected
  • from 1.0.1 before 1.0.1i
  • from 1.0.0 before 1.0.0n
  • from 0.9.8 before 0.9.8zb
References

A flaw in OBJ_obj2txt may cause pretty printing functions such as X509_name_oneline, X509_name_print_ex, to leak some information from the stack. Applications may be affected if they echo pretty printing output to the attacker. OpenSSL SSL/TLS clients and servers themselves are not affected.

CVE-2014-3507

Published at
6 August 2014
Found by
Adam Langley (Google)
Affected
  • from 1.0.1 before 1.0.1i
  • from 1.0.0a before 1.0.0n
  • from 0.9.8o before 0.9.8zb
References

A DTLS memory leak from zero-length fragments was found. By sending carefully crafted DTLS packets an attacker could cause OpenSSL to leak memory. This could lead to a Denial of Service attack.

CVE-2014-3506

Published at
6 August 2014
Found by
Adam Langley (Google)
Affected
  • from 1.0.1 before 1.0.1i
  • from 1.0.0 before 1.0.0n
  • from 0.9.8 before 0.9.8zb
References

A DTLS flaw leading to memory exhaustion was found. An attacker can force openssl to consume large amounts of memory whilst processing DTLS handshake messages. This could lead to a Denial of Service attack.

CVE-2014-3505

Published at
6 August 2014
Found by
Adam Langley and Wan-Teh Chang (Google)
Affected
  • from 1.0.1 before 1.0.1i
  • from 1.0.0 before 1.0.0n
  • from 0.9.8m before 0.9.8zb
References

A Double Free was found when processing DTLS packets. An attacker can force an error condition which causes openssl to crash whilst processing DTLS packets due to memory being freed twice. This could lead to a Denial of Service attack.

CVE-2014-3470

Published at
30 May 2014
Found by
Felix Gröbert and Ivan Fratrić (Google)
Affected
  • from 1.0.1 before 1.0.1h
  • from 1.0.0 before 1.0.0m
  • from 0.9.8 before 0.9.8za
References

OpenSSL TLS clients enabling anonymous ECDH ciphersuites are subject to a denial of service attack.

CVE-2014-0224

Published at
5 June 2014
Found by
KIKUCHI Masashi (Lepidum Co. Ltd.)
Affected
  • from 1.0.1 before 1.0.1h
  • from 1.0.0 before 1.0.0m
  • from 0.9.8 before 0.9.8za
References

An attacker can force the use of weak keying material in OpenSSL SSL/TLS clients and servers. This can be exploited by a Man-in-the-middle (MITM) attack where the attacker can decrypt and modify traffic from the attacked client and server.

CVE-2014-0221

Published at
5 June 2014
Found by
Imre Rad (Search-Lab Ltd.)
Affected
  • from 1.0.1 before 1.0.1h
  • from 1.0.0 before 1.0.0m
  • from 0.9.8 before 0.9.8za
References

By sending an invalid DTLS handshake to an OpenSSL DTLS client the code can be made to recurse eventually crashing in a DoS attack. Only applications using OpenSSL as a DTLS client are affected.

CVE-2014-0198

Published at
21 April 2014
Affected
  • from 1.0.1 before 1.0.1h
  • from 1.0.0 before 1.0.0m
References

A flaw in the do_ssl3_write function can allow remote attackers to cause a denial of service via a NULL pointer dereference. This flaw only affects OpenSSL 1.0.0 and 1.0.1 where SSL_MODE_RELEASE_BUFFERS is enabled, which is not the default and not common.

CVE-2014-0195

Published at
5 June 2014
Found by
Jüri Aedla
Affected
  • from 1.0.1 before 1.0.1h
  • from 1.0.0 before 1.0.0m
  • from 0.9.8o before 0.9.8za
References

A buffer overrun attack can be triggered by sending invalid DTLS fragments to an OpenSSL DTLS client or server. This is potentially exploitable to run arbitrary code on a vulnerable client or server. Only applications using OpenSSL as a DTLS client or server affected.

CVE-2014-0160

Published at
7 April 2014
Found by
Neel Mehta
Affected
  • from 1.0.1 before 1.0.1g
References

A missing bounds check in the handling of the TLS heartbeat extension can be used to reveal up to 64kB of memory to a connected client or server (a.k.a. Heartbleed). This issue did not affect versions of OpenSSL prior to 1.0.1.

CVE-2014-0076

Published at
14 February 2014
Found by
Yuval Yarom and Naomi Benger
Affected
  • from 1.0.1 before 1.0.1g
  • from 1.0.0 before 1.0.0m
  • from 0.9.8 before 0.9.8za
References

Fix for the attack described in the paper “Recovering OpenSSL ECDSA Nonces Using the FLUSH+RELOAD Cache Side-channel Attack”.

CVE-2013-6450

Published at
13 December 2013
Found by
Dmitry Sobinov
Affected
  • from 1.0.1 before 1.0.1f
  • from 1.0.0 before 1.0.0l
References

A flaw in DTLS handling can cause an application using OpenSSL and DTLS to crash. This is not a vulnerability for OpenSSL prior to 1.0.0.

CVE-2013-6449

Published at
14 December 2013
Found by
Ron Barber
Affected
  • from 1.0.1 before 1.0.1f
References

A flaw in OpenSSL can cause an application using OpenSSL to crash when using TLS version 1.2. This issue only affected OpenSSL 1.0.1 versions.

CVE-2013-4353

Published at
6 January 2014
Found by
Anton Johansson
Affected
  • from 1.0.1 before 1.0.1f
References

A carefully crafted invalid TLS handshake could crash OpenSSL with a NULL pointer exception. A malicious server could use this flaw to crash a connecting client. This issue only affected OpenSSL 1.0.1 versions.

CVE-2013-0169

Published at
4 February 2013
Found by
Nadhem J. AlFardan and Kenneth G. Paterson of the Information Security Group Royal Holloway, University of London
Affected
  • from 1.0.1 before 1.0.1d
  • from 1.0.0 before 1.0.0k
  • from 0.9.8 before 0.9.8y
References

A weakness in the handling of CBC ciphersuites in SSL, TLS and DTLS which could lead to plaintext recovery by exploiting timing differences arising during MAC processing.

CVE-2013-0166

Published at
5 February 2013
Found by
Stephen Henson
Affected
  • from 1.0.1 before 1.0.1d
  • from 1.0.0 before 1.0.0k
  • from 0.9.8 before 0.9.8y
References

A flaw in the OpenSSL handling of OCSP response verification can be exploited in a denial of service attack.

CVE-2012-2686

Published at
5 February 2013
Found by
Adam Langley and Wolfgang Ettlinger
Affected
  • from 1.0.1 before 1.0.1d
References

A flaw in the OpenSSL handling of CBC ciphersuites in TLS 1.1 and TLS 1.2 on AES-NI supporting platforms can be exploited in a DoS attack.

CVE-2012-2333

Published at
10 May 2012
Found by
Codenomicon
Affected
  • from 1.0.1 before 1.0.1c
  • from 1.0.0 before 1.0.0j
  • from 0.9.8 before 0.9.8x
References

An integer underflow flaw, leading to a buffer over-read, was found in the way OpenSSL handled TLS 1.1, TLS 1.2, and DTLS (Datagram Transport Layer Security) application data record lengths when using a block cipher in CBC (cipher-block chaining) mode. A malicious TLS 1.1, TLS 1.2, or DTLS client or server could use this flaw to crash its connection peer.

CVE-2012-2110

Published at
19 April 2012
Found by
Tavis Ormandy
Affected
  • from 1.0.1 before 1.0.1a
  • from 1.0.0 before 1.0.0i
  • from 0.9.8 before 0.9.8v
References

Multiple numeric conversion errors, leading to a buffer overflow, were found in the way OpenSSL parsed ASN.1 (Abstract Syntax Notation One) data from BIO (OpenSSL’s I/O abstraction) inputs. Specially-crafted DER (Distinguished Encoding Rules) encoded data read from a file or other BIO input could cause an application using the OpenSSL library to crash or, potentially, execute arbitrary code.

CVE-2010-5298

Published at
8 April 2014
Affected
  • from 1.0.1 before 1.0.1h
  • from 1.0.0 before 1.0.0m
References

A race condition in the ssl3_read_bytes function can allow remote attackers to inject data across sessions or cause a denial of service. This flaw only affects multithreaded applications using OpenSSL 1.0.0 and 1.0.1, where SSL_MODE_RELEASE_BUFFERS is enabled, which is not the default and not common.