Vulnerabilities
If you think you have found a security bug in OpenSSL, please report it to us.
Show issues fixed only in OpenSSL 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
Note: All OpenSSL versions before 1.1.1 are out of support and no longer receiving updates. Extended support is available for 1.0.2 from OpenSSL Software Services for premium support customers.
Jump to year: 2022, 2021, 2020, 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004, 2003, 2002
2022
- CVE-2022-2097 (OpenSSL advisory) [Moderate severity] 05 July 2022:
- AES OCB mode for 32-bit x86 platforms using the AES-NI assembly optimised
implementation will not encrypt the entirety of the data under some
circumstances. This could reveal sixteen bytes of data that was
preexisting in the memory that wasn't written. In the special case of
"in place" encryption, sixteen bytes of the plaintext would be revealed.
Since OpenSSL does not support OCB based cipher suites for TLS and DTLS,
they are both unaffected. Reported by Alex Chernyakhovsky.
- Fixed in OpenSSL 3.0.5 (git commit) (Affected 3.0.0,3.0.1,3.0.2,3.0.3,3.0.4)
- Fixed in OpenSSL 1.1.1q (git commit) (Affected 1.1.1-1.1.1p)
- CVE-2022-2274 (OpenSSL advisory) [High severity] 22 June 2022:
- The OpenSSL 3.0.4 release introduced a serious bug in the RSA
implementation for X86_64 CPUs supporting the AVX512IFMA
instructions. This issue makes the RSA implementation with 2048
bit private keys incorrect on such machines and memory
corruption will happen during the computation. As a consequence
of the memory corruption an attacker may be able to trigger a
remote code execution on the machine performing the
computation. SSL/TLS servers or other servers using 2048 bit RSA
private keys running on machines supporting AVX512IFMA
instructions of the X86_64 architecture are affected by this
issue. Reported by Xi Ruoyao.
- Fixed in OpenSSL 3.0.5 (git commit) (Affected 3.0.4)
- CVE-2022-2068 (OpenSSL advisory) [Moderate severity] 21 June 2022:
- In addition to the c_rehash shell command injection identified in
CVE-2022-1292, further circumstances where the c_rehash script does not
properly sanitise shell metacharacters to prevent command injection were
found by code review.
When the CVE-2022-1292 was fixed it was not discovered that there
are other places in the script where the file names of certificates
being hashed were possibly passed to a command executed through the shell.
This script is distributed by some operating systems in a manner where
it is automatically executed. On such operating systems, an attacker
could execute arbitrary commands with the privileges of the script.
Use of the c_rehash script is considered obsolete and should be replaced
by the OpenSSL rehash command line tool. Reported by Chancen (Qingteng 73lab).
- Fixed in OpenSSL 3.0.4 (git commit) (Affected 3.0.0,3.0.1,3.0.2,3.0.3)
- Fixed in OpenSSL 1.1.1p (git commit) (Affected 1.1.1-1.1.1o)
- Fixed in OpenSSL 1.0.2zf (git commit) (Affected 1.0.2-1.0.2ze)
- CVE-2022-1473 (OpenSSL advisory) [Low severity] 03 May 2022:
- The OPENSSL_LH_flush() function, which empties a hash table, contains
a bug that breaks reuse of the memory occuppied by the removed hash
table entries.
This function is used when decoding certificates or keys. If a long lived
process periodically decodes certificates or keys its memory usage will
expand without bounds and the process might be terminated by the operating
system causing a denial of service. Also traversing the empty hash table
entries will take increasingly more time.
Typically such long lived processes might be TLS clients or TLS servers
configured to accept client certificate authentication.
The function was added in the OpenSSL 3.0 version thus older releases
are not affected by the issue. Reported by Aliaksei Levin.
- Fixed in OpenSSL 3.0.3 (git commit) (Affected 3.0.0,3.0.1,3.0.2)
- CVE-2022-1434 (OpenSSL advisory) [Low severity] 03 May 2022:
- The OpenSSL 3.0 implementation of the RC4-MD5 ciphersuite incorrectly uses the
AAD data as the MAC key. This makes the MAC key trivially predictable.
An attacker could exploit this issue by performing a man-in-the-middle attack to
modify data being sent from one endpoint to an OpenSSL 3.0 recipient such that
the modified data would still pass the MAC integrity check.
Note that data sent from an OpenSSL 3.0 endpoint to a non-OpenSSL 3.0 endpoint
will always be rejected by the recipient and the connection will fail at that
point. Many application protocols require data to be sent from the client to the
server first. Therefore, in such a case, only an OpenSSL 3.0 server would be
impacted when talking to a non-OpenSSL 3.0 client.
If both endpoints are OpenSSL 3.0 then the attacker could modify data being
sent in both directions. In this case both clients and servers could be
affected, regardless of the application protocol.
Note that in the absence of an attacker this bug means that an OpenSSL 3.0
endpoint communicating with a non-OpenSSL 3.0 endpoint will fail to complete the
handshake when using this ciphersuite.
The confidentiality of data is not impacted by this issue, i.e. an attacker
cannot decrypt data that has been encrypted using this ciphersuite - they can
only modify it.
In order for this attack to work both endpoints must legitimately negotiate the
RC4-MD5 ciphersuite. This ciphersuite is not compiled by default in OpenSSL 3.0,
and is not available within the default provider or the default ciphersuite
list. This ciphersuite will never be used if TLSv1.3 has been negotiated. In
order for an OpenSSL 3.0 endpoint to use this ciphersuite the following must
have occurred:
1) OpenSSL must have been compiled with the (non-default) compile time option
enable-weak-ssl-ciphers
2) OpenSSL must have had the legacy provider explicitly loaded (either through
application code or via configuration)
3) The ciphersuite must have been explicitly added to the ciphersuite list
4) The libssl security level must have been set to 0 (default is 1)
5) A version of SSL/TLS below TLSv1.3 must have been negotiated
6) Both endpoints must negotiate the RC4-MD5 ciphersuite in preference to any
others that both endpoints have in common Reported by Tom Colley (Broadcom).
- Fixed in OpenSSL 3.0.3 (git commit) (Affected 3.0.0,3.0.1,3.0.2)
- CVE-2022-1343 (OpenSSL advisory) [Moderate severity] 03 May 2022:
- The function `OCSP_basic_verify` verifies the signer certificate on an OCSP
response. In the case where the (non-default) flag OCSP_NOCHECKS is used then
the response will be positive (meaning a successful verification) even in the
case where the response signing certificate fails to verify.
It is anticipated that most users of `OCSP_basic_verify` will not use the
OCSP_NOCHECKS flag. In this case the `OCSP_basic_verify` function will return
a negative value (indicating a fatal error) in the case of a certificate
verification failure. The normal expected return value in this case would be 0.
This issue also impacts the command line OpenSSL "ocsp" application. When
verifying an ocsp response with the "-no_cert_checks" option the command line
application will report that the verification is successful even though it has
in fact failed. In this case the incorrect successful response will also be
accompanied by error messages showing the failure and contradicting the
apparently successful result. Reported by Raul Metsma.
- Fixed in OpenSSL 3.0.3 (git commit) (Affected 3.0.0,3.0.1,3.0.2)
- CVE-2022-1292 (OpenSSL advisory) [Moderate severity] 03 May 2022:
- The c_rehash script does not properly sanitise shell metacharacters to
prevent command injection. This script is distributed by some operating
systems in a manner where it is automatically executed. On such operating
systems, an attacker could execute arbitrary commands with the privileges
of the script.
Use of the c_rehash script is considered obsolete and should be replaced
by the OpenSSL rehash command line tool. Reported by Elison Niven (Sophos).
- Fixed in OpenSSL 3.0.3 (git commit) (Affected 3.0.0,3.0.1,3.0.2)
- Fixed in OpenSSL 1.1.1o (git commit) (Affected 1.1.1-1.1.1n)
- Fixed in OpenSSL 1.0.2ze (git commit) (Affected 1.0.2-1.0.2zd)
- CVE-2022-0778 (OpenSSL advisory) [High severity] 15 March 2022:
- The BN_mod_sqrt() function, which computes a modular square root, contains
a bug that can cause it to loop forever for non-prime moduli.
Internally this function is used when parsing certificates that contain
elliptic curve public keys in compressed form or explicit elliptic curve
parameters with a base point encoded in compressed form.
It is possible to trigger the infinite loop by crafting a certificate that
has invalid explicit curve parameters.
Since certificate parsing happens prior to verification of the certificate
signature, any process that parses an externally supplied certificate may thus
be subject to a denial of service attack. The infinite loop can also be
reached when parsing crafted private keys as they can contain explicit
elliptic curve parameters.
Thus vulnerable situations include:
- TLS clients consuming server certificates
- TLS servers consuming client certificates
- Hosting providers taking certificates or private keys from customers
- Certificate authorities parsing certification requests from subscribers
- Anything else which parses ASN.1 elliptic curve parameters
Also any other applications that use the BN_mod_sqrt() where the attacker
can control the parameter values are vulnerable to this DoS issue.
In the OpenSSL 1.0.2 version the public key is not parsed during initial
parsing of the certificate which makes it slightly harder to trigger
the infinite loop. However any operation which requires the public key
from the certificate will trigger the infinite loop. In particular the
attacker can use a self-signed certificate to trigger the loop during
verification of the certificate signature.
This issue affects OpenSSL versions 1.0.2, 1.1.1 and 3.0. It was
addressed in the releases of 1.1.1n and 3.0.2 on the 15th March 2022. Reported by Tavis Ormandy (Google).
- Fixed in OpenSSL 3.0.2 (git commit) (Affected 3.0.0,3.0.1)
- Fixed in OpenSSL 1.1.1n (git commit) (Affected 1.1.1-1.1.1m)
- Fixed in OpenSSL 1.0.2zd (git commit) (Affected 1.0.2-1.0.2zc)
- CVE-2021-4160 (OpenSSL advisory) [Moderate severity] 28 January 2022:
- There is a carry propagation bug in the MIPS32 and MIPS64 squaring
procedure. Many EC algorithms are affected, including some of the
TLS 1.3 default curves. Impact was not analyzed in detail, because the
pre-requisites for attack are considered unlikely and include reusing
private keys. Analysis suggests that attacks against RSA and DSA as
a result of this defect would be very difficult to perform and are
not believed likely. Attacks against DH are considered just feasible
(although very difficult) because most of the work necessary to deduce
information about a private key may be performed offline. The amount of
resources required for such an attack would be significant. However,
for an attack on TLS to be meaningful, the server would have to share
the DH private key among multiple clients, which is no longer an option
since CVE-2016-0701.
This issue affects OpenSSL versions 1.0.2, 1.1.1 and 3.0.0. It was
addressed in the releases of 1.1.1m and 3.0.1 on the 15th of December 2021. For
the 1.0.2 release it is addressed in git commit 6fc1aaaf3 that is available to
premium support customers only. It will be made available in 1.0.2zc when it is
released.
The issue only affects OpenSSL on MIPS platforms. Reported by Bernd Edlinger.
- Fixed in OpenSSL 3.0.1 (git commit) (Affected 3.0.0)
- Fixed in OpenSSL 1.1.1m (git commit) (Affected 1.1.1-1.1.1l)
- Fixed in OpenSSL 1.0.2zc-dev (git commit) (Affected 1.0.2-1.0.2zb)
2021
- CVE-2021-4044 (OpenSSL advisory) [Moderate severity] 14 December 2021:
- Internally libssl in OpenSSL calls X509_verify_cert() on the client side to
verify a certificate supplied by a server. That function may return a negative
return value to indicate an internal error (for example out of memory). Such a
negative return value is mishandled by OpenSSL and will cause an IO function
(such as SSL_connect() or SSL_do_handshake()) to not indicate success and a
subsequent call to SSL_get_error() to return the value
SSL_ERROR_WANT_RETRY_VERIFY. This return value is only supposed to be returned
by OpenSSL if the application has previously called
SSL_CTX_set_cert_verify_callback(). Since most applications do not do this the
SSL_ERROR_WANT_RETRY_VERIFY return value from SSL_get_error() will be totally
unexpected and applications may not behave correctly as a result. The exact
behaviour will depend on the application but it could result in crashes,
infinite loops or other similar incorrect responses.
This issue is made more serious in combination with a separate bug in OpenSSL
3.0 that will cause X509_verify_cert() to indicate an internal error when
processing a certificate chain. This will occur where a certificate does not
include the Subject Alternative Name extension but where a Certificate Authority
has enforced name constraints. This issue can occur even with valid chains.
By combining the two issues an attacker could induce incorrect, application
dependent behaviour. Reported by Tobias Nießen.
- Fixed in OpenSSL 3.0.1 (git commit) (Affected 3.0.0)
- CVE-2021-3712 (OpenSSL advisory) [Moderate severity] 24 August 2021:
- ASN.1 strings are represented internally within OpenSSL as an ASN1_STRING
structure which contains a buffer holding the string data and a field holding
the buffer length. This contrasts with normal C strings which are repesented as
a buffer for the string data which is terminated with a NUL (0) byte.
Although not a strict requirement, ASN.1 strings that are parsed using OpenSSL's
own "d2i" functions (and other similar parsing functions) as well as any string
whose value has been set with the ASN1_STRING_set() function will additionally
NUL terminate the byte array in the ASN1_STRING structure.
However, it is possible for applications to directly construct valid ASN1_STRING
structures which do not NUL terminate the byte array by directly setting the
"data" and "length" fields in the ASN1_STRING array. This can also happen by
using the ASN1_STRING_set0() function.
Numerous OpenSSL functions that print ASN.1 data have been found to assume that
the ASN1_STRING byte array will be NUL terminated, even though this is not
guaranteed for strings that have been directly constructed. Where an application
requests an ASN.1 structure to be printed, and where that ASN.1 structure
contains ASN1_STRINGs that have been directly constructed by the application
without NUL terminating the "data" field, then a read buffer overrun can occur.
The same thing can also occur during name constraints processing of certificates
(for example if a certificate has been directly constructed by the application
instead of loading it via the OpenSSL parsing functions, and the certificate
contains non NUL terminated ASN1_STRING structures). It can also occur in the
X509_get1_email(), X509_REQ_get1_email() and X509_get1_ocsp() functions.
If a malicious actor can cause an application to directly construct an
ASN1_STRING and then process it through one of the affected OpenSSL functions
then this issue could be hit. This might result in a crash (causing a Denial of
Service attack). It could also result in the disclosure of private memory
contents (such as private keys, or sensitive plaintext). Reported by Ingo Schwarze.
- Fixed in OpenSSL 1.1.1l (git commit) (Affected 1.1.1-1.1.1k)
- Fixed in OpenSSL 1.0.2za (git commit) (Affected 1.0.2-1.0.2y)
- CVE-2021-3711 (OpenSSL advisory) [High severity] 24 August 2021:
- In order to decrypt SM2 encrypted data an application is expected to call the
API function EVP_PKEY_decrypt(). Typically an application will call this
function twice. The first time, on entry, the "out" parameter can be NULL and,
on exit, the "outlen" parameter is populated with the buffer size required to
hold the decrypted plaintext. The application can then allocate a sufficiently
sized buffer and call EVP_PKEY_decrypt() again, but this time passing a non-NULL
value for the "out" parameter.
A bug in the implementation of the SM2 decryption code means that the
calculation of the buffer size required to hold the plaintext returned by the
first call to EVP_PKEY_decrypt() can be smaller than the actual size required by
the second call. This can lead to a buffer overflow when EVP_PKEY_decrypt() is
called by the application a second time with a buffer that is too small.
A malicious attacker who is able present SM2 content for decryption to an
application could cause attacker chosen data to overflow the buffer by up to a
maximum of 62 bytes altering the contents of other data held after the
buffer, possibly changing application behaviour or causing the application to
crash. The location of the buffer is application dependent but is typically
heap allocated. Reported by John Ouyang.
- Fixed in OpenSSL 1.1.1l (git commit) (Affected 1.1.1-1.1.1k)
- CVE-2021-3450 (OpenSSL advisory) [High severity] 25 March 2021:
- The X509_V_FLAG_X509_STRICT flag enables additional security checks of the
certificates present in a certificate chain. It is not set by default.
Starting from OpenSSL version 1.1.1h a check to disallow certificates in
the chain that have explicitly encoded elliptic curve parameters was added
as an additional strict check.
An error in the implementation of this check meant that the result of a
previous check to confirm that certificates in the chain are valid CA
certificates was overwritten. This effectively bypasses the check
that non-CA certificates must not be able to issue other certificates.
If a "purpose" has been configured then there is a subsequent opportunity
for checks that the certificate is a valid CA. All of the named "purpose"
values implemented in libcrypto perform this check. Therefore, where
a purpose is set the certificate chain will still be rejected even when the
strict flag has been used. A purpose is set by default in libssl client and
server certificate verification routines, but it can be overridden or
removed by an application.
In order to be affected, an application must explicitly set the
X509_V_FLAG_X509_STRICT verification flag and either not set a purpose
for the certificate verification or, in the case of TLS client or server
applications, override the default purpose.
OpenSSL versions 1.1.1h and newer are affected by this issue. Users of these
versions should upgrade to OpenSSL 1.1.1k.
OpenSSL 1.0.2 is not impacted by this issue. Reported by Benjamin Kaduk (Akamai), Xiang Ding (Akamai), others at Akamai.
- Fixed in OpenSSL 1.1.1k (git commit) (Affected 1.1.1h-1.1.1j)
- CVE-2021-3449 (OpenSSL advisory) [High severity] 25 March 2021:
- An OpenSSL TLS server may crash if sent a maliciously crafted renegotiation
ClientHello message from a client. If a TLSv1.2 renegotiation ClientHello omits
the signature_algorithms extension (where it was present in the initial
ClientHello), but includes a signature_algorithms_cert extension then a NULL
pointer dereference will result, leading to a crash and a denial of service
attack.
A server is only vulnerable if it has TLSv1.2 and renegotiation enabled (which
is the default configuration). OpenSSL TLS clients are not impacted by this
issue.
All OpenSSL 1.1.1 versions are affected by this issue. Users of these versions
should upgrade to OpenSSL 1.1.1k.
OpenSSL 1.0.2 is not impacted by this issue. Reported by Peter Kästle (Nokia) and Samuel Sapalski (Nokia).
- Fixed in OpenSSL 1.1.1k (git commit) (Affected 1.1.1-1.1.1j)
- CVE-2021-23841 (OpenSSL advisory) [Moderate severity] 16 February 2021:
- The OpenSSL public API function X509_issuer_and_serial_hash() attempts to
create a unique hash value based on the issuer and serial number data contained
within an X509 certificate. However it fails to correctly handle any errors
that may occur while parsing the issuer field (which might occur if the issuer
field is maliciously constructed). This may subsequently result in a NULL
pointer deref and a crash leading to a potential denial of service attack.
The function X509_issuer_and_serial_hash() is never directly called by OpenSSL
itself so applications are only vulnerable if they use this function directly
and they use it on certificates that may have been obtained from untrusted
sources.
OpenSSL versions 1.1.1i and below are affected by this issue. Users of these
versions should upgrade to OpenSSL 1.1.1j.
OpenSSL versions 1.0.2x and below are affected by this issue. However OpenSSL
1.0.2 is out of support and no longer receiving public updates. Premium support
customers of OpenSSL 1.0.2 should upgrade to 1.0.2y. Other users should upgrade
to 1.1.1j. Reported by Tavis Ormandy (Google).
- Fixed in OpenSSL 1.1.1j (git commit) (Affected 1.1.1-1.1.1i)
- Fixed in OpenSSL 1.0.2y (git commit) (Affected 1.0.2-1.0.2x)
- CVE-2021-23840 (OpenSSL advisory) [Low severity] 16 February 2021:
- Calls to EVP_CipherUpdate, EVP_EncryptUpdate and EVP_DecryptUpdate may overflow
the output length argument in some cases where the input length is close to the
maximum permissable length for an integer on the platform. In such cases the
return value from the function call will be 1 (indicating success), but the
output length value will be negative. This could cause applications to behave
incorrectly or crash.
OpenSSL versions 1.1.1i and below are affected by this issue. Users of these
versions should upgrade to OpenSSL 1.1.1j.
OpenSSL versions 1.0.2x and below are affected by this issue. However OpenSSL
1.0.2 is out of support and no longer receiving public updates. Premium support
customers of OpenSSL 1.0.2 should upgrade to 1.0.2y. Other users should upgrade
to 1.1.1j. Reported by Paul Kehrer.
- Fixed in OpenSSL 1.1.1j (git commit) (Affected 1.1.1-1.1.1i)
- Fixed in OpenSSL 1.0.2y (git commit) (Affected 1.0.2-1.0.2x)
- CVE-2021-23839 (OpenSSL advisory) [Low severity] 16 February 2021:
- OpenSSL 1.0.2 supports SSLv2. If a client attempts to negotiate SSLv2 with a
server that is configured to support both SSLv2 and more recent SSL and TLS
versions then a check is made for a version rollback attack when unpadding an
RSA signature. Clients that support SSL or TLS versions greater than SSLv2 are
supposed to use a special form of padding. A server that supports greater than
SSLv2 is supposed to reject connection attempts from a client where this special
form of padding is present, because this indicates that a version rollback has
occurred (i.e. both client and server support greater than SSLv2, and yet this
is the version that is being requested).
The implementation of this padding check inverted the logic so that the
connection attempt is accepted if the padding is present, and rejected if it
is absent. This means that such as server will accept a connection if a version
rollback attack has occurred. Further the server will erroneously reject a
connection if a normal SSLv2 connection attempt is made.
Only OpenSSL 1.0.2 servers from version 1.0.2s to 1.0.2x are affected by this
issue. In order to be vulnerable a 1.0.2 server must:
1) have configured SSLv2 support at compile time (this is off by default),
2) have configured SSLv2 support at runtime (this is off by default),
3) have configured SSLv2 ciphersuites (these are not in the default ciphersuite
list)
OpenSSL 1.1.1 does not have SSLv2 support and therefore is not vulnerable to
this issue. The underlying error is in the implementation of the
RSA_padding_check_SSLv23() function. This also affects the RSA_SSLV23_PADDING
padding mode used by various other functions. Although 1.1.1 does not support
SSLv2 the RSA_padding_check_SSLv23() function still exists, as does the
RSA_SSLV23_PADDING padding mode. Applications that directly call that function
or use that padding mode will encounter this issue. However since there is no
support for the SSLv2 protocol in 1.1.1 this is considered a bug and not a
security issue in that version.
OpenSSL 1.0.2 is out of support and no longer receiving public updates. Premium
support customers of OpenSSL 1.0.2 should upgrade to 1.0.2y. Other users should
upgrade to 1.1.1j. Reported by D. Katz and Joel Luellwitz (Trustwave).
- Fixed in OpenSSL 1.0.2y (git commit) (Affected 1.0.2s-1.0.2x)
2020
- CVE-2020-1971 (OpenSSL advisory) [High severity] 08 December 2020:
- The X.509 GeneralName type is a generic type for representing different types
of names. One of those name types is known as EDIPartyName. OpenSSL provides a
function GENERAL_NAME_cmp which compares different instances of a GENERAL_NAME
to see if they are equal or not. This function behaves incorrectly when both
GENERAL_NAMEs contain an EDIPARTYNAME. A NULL pointer dereference and a crash
may occur leading to a possible denial of service attack.
OpenSSL itself uses the GENERAL_NAME_cmp function for two purposes:
1) Comparing CRL distribution point names between an available CRL and a CRL
distribution point embedded in an X509 certificate
2) When verifying that a timestamp response token signer matches the timestamp
authority name (exposed via the API functions TS_RESP_verify_response and
TS_RESP_verify_token)
If an attacker can control both items being compared then that attacker could
trigger a crash. For example if the attacker can trick a client or server into
checking a malicious certificate against a malicious CRL then this may occur.
Note that some applications automatically download CRLs based on a URL embedded
in a certificate. This checking happens prior to the signatures on the
certificate and CRL being verified. OpenSSL's s_server, s_client and verify
tools have support for the "-crl_download" option which implements automatic
CRL downloading and this attack has been demonstrated to work against those
tools.
Note that an unrelated bug means that affected versions of OpenSSL cannot parse
or construct correct encodings of EDIPARTYNAME. However it is possible to
construct a malformed EDIPARTYNAME that OpenSSL's parser will accept and hence
trigger this attack.
All OpenSSL 1.1.1 and 1.0.2 versions are affected by this issue. Other OpenSSL
releases are out of support and have not been checked. Reported by David Benjamin (Google).
- Fixed in OpenSSL 1.1.1i (git commit) (Affected 1.1.1-1.1.1h)
- Fixed in OpenSSL 1.0.2x (git commit) (Affected 1.0.2-1.0.2w)
- CVE-2020-1968 (OpenSSL advisory) [Low severity] 09 September 2020:
- The Raccoon attack exploits a flaw in the TLS specification which can lead to
an attacker being able to compute the pre-master secret in connections which
have used a Diffie-Hellman (DH) based ciphersuite. In such a case this would
result in the attacker being able to eavesdrop on all encrypted communications
sent over that TLS connection. The attack can only be exploited if an
implementation re-uses a DH secret across multiple TLS connections. Note that
this issue only impacts DH ciphersuites and not ECDH ciphersuites.
This issue affects OpenSSL 1.0.2 which is out of support and no longer
receiving public updates. OpenSSL 1.1.1 is not vulnerable to this
issue. Reported by Robert Merget, Marcus Brinkmann, Nimrod Aviram, and Juraj Somorovsky.
- Fixed in OpenSSL 1.0.2w (Affected 1.0.2-1.0.2v)
- CVE-2020-1967 (OpenSSL advisory) [High severity] 21 April 2020:
- Server or client applications that call the SSL_check_chain() function during or
after a TLS 1.3 handshake may crash due to a NULL pointer dereference as a
result of incorrect handling of the "signature_algorithms_cert" TLS extension.
The crash occurs if an invalid or unrecognised signature algorithm is received
from the peer. This could be exploited by a malicious peer in a Denial of
Service attack. OpenSSL version 1.1.1d, 1.1.1e, and 1.1.1f are affected by this issue. This
issue did not affect OpenSSL versions prior to 1.1.1d. Reported by Bernd Edlinger.
- Fixed in OpenSSL 1.1.1g (git commit) (Affected 1.1.1d-1.1.1f)
2019
- CVE-2019-1551 (OpenSSL advisory) [Low severity] 06 December 2019:
- There is an overflow bug in the x64_64 Montgomery squaring procedure used in
exponentiation with 512-bit moduli. No EC algorithms are affected. Analysis
suggests that attacks against 2-prime RSA1024, 3-prime RSA1536, and DSA1024 as a
result of this defect would be very difficult to perform and are not believed
likely. Attacks against DH512 are considered just feasible. However, for an
attack the target would have to re-use the DH512 private key, which is not
recommended anyway. Also applications directly using the low level API
BN_mod_exp may be affected if they use BN_FLG_CONSTTIME. Reported by OSS-Fuzz and Guido Vranken.
- Fixed in OpenSSL 1.1.1e (git commit) (Affected 1.1.1-1.1.1d)
- Fixed in OpenSSL 1.0.2u (git commit) (Affected 1.0.2-1.0.2t)
- CVE-2019-1563 (OpenSSL advisory) [Low severity] 10 September 2019:
- In situations where an attacker receives automated notification of the success
or failure of a decryption attempt an attacker, after sending a very large
number of messages to be decrypted, can recover a CMS/PKCS7 transported
encryption key or decrypt any RSA encrypted message that was encrypted with the
public RSA key, using a Bleichenbacher padding oracle attack. Applications are
not affected if they use a certificate together with the private RSA key to the
CMS_decrypt or PKCS7_decrypt functions to select the correct recipient info to
decrypt. Reported by Bernd Edlinger.
- Fixed in OpenSSL 1.1.1d (git commit) (Affected 1.1.1-1.1.1c)
- Fixed in OpenSSL 1.1.0l (git commit) (Affected 1.1.0-1.1.0k)
- Fixed in OpenSSL 1.0.2t (git commit) (Affected 1.0.2-1.0.2s)
- CVE-2019-1549 (OpenSSL advisory) [Low severity] 10 September 2019:
- OpenSSL 1.1.1 introduced a rewritten random number generator (RNG). This was
intended to include protection in the event of a fork() system call in order to
ensure that the parent and child processes did not share the same RNG state.
However this protection was not being used in the default case.
A partial mitigation for this issue is that the output from a high precision
timer is mixed into the RNG state so the likelihood of a parent and child
process sharing state is significantly reduced.
If an application already calls OPENSSL_init_crypto() explicitly using
OPENSSL_INIT_ATFORK then this problem does not occur at all. Reported by Matt Caswell.
- Fixed in OpenSSL 1.1.1d (git commit) (Affected 1.1.1-1.1.1c)
- CVE-2019-1547 (OpenSSL advisory) [Low severity] 10 September 2019:
- Normally in OpenSSL EC groups always have a co-factor present and this is used
in side channel resistant code paths. However, in some cases, it is possible to
construct a group using explicit parameters (instead of using a named curve). In
those cases it is possible that such a group does not have the cofactor present.
This can occur even where all the parameters match a known named curve.
If such a curve is used then OpenSSL falls back to non-side channel resistant
code paths which may result in full key recovery during an ECDSA signature
operation.
In order to be vulnerable an attacker would have to have the ability to time
the creation of a large number of signatures where explicit parameters with no
co-factor present are in use by an application using libcrypto.
For the avoidance of doubt libssl is not vulnerable because explicit parameters
are never used. Reported by Cesar Pereida García, Sohaib ul Hassan, Nicola Tuveri, Iaroslav Gridin, Alejandro Cabrera Aldaya, and Billy Brumley.
- Fixed in OpenSSL 1.1.1d (git commit) (Affected 1.1.1-1.1.1c)
- Fixed in OpenSSL 1.1.0l (git commit) (Affected 1.1.0-1.1.0k)
- Fixed in OpenSSL 1.0.2t (git commit) (Affected 1.0.2-1.0.2s)
- CVE-2019-1552 (OpenSSL advisory) [Low severity] 30 July 2019:
- OpenSSL has internal defaults for a directory tree where it can find a
configuration file as well as certificates used for verification in
TLS. This directory is most commonly referred to as OPENSSLDIR, and
is configurable with the --prefix / --openssldir configuration options.
For OpenSSL versions 1.1.0 and 1.1.1, the mingw configuration targets
assume that resulting programs and libraries are installed in a
Unix-like environment and the default prefix for program installation
as well as for OPENSSLDIR should be '/usr/local'.
However, mingw programs are Windows programs, and as such, find
themselves looking at sub-directories of 'C:/usr/local', which may be
world writable, which enables untrusted users to modify OpenSSL's
default configuration, insert CA certificates, modify (or even
replace) existing engine modules, etc.
For OpenSSL 1.0.2, '/usr/local/ssl' is used as default for OPENSSLDIR
on all Unix and Windows targets, including Visual C builds. However,
some build instructions for the diverse Windows targets on 1.0.2
encourage you to specify your own --prefix.
OpenSSL versions 1.1.1, 1.1.0 and 1.0.2 are affected by this issue.
Due to the limited scope of affected deployments this has been
assessed as low severity and therefore we are not creating new
releases at this time. Reported by Rich Mirch.
- Fixed in OpenSSL 1.1.1d (git commit) (Affected 1.1.1-1.1.1c)
- Fixed in OpenSSL 1.1.0l (git commit) (git commit) (Affected 1.1.0-1.1.0k)
- Fixed in OpenSSL 1.0.2t (git commit) (Affected 1.0.2-1.0.2s)
- CVE-2019-1543 (OpenSSL advisory) [Low severity] 06 March 2019:
- ChaCha20-Poly1305 is an AEAD cipher, and requires a unique nonce input for every
encryption operation. RFC 7539 specifies that the nonce value (IV) should be 96
bits (12 bytes). OpenSSL allows a variable nonce length and front pads the nonce
with 0 bytes if it is less than 12 bytes. However it also incorrectly allows a
nonce to be set of up to 16 bytes. In this case only the last 12 bytes are
significant and any additional leading bytes are ignored.
It is a requirement of using this cipher that nonce values are unique. Messages
encrypted using a reused nonce value are susceptible to serious confidentiality
and integrity attacks. If an application changes the default nonce length to be
longer than 12 bytes and then makes a change to the leading bytes of the nonce
expecting the new value to be a new unique nonce then such an application could
inadvertently encrypt messages with a reused nonce.
Additionally the ignored bytes in a long nonce are not covered by the integrity
guarantee of this cipher. Any application that relies on the integrity of these
ignored leading bytes of a long nonce may be further affected.
Any OpenSSL internal use of this cipher, including in SSL/TLS, is safe because
no such use sets such a long nonce value. However user applications that use
this cipher directly and set a non-default nonce length to be longer than 12
bytes may be vulnerable.
OpenSSL versions 1.1.1 and 1.1.0 are affected by this issue. Due to the limited
scope of affected deployments this has been assessed as low severity and
therefore we are not creating new releases at this time. Reported by Joran Dirk Greef of Ronomon.
- Fixed in OpenSSL 1.1.1c (git commit) (Affected 1.1.1-1.1.1b)
- Fixed in OpenSSL 1.1.0k (git commit) (Affected 1.1.0-1.1.0j)
- CVE-2019-1559 (OpenSSL advisory) [Moderate severity] 26 February 2019:
- If an application encounters a fatal protocol error and then calls
SSL_shutdown() twice (once to send a close_notify, and once to receive one) then
OpenSSL can respond differently to the calling application if a 0 byte record is
received with invalid padding compared to if a 0 byte record is received with an
invalid MAC. If the application then behaves differently based on that in a way
that is detectable to the remote peer, then this amounts to a padding oracle
that could be used to decrypt data.
In order for this to be exploitable "non-stitched" ciphersuites must be in use.
Stitched ciphersuites are optimised implementations of certain commonly used
ciphersuites. Also the application must call SSL_shutdown() twice even if a
protocol error has occurred (applications should not do this but some do
anyway). AEAD ciphersuites are not impacted. Reported by Juraj Somorovsky, Robert Merget and Nimrod Aviram, with additional investigation by Steven Collison and Andrew Hourselt.
- Fixed in OpenSSL 1.0.2r (git commit) (Affected 1.0.2-1.0.2q)
2018
- CVE-2018-5407 (OpenSSL advisory) [Low severity] 02 November 2018:
- OpenSSL ECC scalar multiplication, used in e.g. ECDSA and ECDH, has been shown
to be vulnerable to a microarchitecture timing side channel attack. An attacker
with sufficient access to mount local timing attacks during ECDSA signature
generation could recover the private key. Reported by Alejandro Cabrera Aldaya, Billy Brumley, Sohaib ul Hassan, Cesar Pereida Garcia and Nicola Tuveri.
- Fixed in OpenSSL 1.1.0i (git commit) (Affected 1.1.0-1.1.0h)
- Fixed in OpenSSL 1.0.2q (git commit) (Affected 1.0.2-1.0.2p)
- CVE-2018-0734 (OpenSSL advisory) [Low severity] 30 October 2018:
- The OpenSSL DSA signature algorithm has been shown to be vulnerable
to a timing side channel attack. An attacker could use variations
in the signing algorithm to recover the private key. Reported by Samuel Weiser.
- Fixed in OpenSSL 1.1.1a (git commit) (Affected 1.1.1)
- Fixed in OpenSSL 1.1.0j (git commit) (Affected 1.1.0-1.1.0i)
- Fixed in OpenSSL 1.0.2q (git commit) (Affected 1.0.2-1.0.2p)
- CVE-2018-0735 (OpenSSL advisory) [Low severity] 29 October 2018:
- The OpenSSL ECDSA signature algorithm has been shown to be
vulnerable to a timing side channel attack. An attacker could use
variations in the signing algorithm to recover the private key. Reported by Samuel Weiser.
- Fixed in OpenSSL 1.1.1a (git commit) (Affected 1.1.1)
- Fixed in OpenSSL 1.1.0j (git commit) (Affected 1.1.0-1.1.0i)
- CVE-2018-0732 (OpenSSL advisory) [Low severity] 12 June 2018:
- During key agreement in a TLS handshake using a DH(E) based ciphersuite
a malicious server can send a very large prime value to the client. This
will cause the client to spend an unreasonably long period of time
generating a key for this prime resulting in a hang until the client has
finished. This could be exploited in a Denial Of Service attack. Reported by Guido Vranken.
- Fixed in OpenSSL 1.1.0i (git commit) (Affected 1.1.0-1.1.0h)
- Fixed in OpenSSL 1.0.2p (git commit) (Affected 1.0.2-1.0.2o)
- CVE-2018-0737 (OpenSSL advisory) [Low severity] 16 April 2018:
- The OpenSSL RSA Key generation algorithm has been shown to be vulnerable
to a cache timing side channel attack. An attacker with sufficient access
to mount cache timing attacks during the RSA key generation process could
recover the private key. Reported by Alejandro Cabrera Aldaya, Billy Brumley, Cesar Pereida Garcia and Luis Manuel Alvarez Tapia.
- Fixed in OpenSSL 1.1.0i (git commit) (Affected 1.1.0-1.1.0h)
- Fixed in OpenSSL 1.0.2p (git commit) (Affected 1.0.2-1.0.2o)
- CVE-2018-0739 (OpenSSL advisory) [Moderate severity] 27 March 2018:
- Constructed ASN.1 types with a recursive definition (such as can be found
in PKCS7) could eventually exceed the stack given malicious input with
excessive recursion. This could result in a Denial Of Service attack.
There are no such structures used within SSL/TLS that come from untrusted
sources so this is considered safe. Reported by OSS-fuzz.
- Fixed in OpenSSL 1.1.0h (git commit) (Affected 1.1.0-1.1.0g)
- Fixed in OpenSSL 1.0.2o (git commit) (Affected 1.0.2b-1.0.2n)
- CVE-2018-0733 (OpenSSL advisory) [Moderate severity] 27 March 2018:
- Because of an implementation bug the PA-RISC CRYPTO_memcmp function is
effectively reduced to only comparing the least significant bit of each
byte. This allows an attacker to forge messages that would be considered
as authenticated in an amount of tries lower than that guaranteed by the
security claims of the scheme. The module can only be compiled by the
HP-UX assembler, so that only HP-UX PA-RISC targets are affected. Reported by Peter Waltenberg (IBM).
- Fixed in OpenSSL 1.1.0h (git commit) (Affected 1.1.0-1.1.0g)
2017
- CVE-2017-3738 (OpenSSL advisory) [Low severity] 07 December 2017:
- There is an overflow bug in the AVX2 Montgomery multiplication procedure
used in exponentiation with 1024-bit moduli. No EC algorithms are affected.
Analysis suggests that attacks against RSA and DSA as a result of this defect
would be very difficult to perform and are not believed likely. Attacks
against DH1024 are considered just feasible, because most of the work
necessary to deduce information about a private key may be performed offline.
The amount of resources required for such an attack would be significant.
However, for an attack on TLS to be meaningful, the server would have to share
the DH1024 private key among multiple clients, which is no longer an option
since CVE-2016-0701.
This only affects processors that support the AVX2 but not ADX extensions
like Intel Haswell (4th generation).
Note: The impact from this issue is similar to CVE-2017-3736, CVE-2017-3732
and CVE-2015-3193.
Due to the low severity of this issue we are not issuing a new release of
OpenSSL 1.1.0 at this time. The fix will be included in OpenSSL 1.1.0h when it
becomes available. The fix is also available in commit e502cc86d in the OpenSSL
git repository. Reported by David Benjamin (Google)/Google OSS-Fuzz.
- Fixed in OpenSSL 1.1.0h (git commit) (Affected 1.1.0-1.1.0g)
- Fixed in OpenSSL 1.0.2n (git commit) (Affected 1.0.2-1.0.2m)
- CVE-2017-3737 (OpenSSL advisory) [Moderate severity] 07 December 2017:
- OpenSSL 1.0.2 (starting from version 1.0.2b) introduced an "error state"
mechanism. The intent was that if a fatal error occurred during a handshake then
OpenSSL would move into the error state and would immediately fail if you
attempted to continue the handshake. This works as designed for the explicit
handshake functions (SSL_do_handshake(), SSL_accept() and SSL_connect()),
however due to a bug it does not work correctly if SSL_read() or SSL_write() is
called directly. In that scenario, if the handshake fails then a fatal error
will be returned in the initial function call. If SSL_read()/SSL_write() is
subsequently called by the application for the same SSL object then it will
succeed and the data is passed without being decrypted/encrypted directly from
the SSL/TLS record layer.
In order to exploit this issue an application bug would have to be present that
resulted in a call to SSL_read()/SSL_write() being issued after having already
received a fatal error. Reported by David Benjamin (Google).
- Fixed in OpenSSL 1.0.2n (git commit) (Affected 1.0.2b-1.0.2m)
- CVE-2017-3736 (OpenSSL advisory) [Moderate severity] 02 November 2017:
- There is a carry propagating bug in the x86_64 Montgomery squaring procedure. No
EC algorithms are affected. Analysis suggests that attacks against RSA and DSA
as a result of this defect would be very difficult to perform and are not
believed likely. Attacks against DH are considered just feasible (although very
difficult) because most of the work necessary to deduce information
about a private key may be performed offline. The amount of resources
required for such an attack would be very significant and likely only
accessible to a limited number of attackers. An attacker would
additionally need online access to an unpatched system using the target
private key in a scenario with persistent DH parameters and a private
key that is shared between multiple clients.
This only affects processors that support the BMI1, BMI2 and ADX extensions like
Intel Broadwell (5th generation) and later or AMD Ryzen. Reported by Google OSS-Fuzz.
- Fixed in OpenSSL 1.1.0g (git commit) (Affected 1.1.0-1.1.0f)
- Fixed in OpenSSL 1.0.2m (git commit) (Affected 1.0.2-1.0.2l)
- CVE-2017-3735 (OpenSSL advisory) [Low severity] 28 August 2017:
- While parsing an IPAdressFamily extension in an X.509 certificate,
it is possible to do a one-byte overread. This would result in
an incorrect text display of the certificate. Reported by Google OSS-Fuzz.
- Fixed in OpenSSL 1.1.0g (git commit) (Affected 1.1.0-1.1.0f)
- Fixed in OpenSSL 1.0.2m (git commit) (Affected 1.0.2-1.0.2l)
- CVE-2017-3733 (OpenSSL advisory) [High severity] 16 February 2017:
- During a renegotiation handshake if the Encrypt-Then-Mac extension is
negotiated where it was not in the original handshake (or vice-versa) then
this can cause OpenSSL to crash (dependent on ciphersuite). Both clients
and servers are affected. Reported by Joe Orton (Red Hat).
- Fixed in OpenSSL 1.1.0e (git commit) (Affected 1.1.0-1.1.0d)
- CVE-2017-3732 (OpenSSL advisory) [Moderate severity] 26 January 2017:
- There is a carry propagating bug in the x86_64 Montgomery squaring
procedure. No EC algorithms are affected. Analysis suggests that attacks
against RSA and DSA as a result of this defect would be very difficult to
perform and are not believed likely. Attacks against DH are considered
just feasible (although very difficult) because most of the work necessary
to deduce information about a private key may be performed offline. The
amount of resources required for such an attack would be very significant
and likely only accessible to a limited number of attackers. An attacker
would additionally need online access to an unpatched system using the
target private key in a scenario with persistent DH parameters and a
private key that is shared between multiple clients. For example this can
occur by default in OpenSSL DHE based SSL/TLS ciphersuites. Note: This
issue is very similar to CVE-2015-3193 but must be treated as a separate
problem. Reported by OSS-Fuzz project.
- Fixed in OpenSSL 1.1.0d (git commit) (Affected 1.1.0-1.1.0c)
- Fixed in OpenSSL 1.0.2k (git commit) (Affected 1.0.2-1.0.2j)
- CVE-2017-3731 (OpenSSL advisory) [Moderate severity] 26 January 2017:
- If an SSL/TLS server or client is running on a 32-bit host, and a specific
cipher is being used, then a truncated packet can cause that server or
client to perform an out-of-bounds read, usually resulting in a crash.
For OpenSSL 1.1.0, the crash can be triggered when using
CHACHA20/POLY1305; users should upgrade to 1.1.0d.
For Openssl 1.0.2, the crash can be triggered when using RC4-MD5; users
who have not disabled that algorithm should update to 1.0.2k Reported by Robert Święcki of Google.
- Fixed in OpenSSL 1.1.0d (git commit) (Affected 1.1.0-1.1.0c)
- Fixed in OpenSSL 1.0.2k (git commit) (Affected 1.0.2-1.0.2j)
- CVE-2017-3730 (OpenSSL advisory) [Moderate severity] 26 January 2017:
- If a malicious server supplies bad parameters for a DHE or ECDHE key
exchange then this can result in the client attempting to dereference a
NULL pointer leading to a client crash. This could be exploited in a
Denial of Service attack. Reported by Guido Vranken.
- Fixed in OpenSSL 1.1.0d (git commit) (Affected 1.1.0-1.1.0c)
2016
- CVE-2016-7055 (OpenSSL advisory) [Low severity] 10 November 2016:
- There is a carry propagating bug in the Broadwell-specific Montgomery
multiplication procedure that handles input lengths divisible by, but
longer than 256 bits. Analysis suggests that attacks against RSA, DSA
and DH private keys are impossible. This is because the subroutine in
question is not used in operations with the private key itself and an
input of the attacker's direct choice. Otherwise the bug can manifest
itself as transient authentication and key negotiation failures or
reproducible erroneous outcome of public-key operations with specially
crafted input. Among EC algorithms only Brainpool P-512 curves are
affected and one presumably can attack ECDH key negotiation. Impact was
not analyzed in detail, because pre-requisites for attack are considered
unlikely. Namely multiple clients have to choose the curve in question and
the server has to share the private key among them, neither of which is
default behaviour. Even then only clients that chose the curve will be
affected. Reported by Publicly reported.
- Fixed in OpenSSL 1.1.0c (git commit) (Affected 1.1.0-1.1.0b)
- Fixed in OpenSSL 1.0.2k (git commit) (Affected 1.0.2-1.0.2j)
- CVE-2016-7054 (OpenSSL advisory) [High severity] 10 November 2016:
- TLS connections using *-CHACHA20-POLY1305 ciphersuites are susceptible to
a DoS attack by corrupting larger payloads. This can result in an OpenSSL
crash. This issue is not considered to be exploitable beyond a DoS. Reported by Robert Święcki (Google Security Team).
- Fixed in OpenSSL 1.1.0c (git commit) (Affected 1.1.0-1.1.0b)
- CVE-2016-7053 (OpenSSL advisory) [Moderate severity] 10 November 2016:
- Applications parsing invalid CMS structures can crash with a NULL pointer
dereference. This is caused by a bug in the handling of the ASN.1 CHOICE
type in OpenSSL 1.1.0 which can result in a NULL value being passed to the
structure callback if an attempt is made to free certain invalid
encodings. Only CHOICE structures using a callback which do not handle
NULL value are affected. Reported by Tyler Nighswander (ForAllSecure).
- Fixed in OpenSSL 1.1.0c (git commit) (Affected 1.1.0-1.1.0b)
- CVE-2016-7052 (OpenSSL advisory) [Moderate severity] 26 September 2016:
- This issue only affects OpenSSL 1.0.2i, released on 22nd September 2016.
A bug fix which included a CRL sanity check was added to OpenSSL 1.1.0
but was omitted from OpenSSL 1.0.2i. As a result any attempt to use
CRLs in OpenSSL 1.0.2i will crash with a null pointer exception. Reported by Bruce Stephens and Thomas Jakobi.
- Fixed in OpenSSL 1.0.2j (git commit) (Affected 1.0.2i)
- CVE-2016-6309 (OpenSSL advisory) [Critical severity] 26 September 2016:
- This issue only affects OpenSSL 1.1.0a, released on 22nd September 2016.
The patch applied to address CVE-2016-6307 resulted in an issue where if a
message larger than approx 16k is received then the underlying buffer to store
the incoming message is reallocated and moved. Unfortunately a dangling pointer
to the old location is left which results in an attempt to write to the
previously freed location. This is likely to result in a crash, however it
could potentially lead to execution of arbitrary code. Reported by Robert Święcki (Google Security Team).
- Fixed in OpenSSL 1.1.0b (git commit) (Affected 1.1.0a)
- CVE-2016-6305 (OpenSSL advisory) [Moderate severity] 22 September 2016:
- OpenSSL 1.1.0 SSL/TLS will hang during a call to SSL_peek() if the peer sends an
empty record. This could be exploited by a malicious peer in a Denial Of Service
attack. Reported by Alex Gaynor.
- Fixed in OpenSSL 1.1.0a (git commit) (Affected 1.1.0)
- CVE-2016-6304 (OpenSSL advisory) [High severity] 22 September 2016:
- 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. Reported by Shi Lei (Gear Team, Qihoo 360 Inc.).
- Fixed in OpenSSL 1.1.0a (git commit) (Affected 1.1.0)
- Fixed in OpenSSL 1.0.2i (git commit) (Affected 1.0.2-1.0.2h)
- Fixed in OpenSSL 1.0.1u (git commit) (Affected 1.0.1-1.0.1t)
- CVE-2016-6308 (OpenSSL advisory) [Low severity] 21 September 2016:
- A DTLS message includes 3 bytes for its length in the header for the message.
This would allow for messages up to 16Mb in length. Messages of this length are
excessive and OpenSSL includes a check to ensure that a peer is sending
reasonably sized messages in order to avoid too much memory being consumed to
service a connection. A flaw in the logic of version 1.1.0 means that memory for
the message is allocated too early, prior to the excessive message length
check. Due to way memory is allocated in OpenSSL this could mean an attacker
could force up to 21Mb to be allocated to service a connection. This could lead
to a Denial of Service through memory exhaustion. However, the excessive message
length check still takes place, and this would cause the connection to
immediately fail. Assuming that the application calls SSL_free() on the failed
conneciton in a timely manner then the 21Mb of allocated memory will then be
immediately freed again. Therefore the excessive memory allocation will be
transitory in nature. This then means that there is only a security impact if:
1) The application does not call SSL_free() in a timely manner in the
event that the connection fails
or
2) The application is working in a constrained environment where there
is very little free memory
or
3) The attacker initiates multiple connection attempts such that there
are multiple connections in a state where memory has been allocated for
the connection; SSL_free() has not yet been called; and there is
insufficient memory to service the multiple requests.
Except in the instance of (1) above any Denial Of Service is likely to
be transitory because as soon as the connection fails the memory is
subsequently freed again in the SSL_free() call. However there is an
increased risk during this period of application crashes due to the lack
of memory - which would then mean a more serious Denial of Service. Reported by Shi Lei (Gear Team, Qihoo 360 Inc.).
- Fixed in OpenSSL 1.1.0a (git commit) (Affected 1.1.0)
- CVE-2016-6307 (OpenSSL advisory) [Low severity] 21 September 2016:
- A TLS message includes 3 bytes for its length in the header for the message.
This would allow for messages up to 16Mb in length. Messages of this length are
excessive and OpenSSL includes a check to ensure that a peer is sending
reasonably sized messages in order to avoid too much memory being consumed to
service a connection. A flaw in the logic of version 1.1.0 means that memory for
the message is allocated too early, prior to the excessive message length
check. Due to way memory is allocated in OpenSSL this could mean an attacker
could force up to 21Mb to be allocated to service a connection. This could lead
to a Denial of Service through memory exhaustion. However, the excessive message
length check still takes place, and this would cause the connection to
immediately fail. Assuming that the application calls SSL_free() on the failed
conneciton in a timely manner then the 21Mb of allocated memory will then be
immediately freed again. Therefore the excessive memory allocation will be
transitory in nature. This then means that there is only a security impact if:
1) The application does not call SSL_free() in a timely manner in the
event that the connection fails
or
2) The application is working in a constrained environment where there
is very little free memory
or
3) The attacker initiates multiple connection attempts such that there
are multiple connections in a state where memory has been allocated for
the connection; SSL_free() has not yet been called; and there is
insufficient memory to service the multiple requests.
Except in the instance of (1) above any Denial Of Service is likely to
be transitory because as soon as the connection fails the memory is
subsequently freed again in the SSL_free() call. However there is an
increased risk during this period of application crashes due to the lack
of memory - which would then mean a more serious Denial of Service. Reported by Shi Lei (Gear Team, Qihoo 360 Inc.).
- Fixed in OpenSSL 1.1.0a (git commit) (Affected 1.1.0)
- CVE-2016-6306 (OpenSSL advisory) [Low severity] 21 September 2016:
- 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. Reported by Shi Lei (Gear Team, Qihoo 360 Inc.).
- Fixed in OpenSSL 1.0.2i (git commit) (Affected 1.0.2-1.0.2h)
- Fixed in OpenSSL 1.0.1u (git commit) (Affected 1.0.1-1.0.1t)
- CVE-2016-6303 (OpenSSL advisory) [Low severity] 24 August 2016:
- 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. Reported by Shi Lei (Gear Team, Qihoo 360 Inc.).
- Fixed in OpenSSL 1.0.2i (git commit) (Affected 1.0.2-1.0.2h)
- Fixed in OpenSSL 1.0.1u (git commit) (Affected 1.0.1-1.0.1t)
- CVE-2016-2183 (OpenSSL advisory) [Low severity] 24 August 2016:
- Because DES (and triple-DES) has only a 64-bit block size,
birthday attacks are a real concern. For example, with the ability to run
Javascript in a browser, it is possible to send enough traffic
to cause a collision, and then use that information to recover
something like a session Cookie.
Triple-DES, which shows up as “DES-CBC3” in an OpenSSL cipher
string, is still used on the Web, and major browsers are not yet
willing to completely disable it.
If you run a server, you should disable triple-DES. This is
generally a configuration issue. If you run an old server that
doesn’t support any better ciphers than DES or RC4, you should
upgrade.
For 1.0.2 and 1.0.1, we removed the triple-DES ciphers from the
“HIGH” keyword and put them into “MEDIUM.” Note that we did not
remove them from the “DEFAULT” keyword.
For the 1.1.0 release, we treat triple-DES just like we are
treating RC4. It is not compiled by default; you have to use
“enable-weak-ssl-ciphers” as a config option. Even when those
ciphers are compiled, triple-DES is only in the “MEDIUM”
keyword. In addition we also removed it from the “DEFAULT” keyword. Reported by Karthik Bhargavan and Gaetan Leurent from Inria.
- Fixed in OpenSSL 1.1.0 (Affected )
- Fixed in OpenSSL 1.0.2i (Affected 1.0.2-1.0.2h)
- CVE-2016-6302 (OpenSSL advisory) [Low severity] 23 August 2016:
- 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. Reported by Shi Lei (Gear Team, Qihoo 360 Inc.).
- Fixed in OpenSSL 1.0.2i (git commit) (Affected 1.0.2-1.0.2h)
- Fixed in OpenSSL 1.0.1u (git commit) (Affected 1.0.1-1.0.1t)
- CVE-2016-2179 (OpenSSL advisory) [Low severity] 22 August 2016:
- 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. Reported by Quan Luo.
- Fixed in OpenSSL 1.0.2i (git commit) (Affected 1.0.2-1.0.2h)
- Fixed in OpenSSL 1.0.1u (git commit) (Affected 1.0.1-1.0.1t)
- CVE-2016-2181 (OpenSSL advisory) [Low severity] 19 August 2016:
- 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. Reported by OCAP audit team.
- Fixed in OpenSSL 1.0.2i (git commit) (Affected 1.0.2-1.0.2h)
- Fixed in OpenSSL 1.0.1u (git commit) (Affected 1.0.1-1.0.1t)
- CVE-2016-2182 (OpenSSL advisory) [Low severity] 16 August 2016:
- 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. Reported by Shi Lei (Gear Team, Qihoo 360 Inc.).
- Fixed in OpenSSL 1.0.2i (Affected 1.0.2-1.0.2h)
- Fixed in OpenSSL 1.0.1u (Affected 1.0.1-1.0.1t)
- CVE-2016-2180 (OpenSSL advisory) [Low severity] 22 July 2016:
- 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. Reported by Shi Lei (Gear Team, Qihoo 360 Inc.).
- Fixed in OpenSSL 1.0.2i (Affected 1.0.2-1.0.2h)
- Fixed in OpenSSL 1.0.1u (Affected 1.0.1-1.0.1t)
- CVE-2016-2178 (OpenSSL advisory) [Low severity] 07 June 2016:
- 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. Reported by César Pereida (Aalto University), Billy Brumley (Tampere University of Technology), and Yuval Yarom (The University of Adelaide and NICTA).
- Fixed in OpenSSL 1.0.2i (Affected 1.0.2-1.0.2h)
- Fixed in OpenSSL 1.0.1u (Affected 1.0.1-1.0.1t)
- CVE-2016-2177 (OpenSSL advisory) [Low severity] 01 June 2016:
- 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. Reported by Guido Vranken.
- Fixed in OpenSSL 1.0.2i (Affected 1.0.2-1.0.2h)
- Fixed in OpenSSL 1.0.1u (Affected 1.0.1-1.0.1t)
- CVE-2016-2176 (OpenSSL advisory) [Low severity] 03 May 2016:
- 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. Reported by Guido Vranken.
- Fixed in OpenSSL 1.0.2h (Affected 1.0.2-1.0.2g)
- Fixed in OpenSSL 1.0.1t (Affected 1.0.1-1.0.1s)
- CVE-2016-2109 (OpenSSL advisory) [Low severity] 03 May 2016:
- 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. Reported by Brian Carpenter.
- Fixed in OpenSSL 1.0.2h (Affected 1.0.2-1.0.2g)
- Fixed in OpenSSL 1.0.1t (Affected 1.0.1-1.0.1s)
- CVE-2016-2108 (OpenSSL advisory) [High severity] 03 May 2016:
- 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. Reported by Huzaifa Sidhpurwala (Red Hat), Hanno Böck, David Benjamin (Google).
- Fixed in OpenSSL 1.0.2c (Affected 1.0.2-1.0.2b)
- Fixed in OpenSSL 1.0.1o (Affected 1.0.1-1.0.1n)
- CVE-2016-2107 (OpenSSL advisory) [High severity] 03 May 2016:
- 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. Reported by Juraj Somorovsky.
- Fixed in OpenSSL 1.0.2h (git commit) (Affected 1.0.2-1.0.2g)
- Fixed in OpenSSL 1.0.1t (Affected 1.0.1-1.0.1s)
- CVE-2016-2106 (OpenSSL advisory) [Low severity] 03 May 2016:
- 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. Reported by Guido Vranken.
- Fixed in OpenSSL 1.0.2h (Affected 1.0.2-1.0.2g)
- Fixed in OpenSSL 1.0.1t (Affected 1.0.1-1.0.1s)
- CVE-2016-2105 (OpenSSL advisory) [Low severity] 03 May 2016:
- 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). Reported by Guido Vranken.
- Fixed in OpenSSL 1.0.2h (Affected 1.0.2-1.0.2g)
- Fixed in OpenSSL 1.0.1t (Affected 1.0.1-1.0.1s)
- CVE-2016-0800 (OpenSSL advisory) [High severity] 01 March 2016:
- 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. Reported by Nimrod Aviram and Sebastian Schinzel.
- Fixed in OpenSSL 1.0.2g (Affected 1.0.2-1.0.2f)
- Fixed in OpenSSL 1.0.1s (Affected 1.0.1-1.0.1r)
- CVE-2016-0799 (OpenSSL advisory) [Low severity] 01 March 2016:
- 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. Reported by Guido Vranken.
- Fixed in OpenSSL 1.0.2g (Affected 1.0.2-1.0.2f)
- Fixed in OpenSSL 1.0.1s (Affected 1.0.1-1.0.1r)
- CVE-2016-0798 (OpenSSL advisory) [Low severity] 01 March 2016:
- 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. Reported by Emilia Käsper (OpenSSL).
- Fixed in OpenSSL 1.0.2g (Affected 1.0.2-1.0.2f)
- Fixed in OpenSSL 1.0.1s (Affected 1.0.1-1.0.1r)
- CVE-2016-0797 (OpenSSL advisory) [Low severity] 01 March 2016:
- 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. Reported by Guido Vranken.
- Fixed in OpenSSL 1.0.2g (Affected 1.0.2-1.0.2f)
- Fixed in OpenSSL 1.0.1s (Affected 1.0.1-1.0.1r)
- CVE-2016-0705 (OpenSSL advisory) [Low severity] 01 March 2016:
- 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. Reported by Adam Langley (Google/BoringSSL).
- Fixed in OpenSSL 1.0.2g (Affected 1.0.2-1.0.2f)
- Fixed in OpenSSL 1.0.1s (Affected 1.0.1-1.0.1r)
- CVE-2016-0704 (OpenSSL advisory) [Moderate severity] 01 March 2016:
- 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. Reported by David Adrian and J.Alex Halderman (University of Michigan).
- Fixed in OpenSSL 1.0.2a (Affected 1.0.2)
- Fixed in OpenSSL 1.0.1m (Affected 1.0.1-1.0.1l)
- Fixed in OpenSSL 1.0.0r (Affected 1.0.0-1.0.0q)
- Fixed in OpenSSL 0.9.8zf (Affected 0.9.8-0.9.8ze)
- CVE-2016-0703 (OpenSSL advisory) [High severity] 01 March 2016:
- 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. Reported by David Adrian and J.Alex Halderman (University of Michigan).
- Fixed in OpenSSL 1.0.2a (Affected 1.0.2)
- Fixed in OpenSSL 1.0.1m (Affected 1.0.1-1.0.1l)
- Fixed in OpenSSL 1.0.0r (Affected 1.0.0-1.0.0q)
- Fixed in OpenSSL 0.9.8zf (Affected 0.9.8-0.9.8ze)
- CVE-2016-0702 (OpenSSL advisory) [Low severity] 01 March 2016:
- 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. Reported by Yuval Yarom, The University of Adelaide and NICTA, Daniel Genkin, Technion and Tel Aviv University, and Nadia Heninger, University of Pennsylvania.
- Fixed in OpenSSL 1.0.2g (Affected 1.0.2-1.0.2f)
- Fixed in OpenSSL 1.0.1s (Affected 1.0.1-1.0.1r)
- CVE-2016-0701 (OpenSSL advisory) [High severity] 28 January 2016:
- Historically OpenSSL usually only ever generated DH parameters based on "safe"
primes. More recently (in version 1.0.2) support was provided for generating
X9.42 style parameter files such as those required for RFC 5114 support. The
primes used in such files may not be "safe". Where an application is using DH
configured with parameters based on primes that are not "safe" then an attacker
could use this fact to find a peer's private DH exponent. This attack requires
that the attacker complete multiple handshakes in which the peer uses the same
private DH exponent. For example this could be used to discover a TLS server's
private DH exponent if it's reusing the private DH exponent or it's using a
static DH ciphersuite.
OpenSSL provides the option SSL_OP_SINGLE_DH_USE for ephemeral DH (DHE) in TLS.
It is not on by default. If the option is not set then the server reuses the
same private DH exponent for the life of the server process and would be
vulnerable to this attack. It is believed that many popular applications do set
this option and would therefore not be at risk.
OpenSSL before 1.0.2f will reuse the key if:
- SSL_CTX_set_tmp_dh()/SSL_set_tmp_dh() is used and SSL_OP_SINGLE_DH_USE is not
set.
- SSL_CTX_set_tmp_dh_callback()/SSL_set_tmp_dh_callback() is used, and both the
parameters and the key are set and SSL_OP_SINGLE_DH_USE is not used. This is
an undocumted feature and parameter files don't contain the key.
- Static DH ciphersuites are used. The key is part of the certificate and
so it will always reuse it. This is only supported in 1.0.2.
It will not reuse the key for DHE ciphers suites if:
- SSL_OP_SINGLE_DH_USE is set
- SSL_CTX_set_tmp_dh_callback()/SSL_set_tmp_dh_callback() is used and the
callback does not provide the key, only the parameters. The callback is
almost always used like this.
Non-safe primes are generated by OpenSSL when using:
- genpkey with the dh_rfc5114 option. This will write an X9.42 style file
including the prime-order subgroup size "q". This is supported since the 1.0.2
version. Older versions can't read files generated in this way.
- dhparam with the -dsaparam option. This has always been documented as
requiring the single use.
The fix for this issue adds an additional check where a "q" parameter is
available (as is the case in X9.42 based parameters). This detects the
only known attack, and is the only possible defense for static DH ciphersuites.
This could have some performance impact.
Additionally the SSL_OP_SINGLE_DH_USE option has been switched on by default
and cannot be disabled. This could have some performance impact. Reported by Antonio Sanso (Adobe).
- Fixed in OpenSSL 1.0.2f (Affected 1.0.2-1.0.2e)
- CVE-2015-3197 (OpenSSL advisory) [Low severity] 28 January 2016:
- 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. Reported by Nimrod Aviram and Sebastian Schinzel.
- Fixed in OpenSSL 1.0.2f (Affected 1.0.2-1.0.2e)
- Fixed in OpenSSL 1.0.1r (Affected 1.0.1-1.0.1q)
2015
- CVE-2015-3196 (OpenSSL advisory) [Low severity] 03 December 2015:
- 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. Reported by Stephen Henson (OpenSSL).
- Fixed in OpenSSL 1.0.2d (Affected 1.0.2-1.0.2c)
- Fixed in OpenSSL 1.0.1p (Affected 1.0.1-1.0.1o)
- Fixed in OpenSSL 1.0.0t (Affected 1.0.0-1.0.0g,1.0.0h-1.0.0s)
- CVE-2015-3195 (OpenSSL advisory) [Moderate severity] 03 December 2015:
- 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. Reported by Adam Langley (Google/BoringSSL) using libFuzzer.
- Fixed in OpenSSL 1.0.2e (Affected 1.0.2-1.0.2d)
- Fixed in OpenSSL 1.0.1q (Affected 1.0.1-1.0.1p)
- Fixed in OpenSSL 1.0.0t (Affected 1.0.0-1.0.0g,1.0.0h-1.0.0s)
- Fixed in OpenSSL 0.9.8zh (Affected 0.9.8-0.9.8zg)
- CVE-2015-3194 (OpenSSL advisory) [Moderate severity] 03 December 2015:
- 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. Reported by Loïc Jonas Etienne (Qnective AG).
- Fixed in OpenSSL 1.0.2e (Affected 1.0.2-1.0.2d)
- Fixed in OpenSSL 1.0.1q (Affected 1.0.1-1.0.1p)
- CVE-2015-3193 (OpenSSL advisory) [Moderate severity] 03 December 2015:
- There is a carry propagating bug in the x86_64 Montgomery squaring procedure. No
EC algorithms are affected. Analysis suggests that attacks against RSA and DSA
as a result of this defect would be very difficult to perform and are not
believed likely. Attacks against DH are considered just feasible (although very
difficult) because most of the work necessary to deduce information
about a private key may be performed offline. The amount of resources
required for such an attack would be very significant and likely only
accessible to a limited number of attackers. An attacker would
additionally need online access to an unpatched system using the target
private key in a scenario with persistent DH parameters and a private
key that is shared between multiple clients. For example this can occur by
default in OpenSSL DHE based SSL/TLS ciphersuites. Reported by Hanno Böck.
- Fixed in OpenSSL 1.0.2e (Affected 1.0.2-1.0.2d)
- CVE-2015-1794 (OpenSSL advisory) [Low severity] 11 August 2015:
- If a client receives a ServerKeyExchange for an anonymous DH ciphersuite with
the value of p set to 0 then a seg fault can occur leading to a possible denial
of service attack. Reported by Guy Leaver (Cisco).
- Fixed in OpenSSL 1.0.2e (Affected 1.0.2-1.0.2d)
- CVE-2015-1793 (OpenSSL advisory) [High severity] 09 July 2015:
- 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. Reported by Adam Langley and David Benjamin (Google/BoringSSL).
- Fixed in OpenSSL 1.0.2d (Affected 1.0.2b-1.0.2c)
- Fixed in OpenSSL 1.0.1p (Affected 1.0.1n-1.0.1o)
- CVE-2015-1792 (OpenSSL advisory) [Moderate severity] 11 June 2015:
- 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. Reported by Johannes Bauer.
- Fixed in OpenSSL 1.0.2b (Affected 1.0.2-1.0.2a)
- Fixed in OpenSSL 1.0.1n (Affected 1.0.1-1.0.1m)
- Fixed in OpenSSL 1.0.0s (Affected 1.0.0-1.0.0r)
- Fixed in OpenSSL 0.9.8zg (Affected 0.9.8-0.9.8zf)
- CVE-2015-1790 (OpenSSL advisory) [Moderate severity] 11 June 2015:
- 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. Reported by Michal Zalewski (Google).
- Fixed in OpenSSL 1.0.2b (Affected 1.0.2-1.0.2a)
- Fixed in OpenSSL 1.0.1n (Affected 1.0.1-1.0.1m)
- Fixed in OpenSSL 1.0.0s (Affected 1.0.0-1.0.0r)
- Fixed in OpenSSL 0.9.8zg (Affected 0.9.8-0.9.8zf)
- CVE-2015-1789 (OpenSSL advisory) [Moderate severity] 11 June 2015:
- 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. Reported by Robert Święcki (Google Security Team). Reported by Hanno Böck.
- Fixed in OpenSSL 1.0.2b (Affected 1.0.2-1.0.2a)
- Fixed in OpenSSL 1.0.1n (Affected 1.0.1-1.0.1m)
- Fixed in OpenSSL 1.0.0s (Affected 1.0.0-1.0.0r)
- Fixed in OpenSSL 0.9.8zg (Affected 0.9.8-0.9.8zf)
- CVE-2015-1788 (OpenSSL advisory) [Moderate severity] 11 June 2015:
- 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. Reported by Joseph Birr-Pixton.
- Fixed in OpenSSL 1.0.2b (Affected 1.0.2-1.0.2a)
- Fixed in OpenSSL 1.0.1n (Affected 1.0.1-1.0.1m)
- Fixed in OpenSSL 1.0.0e (Affected 1.0.0-1.0.0d)
- Fixed in OpenSSL 0.9.8s (Affected 0.9.8-0.9.8r)
- CVE-2014-8176 (OpenSSL advisory) [Moderate severity] 11 June 2015:
- 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. Reported by Praveen Kariyanahalli, and subsequently by Ivan Fratric and Felix Groebert (Google).
- Fixed in OpenSSL 1.0.1h (Affected 1.0.1-1.0.1g)
- Fixed in OpenSSL 1.0.0m (Affected 1.0.0-1.0.0l)
- Fixed in OpenSSL 0.9.8za (Affected 0.9.8-0.9.8y)
- CVE-2015-1791 (OpenSSL advisory) [Low severity] 02 June 2015:
- 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. Reported by Emilia Käsper (OpenSSL).
- Fixed in OpenSSL 1.0.2b (Affected 1.0.2-1.0.2a)
- Fixed in OpenSSL 1.0.1n (Affected 1.0.1-1.0.1m)
- Fixed in OpenSSL 1.0.0s (Affected 1.0.0-1.0.0r)
- Fixed in OpenSSL 0.9.8zg (Affected 0.9.8-0.9.8zf)
- CVE-2015-1787 (OpenSSL advisory) [Moderate severity] 19 March 2015:
- Empty CKE with client auth and DHE.
If client auth is used then a server can seg fault in the event of a DHE
ciphersuite being selected and a zero length ClientKeyExchange message being
sent by the client. This could be exploited in a DoS attack. Reported by Matt Caswell (OpenSSL development team).
- Fixed in OpenSSL 1.0.2a (Affected 1.0.2)
- CVE-2015-0293 (OpenSSL advisory) [Moderate severity] 19 March 2015:
- 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. Reported by Sean Burford (Google) and Emilia Käsper (OpenSSL development team).
- Fixed in OpenSSL 1.0.2a (Affected 1.0.2)
- Fixed in OpenSSL 1.0.1m (Affected 1.0.1-1.0.1l)
- Fixed in OpenSSL 1.0.0r (Affected 1.0.0-1.0.0q)
- Fixed in OpenSSL 0.9.8zf (Affected 0.9.8-0.9.8ze)
- CVE-2015-0292 (OpenSSL advisory) [Moderate severity] 19 March 2015:
- 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. Reported by Robert Dugal, also David Ramos, also Huzaifa Sidhpurwala (Red Hat).
- Fixed in OpenSSL 1.0.1h (Affected 1.0.1-1.0.1g)
- Fixed in OpenSSL 1.0.0m (Affected 1.0.0-1.0.0l)
- Fixed in OpenSSL 0.9.8za (Affected 0.9.8-0.9.8y)
- CVE-2015-0291 (OpenSSL advisory) [High severity] 19 March 2015:
- ClientHello sigalgs DoS. If a client connects to an OpenSSL 1.0.2 server and renegotiates with an
invalid signature algorithms extension a NULL pointer dereference will occur.
This can be exploited in a DoS attack against the server. Reported by David Ramos (Stanford University).
- Fixed in OpenSSL 1.0.2a (Affected 1.0.2)
- CVE-2015-0290 (OpenSSL advisory) [Moderate severity] 19 March 2015:
- Multiblock corrupted pointer.
OpenSSL 1.0.2 introduced the "multiblock" performance improvement. This feature
only applies on 64 bit x86 architecture platforms that support AES NI
instructions. A defect in the implementation of "multiblock" can cause OpenSSL's
internal write buffer to become incorrectly set to NULL when using non-blocking
IO. Typically, when the user application is using a socket BIO for writing, this
will only result in a failed connection. However if some other BIO is used then
it is likely that a segmentation fault will be triggered, thus enabling a
potential DoS attack. Reported by Daniel Danner and Rainer Mueller.
- Fixed in OpenSSL 1.0.2a (Affected 1.0.2)
- CVE-2015-0289 (OpenSSL advisory) [Moderate severity] 19 March 2015:
- 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. Reported by Michal Zalewski (Google).
- Fixed in OpenSSL 1.0.2a (Affected 1.0.2)
- Fixed in OpenSSL 1.0.1m (Affected 1.0.1-1.0.1l)
- Fixed in OpenSSL 1.0.0r (Affected 1.0.0-1.0.0q)
- Fixed in OpenSSL 0.9.8zf (Affected 0.9.8-0.9.8ze)
- CVE-2015-0287 (OpenSSL advisory) [Moderate severity] 19 March 2015:
- 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. Reported by Emilia Käsper (OpenSSL development team).
- Fixed in OpenSSL 1.0.2a (Affected 1.0.2)
- Fixed in OpenSSL 1.0.1m (Affected 1.0.1-1.0.1l)
- Fixed in OpenSSL 1.0.0r (Affected 1.0.0-1.0.0q)
- Fixed in OpenSSL 0.9.8zf (Affected 0.9.8-0.9.8ze)
- CVE-2015-0286 (OpenSSL advisory) [Moderate severity] 19 March 2015:
- 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. Reported by Stephen Henson (OpenSSL development team).
- Fixed in OpenSSL 1.0.2a (Affected 1.0.2)
- Fixed in OpenSSL 1.0.1m (Affected 1.0.1-1.0.1l)
- Fixed in OpenSSL 1.0.0r (Affected 1.0.0-1.0.0q)
- Fixed in OpenSSL 0.9.8zf (Affected 0.9.8zd-0.9.8ze)
- CVE-2015-0209 (OpenSSL advisory) [Low severity] 19 March 2015:
- 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. Reported by The BoringSSL project.
- Fixed in OpenSSL 1.0.2a (Affected 1.0.2)
- Fixed in OpenSSL 1.0.1m (Affected 1.0.1-1.0.1l)
- Fixed in OpenSSL 1.0.0r (Affected 1.0.0-1.0.0q)
- Fixed in OpenSSL 0.9.8zf (Affected 0.9.8-0.9.8ze)
- CVE-2015-0208 (OpenSSL advisory) [Moderate severity] 19 March 2015:
- Segmentation fault for invalid PSS parameters.
The signature verification routines will crash with a NULL pointer
dereference if presented with an ASN.1 signature using the RSA PSS
algorithm and invalid parameters. 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. Reported by Brian Carpenter.
- Fixed in OpenSSL 1.0.2a (Affected 1.0.2)
- CVE-2015-0207 (OpenSSL advisory) [Moderate severity] 19 March 2015:
- Segmentation fault in DTLSv1_listen.
A defect in the implementation of DTLSv1_listen means that state is preserved in
the SSL object from one invocation to the next that can lead to a segmentation
fault. Errors processing the initial ClientHello can trigger this scenario. An
example of such an error could be that a DTLS1.0 only client is attempting to
connect to a DTLS1.2 only server. Reported by Per Allansson.
- Fixed in OpenSSL 1.0.2a (Affected 1.0.2)
- CVE-2015-0285 (OpenSSL advisory) [Low severity] 10 March 2015:
- Under certain conditions an OpenSSL 1.0.2 client can complete a handshake with
an unseeded PRNG. If the handshake succeeds then the client random that has been used will have
been generated from a PRNG with insufficient entropy and therefore the output
may be predictable. Reported by Matt Caswell (OpenSSL development team).
- Fixed in OpenSSL 1.0.2a (Affected 1.0.2)
- CVE-2015-0288 (OpenSSL advisory) [Low severity] 02 March 2015:
- 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. Reported by Brian Carpenter.
- Fixed in OpenSSL 1.0.2a (Affected 1.0.2)
- Fixed in OpenSSL 1.0.1m (Affected 1.0.1-1.0.1l)
- Fixed in OpenSSL 1.0.0r (Affected 1.0.0-1.0.0q)
- Fixed in OpenSSL 0.9.8zf (Affected 0.9.8-0.9.8ze)
- CVE-2015-0206 (OpenSSL advisory) [Moderate severity] 08 January 2015:
- 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. Reported by Chris Mueller.
- Fixed in OpenSSL 1.0.1k (Affected 1.0.1-1.0.1j)
- Fixed in OpenSSL 1.0.0p (Affected 1.0.0-1.0.0o)
- CVE-2015-0205 (OpenSSL advisory) [Low severity] 08 January 2015:
- 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. Reported by Karthikeyan Bhargavan of the PROSECCO team at INRIA.
- Fixed in OpenSSL 1.0.1k (Affected 1.0.1-1.0.1j)
- Fixed in OpenSSL 1.0.0p (Affected 1.0.0-1.0.0o)
- CVE-2014-3570 (OpenSSL advisory) [Low severity] 08 January 2015:
- 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. Reported by Pieter Wuille (Blockstream).
- Fixed in OpenSSL 1.0.1k (Affected 1.0.1-1.0.1j)
- Fixed in OpenSSL 1.0.0p (Affected 1.0.0-1.0.0o)
- Fixed in OpenSSL 0.9.8zd (Affected 0.9.8-0.9.8zc)
- CVE-2015-0204 (OpenSSL advisory) [Low severity] 06 January 2015:
- 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. Reported by Karthikeyan Bhargavan of the PROSECCO team at INRIA.
- Fixed in OpenSSL 1.0.1k (Affected 1.0.1-1.0.1j)
- Fixed in OpenSSL 1.0.0p (Affected 1.0.0-1.0.0o)
- Fixed in OpenSSL 0.9.8zd (Affected 0.9.8-0.9.8zc)
- CVE-2014-8275 (OpenSSL advisory) [Low severity] 05 January 2015:
- 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. Reported by Antti Karjalainen and Tuomo Untinen from the Codenomicon CROSS program/Konrad Kraszewski from Google.
- Fixed in OpenSSL 1.0.1k (Affected 1.0.1-1.0.1j)
- Fixed in OpenSSL 1.0.0p (Affected 1.0.0-1.0.0o)
- Fixed in OpenSSL 0.9.8zd (Affected 0.9.8-0.9.8zc)
- CVE-2014-3572 (OpenSSL advisory) [Low severity] 05 January 2015:
- 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. Reported by Karthikeyan Bhargavan of the PROSECCO team at INRIA.
- Fixed in OpenSSL 1.0.1k (Affected 1.0.1-1.0.1j)
- Fixed in OpenSSL 1.0.0p (Affected 1.0.0-1.0.0o)
- Fixed in OpenSSL 0.9.8zd (Affected 0.9.8-0.9.8zc)
- CVE-2014-3571 (OpenSSL advisory) [Moderate severity] 05 January 2015:
- 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. Reported by Markus Stenberg of Cisco Systems, Inc.
- Fixed in OpenSSL 1.0.1k (Affected 1.0.1-1.0.1j)
- Fixed in OpenSSL 1.0.0p (Affected 1.0.0-1.0.0o)
- Fixed in OpenSSL 0.9.8zd (Affected 0.9.8-0.9.8zc)
2014
- CVE-2014-3569 (OpenSSL advisory) [Low severity] 21 October 2014:
- 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. Reported by Frank Schmirler.
- Fixed in OpenSSL 1.0.1k (Affected 1.0.1j)
- Fixed in OpenSSL 1.0.0p (Affected 1.0.0o)
- Fixed in OpenSSL 0.9.8zd (Affected 0.9.8zc)
- CVE-2014-3568 (OpenSSL advisory) [Low severity] 15 October 2014:
- 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. Reported by Akamai Technologies.
- Fixed in OpenSSL 1.0.1j (Affected 1.0.1-1.0.1i)
- Fixed in OpenSSL 1.0.0o (Affected 1.0.0-1.0.0n)
- Fixed in OpenSSL 0.9.8zc (Affected 0.9.8-0.9.8zb)
- CVE-2014-3567 (OpenSSL advisory) [Moderate severity] 15 October 2014:
- 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.
- Fixed in OpenSSL 1.0.1j (Affected 1.0.1-1.0.1i)
- Fixed in OpenSSL 1.0.0o (Affected 1.0.0-1.0.0n)
- Fixed in OpenSSL 0.9.8zc (Affected 0.9.8g-0.9.8zb)
- CVE-2014-3513 (OpenSSL advisory) [High severity] 15 October 2014:
- 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. Reported by LibreSSL project.
- Fixed in OpenSSL 1.0.1j (Affected 1.0.1-1.0.1i)
- 15 October 2014:
- OpenSSL has added support for TLS_FALLBACK_SCSV to allow applications
to block the ability for a MITM attacker to force a protocol
downgrade.
Some client applications (such as browsers) will reconnect using a
downgraded protocol to work around interoperability bugs in older
servers. This could be exploited by an active man-in-the-middle to
downgrade connections to SSL 3.0 even if both sides of the connection
support higher protocols. SSL 3.0 contains a number of weaknesses
including POODLE (CVE-2014-3566).
See also
https://tools.ietf.org/html/draft-ietf-tls-downgrade-scsv-00 and
https://www.openssl.org/~bodo/ssl-poodle.pdf
- Fixed in OpenSSL 1.0.1j (Affected 1.0.1-1.0.1i)
- Fixed in OpenSSL 1.0.0o (Affected 1.0.0-1.0.0n)
- Fixed in OpenSSL 0.9.8zc (Affected 0.9.8-0.9.8zb)
- CVE-2014-5139 (OpenSSL advisory) 06 August 2014:
- 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. Reported by Joonas Kuorilehto and Riku Hietamäki (Codenomicon).
- Fixed in OpenSSL 1.0.1i (Affected 1.0.1-1.0.1h)
- CVE-2014-3512 (OpenSSL advisory) 06 August 2014:
- 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. Reported by Sean Devlin and Watson Ladd (Cryptography Services, NCC Group).
- Fixed in OpenSSL 1.0.1i (Affected 1.0.1-1.0.1h)
- CVE-2014-3511 (OpenSSL advisory) 06 August 2014:
- 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. Reported by David Benjamin and Adam Langley (Google).
- Fixed in OpenSSL 1.0.1i (Affected 1.0.1-1.0.1h)
- CVE-2014-3510 (OpenSSL advisory) 06 August 2014:
- 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. Reported by Felix Gröbert (Google).
- Fixed in OpenSSL 1.0.1i (Affected 1.0.1-1.0.1h)
- Fixed in OpenSSL 1.0.0n (Affected 1.0.0-1.0.0m)
- Fixed in OpenSSL 0.9.8zb (Affected 0.9.8-0.9.8za)
- CVE-2014-3509 (OpenSSL advisory) 06 August 2014:
- 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. Reported by Gabor Tyukasz (LogMeIn Inc).
- Fixed in OpenSSL 1.0.1i (Affected 1.0.1-1.0.1h)
- Fixed in OpenSSL 1.0.0n (Affected 1.0.0-1.0.0m)
- CVE-2014-3508 (OpenSSL advisory) 06 August 2014:
- 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. Reported by Ivan Fratric (Google).
- Fixed in OpenSSL 1.0.1i (Affected 1.0.1-1.0.1h)
- Fixed in OpenSSL 1.0.0n (Affected 1.0.0-1.0.0m)
- Fixed in OpenSSL 0.9.8zb (Affected 0.9.8-0.9.8za)
- CVE-2014-3507 (OpenSSL advisory) 06 August 2014:
- 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. Reported by Adam Langley (Google).
- Fixed in OpenSSL 1.0.1i (Affected 1.0.1-1.0.1h)
- Fixed in OpenSSL 1.0.0n (Affected 1.0.0a-1.0.0m)
- Fixed in OpenSSL 0.9.8zb (Affected 0.9.8o-0.9.8za)
- CVE-2014-3506 (OpenSSL advisory) 06 August 2014:
- 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. Reported by Adam Langley (Google).
- Fixed in OpenSSL 1.0.1i (Affected 1.0.1-1.0.1h)
- Fixed in OpenSSL 1.0.0n (Affected 1.0.0-1.0.0m)
- Fixed in OpenSSL 0.9.8zb (Affected 0.9.8-0.9.8za)
- CVE-2014-3505 (OpenSSL advisory) 06 August 2014:
- 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. Reported by Adam Langley and Wan-Teh Chang (Google).
- Fixed in OpenSSL 1.0.1i (Affected 1.0.1-1.0.1h)
- Fixed in OpenSSL 1.0.0n (Affected 1.0.0-1.0.0m)
- Fixed in OpenSSL 0.9.8zb (Affected 0.9.8m-0.9.8za)
- CVE-2014-0224 (OpenSSL advisory) 05 June 2014:
- 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. Reported by KIKUCHI Masashi (Lepidum Co. Ltd.).
- Fixed in OpenSSL 1.0.1h (Affected 1.0.1-1.0.1g)
- Fixed in OpenSSL 1.0.0m (Affected 1.0.0-1.0.0l)
- Fixed in OpenSSL 0.9.8za (Affected 0.9.8-0.9.8y)
- CVE-2014-0221 (OpenSSL advisory) 05 June 2014:
- 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. Reported by Imre Rad (Search-Lab Ltd.).
- Fixed in OpenSSL 1.0.1h (Affected 1.0.1-1.0.1g)
- Fixed in OpenSSL 1.0.0m (Affected 1.0.0-1.0.0l)
- Fixed in OpenSSL 0.9.8za (Affected 0.9.8-0.9.8y)
- CVE-2014-0195 (OpenSSL advisory) 05 June 2014:
- 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. Reported by Jüri Aedla.
- Fixed in OpenSSL 1.0.1h (Affected 1.0.1-1.0.1g)
- Fixed in OpenSSL 1.0.0m (Affected 1.0.0-1.0.0l)
- Fixed in OpenSSL 0.9.8za (Affected 0.9.8o-0.9.8y)
- CVE-2014-3470 (OpenSSL advisory) 30 May 2014:
- OpenSSL TLS clients enabling anonymous ECDH ciphersuites are subject to a
denial of service attack. Reported by Felix Gröbert and Ivan Fratrić (Google).
- Fixed in OpenSSL 1.0.1h (Affected 1.0.1-1.0.1g)
- Fixed in OpenSSL 1.0.0m (Affected 1.0.0-1.0.0l)
- Fixed in OpenSSL 0.9.8za (Affected 0.9.8-0.9.8y)
- CVE-2014-0198 (OpenSSL advisory) 21 April 2014:
- 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.
- Fixed in OpenSSL 1.0.1h (Affected 1.0.1-1.0.1g)
- Fixed in OpenSSL 1.0.0m (Affected 1.0.0-1.0.0l)
- CVE-2010-5298 (OpenSSL advisory) 08 April 2014:
- 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.
- Fixed in OpenSSL 1.0.1h (Affected 1.0.1-1.0.1g)
- Fixed in OpenSSL 1.0.0m (Affected 1.0.0-1.0.0l)
- CVE-2014-0160 (OpenSSL advisory) 07 April 2014:
- 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. Reported by Neel Mehta.
- Fixed in OpenSSL 1.0.1g (Affected 1.0.1-1.0.1f)
- CVE-2014-0076 (OpenSSL advisory) 14 February 2014:
- Fix for the attack described in the paper "Recovering OpenSSL
ECDSA Nonces Using the FLUSH+RELOAD Cache Side-channel Attack" Reported by Yuval Yarom and Naomi Benger.
- Fixed in OpenSSL 1.0.1g (git commit) (Affected 1.0.1-1.0.1f)
- Fixed in OpenSSL 1.0.0m (git commit) (Affected 1.0.0-1.0.0l)
- Fixed in OpenSSL 0.9.8za (Affected 0.9.8-0.9.8y)
- CVE-2013-4353 06 January 2014:
- 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. Reported by Anton Johansson.
- Fixed in OpenSSL 1.0.1f (git commit) (Affected 1.0.1-1.0.1e)
2013
- CVE-2013-6449 14 December 2013:
- 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. Reported by Ron Barber.
- Fixed in OpenSSL 1.0.1f (git commit) (Affected 1.0.1-1.0.1e)
- CVE-2013-6450 13 December 2013:
- 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. Reported by Dmitry Sobinov.
- Fixed in OpenSSL 1.0.1f (git commit) (Affected 1.0.1-1.0.1e)
- Fixed in OpenSSL 1.0.0l (Affected 1.0.0-1.0.0k)
- CVE-2013-0166 (OpenSSL advisory) 05 February 2013:
- A flaw in the OpenSSL handling of OCSP response verification can be exploited in
a denial of service attack. Reported by Stephen Henson.
- Fixed in OpenSSL 1.0.1d (Affected 1.0.1-1.0.1c)
- Fixed in OpenSSL 1.0.0k (Affected 1.0.0-1.0.0j)
- Fixed in OpenSSL 0.9.8y (Affected 0.9.8-0.9.8x)
- CVE-2012-2686 (OpenSSL advisory) 05 February 2013:
- 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. Reported by Adam Langley and Wolfgang Ettlinger.
- Fixed in OpenSSL 1.0.1d (Affected 1.0.1-1.0.1c)
- CVE-2013-0169 (OpenSSL advisory) 04 February 2013:
- 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. Reported by Nadhem J. AlFardan and Kenneth G. Paterson of the Information Security Group Royal Holloway, University of London.
- Fixed in OpenSSL 1.0.1d (Affected 1.0.1-1.0.1c)
- Fixed in OpenSSL 1.0.0k (Affected 1.0.0-1.0.0j)
- Fixed in OpenSSL 0.9.8y (Affected 0.9.8-0.9.8x)
2012
- CVE-2012-2333 (OpenSSL advisory) 10 May 2012:
- 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. Reported by Codenomicon.
- Fixed in OpenSSL 1.0.1c (Affected 1.0.1-1.0.1b)
- Fixed in OpenSSL 1.0.0j (Affected 1.0.0-1.0.0i)
- Fixed in OpenSSL 0.9.8x (Affected 0.9.8-0.9.8w)
- CVE-2012-2131 (OpenSSL advisory) 24 April 2012:
- It was discovered that the fix for CVE-2012-2110 released on 19 Apr
2012 was not sufficient to correct the issue for OpenSSL 0.9.8. This
issue only affects OpenSSL 0.9.8v. OpenSSL 1.0.1a and 1.0.0i already
contain a patch sufficient to correct CVE-2012-2110. Reported by Red Hat.
- Fixed in OpenSSL 0.9.8w (Affected 0.9.8v)
- CVE-2012-2110 (OpenSSL advisory) 19 April 2012:
- 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. Reported by Tavis Ormandy.
- Fixed in OpenSSL 1.0.1a (Affected 1.0.1)
- Fixed in OpenSSL 1.0.0i (Affected 1.0.0-1.0.0g)
- Fixed in OpenSSL 0.9.8v (Affected 0.9.8-0.9.8u)
- CVE-2012-0884 (OpenSSL advisory) 12 March 2012:
- A weakness in the OpenSSL CMS and PKCS #7 code can be exploited
using Bleichenbacher's attack on PKCS #1 v1.5 RSA padding
also known as the million message attack (MMA).
Only users of CMS, PKCS #7, or S/MIME decryption operations are affected,
SSL/TLS applications are not affected by this issue. Reported by Ivan Nestlerode.
- Fixed in OpenSSL 1.0.0h (Affected 1.0.0-1.0.0g)
- Fixed in OpenSSL 0.9.8u (Affected 0.9.8-0.9.8t)
- CVE-2012-0050 (OpenSSL advisory) 04 January 2012:
- A flaw in the fix to CVE-2011-4108 can be exploited in a denial of
service attack. Only DTLS applications are affected. Reported by Antonio Martin.
- Fixed in OpenSSL 1.0.0g (Affected 1.0.0f)
- Fixed in OpenSSL 0.9.8t (Affected 0.9.8s)
- CVE-2012-0027 (OpenSSL advisory) 04 January 2012:
- A malicious TLS client can send an invalid set of GOST parameters
which will cause the server to crash due to lack of error checking.
This could be used in a denial-of-service attack.
Only users of the OpenSSL GOST ENGINE are affected by this bug. Reported by Andrey Kulikov.
- Fixed in OpenSSL 1.0.0f (Affected 1.0.0-1.0.0e)
- CVE-2011-4619 (OpenSSL advisory) 04 January 2012:
- Support for handshake restarts for server gated cryptograpy (SGC) can
be used in a denial-of-service attack. Reported by George Kadianakis.
- Fixed in OpenSSL 1.0.0f (Affected 1.0.0-1.0.0e)
- Fixed in OpenSSL 0.9.8s (Affected 0.9.8-0.9.8r)
- CVE-2011-4577 (OpenSSL advisory) 04 January 2012:
- RFC 3779 data can be included in certificates, and if it is malformed,
may trigger an assertion failure. This could be used in a
denial-of-service attack. Builds of OpenSSL are only vulnerable if configured with
"enable-rfc3779", which is not a default. Reported by Andrew Chi.
- Fixed in OpenSSL 1.0.0f (Affected 1.0.0-1.0.0e)
- Fixed in OpenSSL 0.9.8s (Affected 0.9.8-0.9.8r)
- CVE-2011-4576 (OpenSSL advisory) 04 January 2012:
- OpenSSL failed to clear the bytes used as
block cipher padding in SSL 3.0 records which could leak
the contents of memory in some circumstances. Reported by Adam Langley.
- Fixed in OpenSSL 1.0.0f (Affected 1.0.0-1.0.0e)
- Fixed in OpenSSL 0.9.8s (Affected 0.9.8-0.9.8r)
- CVE-2011-4109 (OpenSSL advisory) 04 January 2012:
- If X509_V_FLAG_POLICY_CHECK is set in OpenSSL 0.9.8, then a policy
check failure can lead to a double-free. The bug does not occur
unless this flag is set. Users of OpenSSL 1.0.0 are not affected Reported by Ben Laurie.
- Fixed in OpenSSL 0.9.8s (Affected 0.9.8-0.9.8r)
- CVE-2011-4108 (OpenSSL advisory) 04 January 2012:
- OpenSSL was susceptable an extension of the
Vaudenay padding oracle attack on CBC mode encryption which enables an
efficient plaintext recovery attack against the OpenSSL implementation
of DTLS by exploiting timing differences arising during
decryption processing. Reported by Nadhem Alfardan and Kenny Paterson.
- Fixed in OpenSSL 1.0.0f (Affected 1.0.0-1.0.0e)
- Fixed in OpenSSL 0.9.8s (Affected 0.9.8-0.9.8r)
2011
- CVE-2011-3210 (OpenSSL advisory) 06 September 2011:
- OpenSSL server code for ephemeral ECDH ciphersuites is not
thread-safe, and furthermore can crash if a client violates the
protocol by sending handshake messages in incorrect order. Only
server-side applications that specifically support ephemeral ECDH
ciphersuites are affected, and only if ephemeral ECDH ciphersuites are
enabled in the configuration. Reported by Adam Langley.
- Fixed in OpenSSL 1.0.0e (Affected 1.0.0-1.0.0d)
- CVE-2011-3207 (OpenSSL advisory) 06 September 2011:
- Under certain circumstances OpenSSL's internal certificate
verification routines can incorrectly accept a CRL whose nextUpdate
field is in the past. Applications are only affected by the CRL
checking vulnerability if they enable OpenSSL's internal CRL checking
which is off by default. Applications which use their own custom CRL
checking (such as Apache) are not affected. Reported by Kaspar Brand.
- Fixed in OpenSSL 1.0.0e (Affected 1.0.0-1.0.0d)
- CVE-2011-0014 (OpenSSL advisory) 08 February 2011:
- A buffer over-read flaw was discovered in the way OpenSSL parsed the
Certificate Status Request TLS extensions in ClientHello TLS handshake
messages. A remote attacker could possibly use this flaw to crash an SSL
server using the affected OpenSSL functionality. Reported by Neel Mehta.
- Fixed in OpenSSL 1.0.0d (Affected 1.0.0-1.0.0c)
- Fixed in OpenSSL 0.9.8r (Affected 0.9.8h-0.9.8q)
2010
- CVE-2010-4252 (OpenSSL advisory) 02 December 2010:
- An error in OpenSSL's experimental J-PAKE implementation which could
lead to successful validation by someone with no knowledge of the
shared secret. The OpenSSL Team still consider the implementation of
J-PAKE to be experimental and is not compiled by default. Reported by Sebastian Martini.
- Fixed in OpenSSL 1.0.0c (Affected 1.0.0-1.0.0b)
- CVE-2010-4180 (OpenSSL advisory) 02 December 2010:
- A flaw in the OpenSSL SSL/TLS server code where an old bug workaround
allows malicious clients to modify the stored session cache
ciphersuite. In some cases the ciphersuite can be downgraded to a
weaker one on subsequent connections. This issue only affects OpenSSL
based SSL/TLS server if it uses OpenSSL's internal caching mechanisms
and the SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG flag (many
applications enable this by using the SSL_OP_ALL option). Reported by Martin Rex.
- Fixed in OpenSSL 1.0.0c (Affected 1.0.0-1.0.0b)
- Fixed in OpenSSL 0.9.8q (Affected 0.9.8-0.9.8p)
- CVE-2010-3864 (OpenSSL advisory) 16 November 2010:
- A flaw in the OpenSSL TLS server extension code parsing which on
affected servers can be exploited in a buffer overrun attack. Any
OpenSSL based TLS server is vulnerable if it is multi-threaded and
uses OpenSSL's internal caching mechanism. Servers that are
multi-process and/or disable internal session caching are NOT
affected. Reported by Rob Hulswit.
- Fixed in OpenSSL 1.0.0b (Affected 1.0.0-1.0.0a)
- Fixed in OpenSSL 0.9.8p (Affected 0.9.8-0.9.8o)
- CVE-2010-1633 (OpenSSL advisory) 01 June 2010:
- An invalid Return value check in pkey_rsa_verifyrecover was
discovered. When verification recovery fails for RSA keys an
uninitialised buffer with an undefined length is returned instead of
an error code. This could lead to an information leak. Reported by Peter-Michael Hager.
- Fixed in OpenSSL 1.0.0a (Affected 1.0.0)
- CVE-2010-0742 (OpenSSL advisory) 01 June 2010:
- A flaw in the handling of CMS structures containing OriginatorInfo was found which
could lead to a write to invalid memory address or double free. CMS support is
disabled by default in OpenSSL 0.9.8 versions. Reported by Ronald Moesbergen.
- Fixed in OpenSSL 1.0.0a (Affected 1.0.0)
- Fixed in OpenSSL 0.9.8o (Affected 0.9.8h-0.9.8n)
- CVE-2010-0740 (OpenSSL advisory) 24 March 2010:
- In TLS connections, certain incorrectly formatted records can cause an
OpenSSL client or server to crash due to a read attempt at NULL. Reported by Bodo Moeller and Adam Langley (Google).
- Fixed in OpenSSL 0.9.8n (Affected 0.9.8f-0.9.8m)
- CVE-2009-3245 23 February 2010:
- It was discovered that OpenSSL did not always check the return value of the
bn_wexpand() function. An attacker able to trigger a memory allocation failure
in that function could cause an application using the OpenSSL library to crash
or, possibly, execute arbitrary code Reported by Martin Olsson, Neel Mehta.
- Fixed in OpenSSL 0.9.8m (git commit) (Affected 0.9.8-0.9.8l)
- CVE-2010-0433 19 January 2010:
- A missing return value check flaw was discovered in OpenSSL, that could
possibly cause OpenSSL to call a Kerberos library function with invalid
arguments, resulting in a NULL pointer dereference crash in the MIT
Kerberos library. In certain configurations, a remote attacker could use
this flaw to crash a TLS/SSL server using OpenSSL by requesting Kerberos
cipher suites during the TLS handshake Reported by Todd Rinaldo, Tomas Hoger (Red Hat).
- Fixed in OpenSSL 0.9.8n (git commit) (Affected 0.9.8-0.9.8m)
- CVE-2009-4355 13 January 2010:
- A memory leak in the zlib_stateful_finish function in crypto/comp/c_zlib.c
allows remote attackers to cause a denial of service
via vectors that trigger incorrect calls to the CRYPTO_cleanup_all_ex_data
function. Reported by Michael K Johnson and Andy Grimm (rPath).
- Fixed in OpenSSL 0.9.8m (git commit) (Affected 0.9.8-0.9.8l)
2009
- CVE-2009-3555 (OpenSSL advisory) 05 November 2009:
- Implement RFC5746 to address vulnerabilities in SSL/TLS renegotiation.
- Fixed in OpenSSL 0.9.8m (Affected 0.9.8-0.9.8l)
- CVE-2009-1386 02 June 2009:
- Fix a NULL pointer dereference if a DTLS server recieved
ChangeCipherSpec as first record.
A remote attacker could use this flaw to cause a DTLS server to crash Reported by Alex Lam.
- Fixed in OpenSSL 0.9.8i (git commit) (Affected 0.9.8-0.9.8h)
- CVE-2009-1379 (OpenSSL advisory) 12 May 2009:
- Use-after-free vulnerability in the dtls1_retrieve_buffered_fragment
function could cause a client accessing a malicious DTLS server to
crash. Reported by Daniel Mentz, Robin Seggelmann.
- Fixed in OpenSSL 0.9.8m (git commit) (Affected 0.9.8-0.9.8l)
- CVE-2009-1378 (OpenSSL advisory) 12 May 2009:
- Fix a denial of service flaw in the DTLS implementation.
In dtls1_process_out_of_seq_message() the check if the current message
is already buffered was missing. For every new message was memory
allocated, allowing an attacker to perform an denial of service attack
against a DTLS server by sending out of seq handshake messages until there is no memory
left. Reported by Daniel Mentz, Robin Seggelmann.
- Fixed in OpenSSL 0.9.8m (git commit) (Affected 0.9.8-0.9.8l)
- CVE-2009-1377 (OpenSSL advisory) 12 May 2009:
- Fix a denial of service flaw in the DTLS implementation.
Records are buffered if they arrive with a future epoch to be
processed after finishing the corresponding handshake. There is
currently no limitation to this buffer allowing an attacker to perform
a DOS attack to a DTLS server by sending records with future epochs until there is no
memory left. Reported by Daniel Mentz, Robin Seggelmann.
- Fixed in OpenSSL 0.9.8m (git commit) (Affected 0.9.8-0.9.8l)
- CVE-2009-0789 (OpenSSL advisory) 25 March 2009:
- When a malformed ASN1 structure is received it's contents are freed up and
zeroed and an error condition returned. On a small number of platforms where
sizeof(long) < sizeof(void *) (for example WIN64) this can cause an invalid
memory access later resulting in a crash when some invalid structures are
read, for example RSA public keys. Reported by Paolo Ganci.
- Fixed in OpenSSL 0.9.8k (Affected 0.9.8-0.9.8j)
- CVE-2009-0591 (OpenSSL advisory) 25 March 2009:
- The function CMS_verify() does not correctly handle an error condition
involving malformed signed attributes. This will cause an invalid set
of signed attributes to appear valid and content digests will not be
checked. Reported by Ivan Nestlerode, IBM.
- Fixed in OpenSSL 0.9.8k (Affected 0.9.8h-0.9.8j)
- CVE-2009-0590 (OpenSSL advisory) 25 March 2009:
- The function ASN1_STRING_print_ex() when used to print a BMPString or
UniversalString will crash with an invalid memory access if the
encoded length of the string is illegal. Any OpenSSL application
which prints out the contents of a certificate could be affected by
this bug, including SSL servers, clients and S/MIME software.
- Fixed in OpenSSL 0.9.8k (Affected 0.9.8-0.9.8j)
- CVE-2009-1387 (OpenSSL advisory) 05 February 2009:
- Fix denial of service flaw due in the DTLS implementation. A
remote attacker could use this flaw to cause a DTLS server to crash. Reported by Robin Seggelmann.
- Fixed in OpenSSL 0.9.8m (Affected 0.9.8-0.9.8l)
- CVE-2008-5077 (OpenSSL advisory) 07 January 2009:
- The Google Security Team discovered several functions inside OpenSSL
incorrectly checked the result after calling the EVP_VerifyFinal
function, allowing a malformed signature to be treated as a good
signature rather than as an error. This issue affected the signature
checks on DSA and ECDSA keys used with SSL/TLS. One way to exploit
this flaw would be for a remote attacker who is in control of a
malicious server or who can use a 'man in the middle' attack to
present a malformed SSL/TLS signature from a certificate chain to a
vulnerable client, bypassing validation. Reported by google.
- Fixed in OpenSSL 0.9.8j (Affected 0.9.8-0.9.8i)
2008
- CVE-2008-1672 (OpenSSL advisory) 28 May 2008:
- Testing using the Codenomicon TLS test suite discovered a flaw if the
'Server Key exchange message' is omitted from a TLS handshake in
OpenSSL 0.9.8f and OpenSSL 0.9.8g. If a client connects to a
malicious server with particular cipher suites, the server could cause
the client to crash. Reported by codenomicon.
- Fixed in OpenSSL 0.9.8h (Affected 0.9.8f-0.9.8g)
- CVE-2008-0891 (OpenSSL advisory) 28 May 2008:
- Testing using the Codenomicon TLS test suite discovered a flaw in the
handling of server name extension data in OpenSSL 0.9.8f and OpenSSL
0.9.8g. If OpenSSL has been compiled using the non-default TLS server
name extensions, a remote attacker could send a carefully crafted
packet to a server application using OpenSSL and cause it to crash. Reported by codenomicon.
- Fixed in OpenSSL 0.9.8h (Affected 0.9.8f-0.9.8g)
2007
- CVE-2007-5502 (OpenSSL advisory) 29 November 2007:
- The PRNG implementation for the OpenSSL FIPS Object Module 1.1.1 does
not perform auto-seeding during the FIPS self-test, which generates
random data that is more predictable than expected and makes it easier
for attackers to bypass protection mechanisms that rely on the
randomness. Reported by Geoff Lowe.
- Fixed in OpenSSL fips-1.1.2 (Affected fips-1.1.1)
- CVE-2007-5135 (OpenSSL advisory) 12 October 2007:
- A flaw was found in the SSL_get_shared_ciphers() utility function. An
attacker could send a list of ciphers to an application that used this
function and overrun a buffer with a single byte. Few
applications make use of this vulnerable function and generally it is used
only when applications are compiled for debugging. Reported by Moritz Jodeit.
- Fixed in OpenSSL 0.9.8f (Affected 0.9.8-0.9.8e)
- CVE-2007-4995 (OpenSSL advisory) 12 October 2007:
- A flaw in DTLS support. An attacker
could create a malicious client or server that could trigger a heap
overflow. This is possibly exploitable to run arbitrary code, but it has
not been verified. Reported by Andy Polyakov.
- Fixed in OpenSSL 0.9.8f (Affected 0.9.8-0.9.8e)
2006
- CVE-2006-4343 (OpenSSL advisory) 28 September 2006:
- A flaw in the SSLv2 client code was discovered. When a client
application used OpenSSL to create an SSLv2 connection to a malicious
server, that server could cause the client to crash. Reported by openssl.
- Fixed in OpenSSL 0.9.8d (Affected 0.9.8-0.9.8c)
- Fixed in OpenSSL 0.9.7l (Affected 0.9.7-0.9.7k)
- CVE-2006-3738 (OpenSSL advisory) 28 September 2006:
- A buffer overflow was discovered in the SSL_get_shared_ciphers()
utility function. An attacker could send a list of ciphers to an
application that uses this function and overrun a buffer. Reported by openssl.
- Fixed in OpenSSL 0.9.8d (Affected 0.9.8-0.9.8c)
- Fixed in OpenSSL 0.9.7l (Affected 0.9.7-0.9.7k)
- CVE-2006-2940 (OpenSSL advisory) 28 September 2006:
- Certain types of public key can take disproportionate amounts of
time to process. This could be used by an attacker in a denial of
service attack. Reported by openssl.
- Fixed in OpenSSL 0.9.8d (Affected 0.9.8-0.9.8c)
- Fixed in OpenSSL 0.9.7l (Affected 0.9.7-0.9.7k)
- CVE-2006-2937 (OpenSSL advisory) 28 September 2006:
- During the parsing of certain invalid ASN.1 structures an error
condition is mishandled. This can result in an infinite loop which
consumes system memory Reported by openssl.
- Fixed in OpenSSL 0.9.8d (Affected 0.9.8-0.9.8c)
- Fixed in OpenSSL 0.9.7l (Affected 0.9.7-0.9.7k)
- CVE-2006-4339 (OpenSSL advisory) 05 September 2006:
- Daniel Bleichenbacher discovered an attack on PKCS #1 v1.5
signatures where under certain circumstances it may be possible
for an attacker to forge a PKCS #1 v1.5 signature that would be incorrectly
verified by OpenSSL. Reported by openssl.
- Fixed in OpenSSL 0.9.8c (Affected 0.9.8-0.9.8b)
- Fixed in OpenSSL 0.9.7k (Affected 0.9.7-0.9.7j)
2005
- CVE-2005-2969 (OpenSSL advisory) 11 October 2005:
- A deprecated option, SSL_OP_MISE_SSLV2_RSA_PADDING, could allow an
attacker acting as a "man in the middle" to force a connection to
downgrade to SSL 2.0 even if both parties support better protocols. Reported by researcher.
- Fixed in OpenSSL 0.9.8a (Affected 0.9.8)
- Fixed in OpenSSL 0.9.7h (Affected 0.9.7-0.9.7g)
2004
- CVE-2004-0975 30 September 2004:
- The der_chop script created temporary files insecurely which could
allow local users to overwrite files via a symlink attack on temporary
files. Note that it is quite unlikely that a user would be using the
redundant der_chop script, and this script was removed from the OpenSSL
distribution.
- Fixed in OpenSSL 0.9.7f (git commit) (Affected 0.9.7-0.9.7e)
- Fixed in OpenSSL 0.9.6-cvs (Affected 0.9.6-0.9.6m)
- CVE-2004-0112 (OpenSSL advisory) 17 March 2004:
- A flaw in SSL/TLS handshaking code when using Kerberos ciphersuites.
A remote attacker could perform a carefully crafted SSL/TLS handshake
against a server configured to use Kerberos ciphersuites in such a way
as to cause OpenSSL to crash. Most applications have no ability to
use Kerberos ciphersuites and will therefore be unaffected. Reported by OpenSSL group (Stephen Henson).
- Fixed in OpenSSL 0.9.7d (Affected 0.9.7a-0.9.7c)
- CVE-2004-0081 (OpenSSL advisory) 17 March 2004:
- The Codenomicon TLS Test Tool found that some unknown message types
were handled incorrectly, allowing a remote attacker to cause a denial
of service (infinite loop). Reported by OpenSSL group.
- Fixed in OpenSSL 0.9.6d (Affected 0.9.6-0.9.6c)
- CVE-2004-0079 (OpenSSL advisory) 17 March 2004:
- The Codenomicon TLS Test Tool uncovered a null-pointer assignment in the
do_change_cipher_spec() function. A remote attacker could perform a
carefully crafted SSL/TLS handshake against a server that used the
OpenSSL library in such a way as to cause a crash. Reported by OpenSSL group.
- Fixed in OpenSSL 0.9.7d (Affected 0.9.7-0.9.7c)
- Fixed in OpenSSL 0.9.6m (Affected 0.9.6c-0.9.6l)
2003
- CVE-2003-0851 (OpenSSL advisory) 04 November 2003:
- A flaw in OpenSSL 0.9.6k (only) would cause certain ASN.1 sequences to
trigger a large recursion. On platforms such as Windows this large
recursion cannot be handled correctly and so the bug causes OpenSSL to
crash. A remote attacker could exploit this flaw if they can send
arbitrary ASN.1 sequences which would cause OpenSSL to crash. This
could be performed for example by sending a client certificate to a
SSL/TLS enabled server which is configured to accept them. Reported by Novell.
- Fixed in OpenSSL 0.9.6l (Affected 0.9.6k)
- CVE-2003-0545 (OpenSSL advisory) 30 September 2003:
- Certain ASN.1 encodings that were rejected as invalid by the parser could
trigger a bug in the deallocation of the corresponding data structure,
corrupting the stack, leading to a crash. Reported by NISCC.
- Fixed in OpenSSL 0.9.7c (Affected 0.9.7-0.9.7b)
- CVE-2003-0544 (OpenSSL advisory) 30 September 2003:
- Incorrect tracking of the number of characters in certain
ASN.1 inputs could allow remote attackers to cause a denial of
service (crash) by sending an SSL client certificate that causes OpenSSL to
read past the end of a buffer when the long form is used. Reported by NISCC.
- Fixed in OpenSSL 0.9.7c (Affected 0.9.7-0.9.7b)
- Fixed in OpenSSL 0.9.6k (Affected 0.9.6-0.9.6j)
- CVE-2003-0543 (OpenSSL advisory) 30 September 2003:
- An integer overflow could allow remote attackers to cause a denial of
service (crash) via an SSL client certificate with certain ASN.1 tag
values. Reported by NISCC.
- Fixed in OpenSSL 0.9.7c (Affected 0.9.7-0.9.7b)
- Fixed in OpenSSL 0.9.6k (Affected 0.9.6-0.9.6j)
- CVE-2003-0131 (OpenSSL advisory) 19 March 2003:
- The SSL and TLS components allowed remote attackers to perform an
unauthorized RSA private key operation via a modified Bleichenbacher
attack that uses a large number of SSL or TLS connections using PKCS #1
v1.5 padding that caused OpenSSL to leak information regarding the
relationship between ciphertext and the associated plaintext, aka the
"Klima-Pokorny-Rosa attack"
- Fixed in OpenSSL 0.9.7b (Affected 0.9.7-0.9.7a)
- Fixed in OpenSSL 0.9.6j (Affected 0.9.6-0.9.6i)
- CVE-2003-0147 (OpenSSL advisory) 14 March 2003:
- RSA blinding was not enabled by default, which could allow local and
remote attackers to obtain a server's private key by determining
factors using timing differences on (1) the number of extra reductions
during Montgomery reduction, and (2) the use of different integer
multiplication algorithms ("Karatsuba" and normal).
- Fixed in OpenSSL 0.9.7b (Affected 0.9.7-0.9.7a)
- Fixed in OpenSSL 0.9.6j (Affected 0.9.6-0.9.6i)
- CVE-2003-0078 (OpenSSL advisory) 19 February 2003:
- sl3_get_record in s3_pkt.c did not perform a MAC computation if an
incorrect block cipher padding was used, causing an information leak
(timing discrepancy) that may make it easier to launch cryptographic
attacks that rely on distinguishing between padding and MAC
verification errors, possibly leading to extraction of the original
plaintext, aka the "Vaudenay timing attack."
- Fixed in OpenSSL 0.9.7a (Affected 0.9.7)
- Fixed in OpenSSL 0.9.6i (Affected 0.9.6-0.9.6h)
2002
- CVE-2002-1568 08 August 2002:
- The use of assertions when detecting buffer overflow attacks
allowed remote attackers to cause a denial of service (crash) by
sending certain messages to cause
OpenSSL to abort from a failed assertion, as demonstrated using SSLv2
CLIENT_MASTER_KEY messages, which were not properly handled in
s2_srvr.c.
- Fixed in OpenSSL 0.9.6f (git commit) (Affected 0.9.6e)
- CVE-2002-0659 (OpenSSL advisory) 30 July 2002:
- A flaw in the ASN1 library allowed remote attackers to cause a denial of
service by sending invalid encodings.
- Fixed in OpenSSL 0.9.6e (Affected 0.9.6a-0.9.6d)
- CVE-2002-0657 (OpenSSL advisory) 30 July 2002:
- A buffer overflow when Kerberos is enabled allowed attackers
to execute arbitrary code by sending a long master key. Note that this
flaw did not affect any released version of 0.9.6 or 0.9.7 Reported by OpenSSL Group (A.L. Digital).
- Fixed in OpenSSL 0.9.7 (Affected 0.9.7-beta3)
- CVE-2002-0656 (OpenSSL advisory) 30 July 2002:
- A buffer overflow allowed remote attackers to execute
arbitrary code by sending a large client master key in SSL2 or a
large session ID in SSL3. Reported by OpenSSL Group (A.L. Digital).
- Fixed in OpenSSL 0.9.6e (Affected 0.9.6-0.9.6d)
- CVE-2002-0655 (OpenSSL advisory) 30 July 2002:
- Inproper handling of ASCII representations of integers on
64 bit platforms allowed remote attackers to cause a denial of
service or possibly execute arbitrary code. Reported by OpenSSL Group (A.L. Digital).
- Fixed in OpenSSL 0.9.6e (Affected 0.9.6-0.9.6d)
Not Vulnerabilities
- CVE-2010-0928: This was not treated as a security issue as it is outside of the OpenSSL threat model
- CVE-2007-6755: Only OpenSSL FIPS module shipped Dual EC DRBG, and it was not affected: https://marc.info/?l=openssl-announce&m=138747119822324
- CVE-2002-20001: We do not consider this to be a vulnerability in OpenSSL: https://github.com/openssl/openssl/issues/17374