<feed xmlns='http://www.w3.org/2005/Atom'>
<title>openssl, branch OpenSSL_1_0_2t</title>
<subtitle>TLS/SSL and crypto library.</subtitle>
<id>http://git.bktus.com/gpgfrontend/openssl/atom?h=OpenSSL_1_0_2t</id>
<link rel='self' href='http://git.bktus.com/gpgfrontend/openssl/atom?h=OpenSSL_1_0_2t'/>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/openssl/'/>
<updated>2019-09-10T13:36:07Z</updated>
<entry>
<title>Prepare for 1.0.2t release</title>
<updated>2019-09-10T13:36:07Z</updated>
<author>
<name>Matt Caswell</name>
<email>matt@openssl.org</email>
</author>
<published>2019-09-10T13:36:07Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/openssl/commit/?id=cd7c7fc20b9feeb900632389401f514ac6b82f16'/>
<id>urn:sha1:cd7c7fc20b9feeb900632389401f514ac6b82f16</id>
<content type='text'>
Reviewed-by: Richard Levitte &lt;levitte@openssl.org&gt;
</content>
</entry>
<entry>
<title>make update</title>
<updated>2019-09-10T13:36:07Z</updated>
<author>
<name>Matt Caswell</name>
<email>matt@openssl.org</email>
</author>
<published>2019-09-10T13:36:07Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/openssl/commit/?id=c98ce139b5f7956bbab33b7e182ea4bcee1192d8'/>
<id>urn:sha1:c98ce139b5f7956bbab33b7e182ea4bcee1192d8</id>
<content type='text'>
Reviewed-by: Richard Levitte &lt;levitte@openssl.org&gt;
</content>
</entry>
<entry>
<title>Fix the NEWS file</title>
<updated>2019-09-10T13:34:22Z</updated>
<author>
<name>Matt Caswell</name>
<email>matt@openssl.org</email>
</author>
<published>2019-09-10T13:32:15Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/openssl/commit/?id=b5decf674be30a469e3863bd49bfedfbb32dfd0b'/>
<id>urn:sha1:b5decf674be30a469e3863bd49bfedfbb32dfd0b</id>
<content type='text'>
The NEWS file was missing an entry for 1.0.2s. This confuses the release
scripts - so add an empty entry.

Reviewed-by: Richard Levitte &lt;levitte@openssl.org&gt;
(Merged from https://github.com/openssl/openssl/pull/9852)
</content>
</entry>
<entry>
<title>Update copyright year</title>
<updated>2019-09-10T13:01:06Z</updated>
<author>
<name>Matt Caswell</name>
<email>matt@openssl.org</email>
</author>
<published>2019-09-10T13:01:06Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/openssl/commit/?id=32ef0494231971bb5be4ea9e5ad680a8d373a1d2'/>
<id>urn:sha1:32ef0494231971bb5be4ea9e5ad680a8d373a1d2</id>
<content type='text'>
Reviewed-by: Richard Levitte &lt;levitte@openssl.org&gt;
(Merged from https://github.com/openssl/openssl/pull/9849)
</content>
</entry>
<entry>
<title>Remove duplicate CHANGES entry</title>
<updated>2019-09-10T11:09:49Z</updated>
<author>
<name>Matt Caswell</name>
<email>matt@openssl.org</email>
</author>
<published>2019-09-10T10:58:18Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/openssl/commit/?id=26080054209056b899fe677ee8393972a924cde5'/>
<id>urn:sha1:26080054209056b899fe677ee8393972a924cde5</id>
<content type='text'>
Reviewed-by: Richard Levitte &lt;levitte@openssl.org&gt;
(Merged from https://github.com/openssl/openssl/pull/9846)
</content>
</entry>
<entry>
<title>Fix a padding oracle in PKCS7_dataDecode and CMS_decrypt_set1_pkey</title>
<updated>2019-09-10T10:45:41Z</updated>
<author>
<name>Bernd Edlinger</name>
<email>bernd.edlinger@hotmail.de</email>
</author>
<published>2019-08-31T22:16:28Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/openssl/commit/?id=e21f8cf78a125cd3c8c0d1a1a6c8bb0b901f893f'/>
<id>urn:sha1:e21f8cf78a125cd3c8c0d1a1a6c8bb0b901f893f</id>
<content type='text'>
An attack is simple, if the first CMS_recipientInfo is valid but the
second CMS_recipientInfo is chosen ciphertext. If the second
recipientInfo decodes to PKCS #1 v1.5 form plaintext, the correct
encryption key will be replaced by garbage, and the message cannot be
decoded, but if the RSA decryption fails, the correct encryption key is
used and the recipient will not notice the attack.

As a work around for this potential attack the length of the decrypted
key must be equal to the cipher default key length, in case the
certifiate is not given and all recipientInfo are tried out.

The old behaviour can be re-enabled in the CMS code by setting the
CMS_DEBUG_DECRYPT flag.

Reviewed-by: Matt Caswell &lt;matt@openssl.org&gt;
(Merged from https://github.com/openssl/openssl/pull/9777)

(cherry picked from commit 5840ed0cd1e6487d247efbc1a04136a41d7b3a37)
</content>
</entry>
<entry>
<title>Update CHANGES and NEWS for the new release</title>
<updated>2019-09-10T09:55:08Z</updated>
<author>
<name>Matt Caswell</name>
<email>matt@openssl.org</email>
</author>
<published>2019-09-10T09:26:07Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/openssl/commit/?id=8bf7d77f33263c81b8e293347edc9a6e43f24d0e'/>
<id>urn:sha1:8bf7d77f33263c81b8e293347edc9a6e43f24d0e</id>
<content type='text'>
Reviewed-by: Richard Levitte &lt;levitte@openssl.org&gt;
(Merged from https://github.com/openssl/openssl/pull/9843)
</content>
</entry>
<entry>
<title>[ec] Match built-in curves on EC_GROUP_new_from_ecparameters</title>
<updated>2019-09-09T15:57:57Z</updated>
<author>
<name>Nicola Tuveri</name>
<email>nic.tuv@gmail.com</email>
</author>
<published>2019-09-07T15:05:31Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/openssl/commit/?id=66fd724daa89996bb775ab8911479c11143b44df'/>
<id>urn:sha1:66fd724daa89996bb775ab8911479c11143b44df</id>
<content type='text'>
Description
-----------

Upon `EC_GROUP_new_from_ecparameters()` check if the parameters match any
of the built-in curves. If that is the case, return a new
`EC_GROUP_new_by_curve_name()` object instead of the explicit parameters
`EC_GROUP`.

This affects all users of `EC_GROUP_new_from_ecparameters()`:
- direct calls to `EC_GROUP_new_from_ecparameters()`
- direct calls to `EC_GROUP_new_from_ecpkparameters()` with an explicit
  parameters argument
- ASN.1 parsing of explicit parameters keys (as it eventually
  ends up calling `EC_GROUP_new_from_ecpkparameters()`)

A parsed explicit parameter key will still be marked with the
`OPENSSL_EC_EXPLICIT_CURVE` ASN.1 flag on load, so, unless
programmatically forced otherwise, if the key is eventually serialized
the output will still be encoded with explicit parameters, even if
internally it is treated as a named curve `EC_GROUP`.

Before this change, creating any `EC_GROUP` object using
`EC_GROUP_new_from_ecparameters()`, yielded an object associated with
the default generic `EC_METHOD`, but this was never guaranteed in the
documentation.
After this commit, users of the library that intentionally want to
create an `EC_GROUP` object using a specific `EC_METHOD` can still
explicitly call `EC_GROUP_new(foo_method)` and then manually set the
curve parameters using `EC_GROUP_set_*()`.

Motivation
----------

This has obvious performance benefits for the built-in curves with
specialized `EC_METHOD`s and subtle but important security benefits:
- the specialized methods have better security hardening than the
  generic implementations
- optional fields in the parameter encoding, like the `cofactor`, cannot
  be leveraged by an attacker to force execution of the less secure
  code-paths for single point scalar multiplication
- in general, this leads to reducing the attack surface

Check the manuscript at https://arxiv.org/abs/1909.01785 for an in depth
analysis of the issues related to this commit.

It should be noted that `libssl` does not allow to negotiate explicit
parameters (as per RFC 8422), so it is not directly affected by the
consequences of using explicit parameters that this commit fixes.
On the other hand, we detected external applications and users in the
wild that use explicit parameters by default (and sometimes using 0 as
the cofactor value, which is technically not a valid value per the
specification, but is tolerated by parsers for wider compatibility given
that the field is optional).
These external users of `libcrypto` are exposed to these vulnerabilities
and their security will benefit from this commit.

Related commits
---------------

While this commit is beneficial for users using built-in curves and
explicit parameters encoding for serialized keys, commit
b783beeadf6b80bc431e6f3230b5d5585c87ef87 (and its equivalents for the
1.0.2, 1.1.0 and 1.1.1 stable branches) fixes the consequences of the
invalid cofactor values more in general also for other curves
(CVE-2019-1547).

The following list covers commits in `master` that are related to the
vulnerabilities presented in the manuscript motivating this commit:

- d2baf88c43 [crypto/rsa] Set the constant-time flag in multi-prime RSA too
- 311e903d84 [crypto/asn1] Fix multiple SCA vulnerabilities during RSA key validation.
- b783beeadf [crypto/ec] for ECC parameters with NULL or zero cofactor, compute it
- 724339ff44 Fix SCA vulnerability when using PVK and MSBLOB key formats

Note that the PRs that contributed the listed commits also include other
commits providing related testing and documentation, in addition to
links to PRs and commits backporting the fixes to the 1.0.2, 1.1.0 and
1.1.1 branches.

This commit includes a partial backport of
https://github.com/openssl/openssl/pull/8555
(commit 8402cd5f75f8c2f60d8bd39775b24b03dd8b3b38)
for which the main author is Shane Lontis.

Responsible Disclosure
----------------------

This and the other issues presented in https://arxiv.org/abs/1909.01785
were reported by Cesar Pereida García, Sohaib ul Hassan, Nicola Tuveri,
Iaroslav Gridin, Alejandro Cabrera Aldaya and Billy Bob Brumley from the
NISEC group at Tampere University, FINLAND.

The OpenSSL Security Team evaluated the security risk for this
vulnerability as low, and encouraged to propose fixes using public Pull
Requests.

_______________________________________________________________________________

Co-authored-by: Shane Lontis &lt;shane.lontis@oracle.com&gt;

(Backport from https://github.com/openssl/openssl/pull/9808)

Reviewed-by: Matt Caswell &lt;matt@openssl.org&gt;
(Merged from https://github.com/openssl/openssl/pull/9811)
</content>
</entry>
<entry>
<title>[crypto/ec] for ECC parameters with NULL or zero cofactor, compute it</title>
<updated>2019-09-09T07:34:44Z</updated>
<author>
<name>Billy Brumley</name>
<email>bbrumley@gmail.com</email>
</author>
<published>2019-09-07T07:50:58Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/openssl/commit/?id=21c856b75d81eff61aa63b4f036bb64a85bf6d46'/>
<id>urn:sha1:21c856b75d81eff61aa63b4f036bb64a85bf6d46</id>
<content type='text'>
The cofactor argument to EC_GROUP_set_generator is optional, and SCA
mitigations for ECC currently use it. So the library currently falls
back to very old SCA-vulnerable code if the cofactor is not present.

This PR allows EC_GROUP_set_generator to compute the cofactor for all
curves of cryptographic interest. Steering scalar multiplication to more
SCA-robust code.

This issue affects persisted private keys in explicit parameter form,
where the (optional) cofactor field is zero or absent.

It also affects curves not built-in to the library, but constructed
programatically with explicit parameters, then calling
EC_GROUP_set_generator with a nonsensical value (NULL, zero).

The very old scalar multiplication code is known to be vulnerable to
local uarch attacks, outside of the OpenSSL threat model. New results
suggest the code path is also vulnerable to traditional wall clock
timing attacks.

CVE-2019-1547

Reviewed-by: Nicola Tuveri &lt;nic.tuv@gmail.com&gt;
Reviewed-by: Matt Caswell &lt;matt@openssl.org&gt;
(Merged from https://github.com/openssl/openssl/pull/9799)
</content>
</entry>
<entry>
<title>[crypto/rsa] Fix multiple SCA vulnerabilities during RSA key validation.</title>
<updated>2019-09-09T07:16:47Z</updated>
<author>
<name>Cesar Pereida Garcia</name>
<email>cesar.pereidagarcia@tut.fi</email>
</author>
<published>2019-09-05T14:47:40Z</published>
<link rel='alternate' type='text/html' href='http://git.bktus.com/gpgfrontend/openssl/commit/?id=adaebd81a01e2926a3106feec0476db7c8d7b362'/>
<id>urn:sha1:adaebd81a01e2926a3106feec0476db7c8d7b362</id>
<content type='text'>
This commit addresses multiple side-channel vulnerabilities present during RSA key validation.
Private key parameters are re-computed using variable-time functions.

This issue was discovered and reported by the NISEC group at TAU Finland.

Reviewed-by: Bernd Edlinger &lt;bernd.edlinger@hotmail.de&gt;
Reviewed-by: Matt Caswell &lt;matt@openssl.org&gt;
(Merged from https://github.com/openssl/openssl/pull/9785)
</content>
</entry>
</feed>
