|
7 | 7 | https://github.com/openssl/openssl/commits/ and pick the appropriate |
8 | 8 | release branch. |
9 | 9 |
|
| 10 | + Changes between 1.1.1c and 1.1.1d [10 Sep 2019] |
| 11 | + |
| 12 | + *) Fixed a fork protection issue. OpenSSL 1.1.1 introduced a rewritten random |
| 13 | + number generator (RNG). This was intended to include protection in the |
| 14 | + event of a fork() system call in order to ensure that the parent and child |
| 15 | + processes did not share the same RNG state. However this protection was not |
| 16 | + being used in the default case. |
| 17 | + |
| 18 | + A partial mitigation for this issue is that the output from a high |
| 19 | + precision timer is mixed into the RNG state so the likelihood of a parent |
| 20 | + and child process sharing state is significantly reduced. |
| 21 | + |
| 22 | + If an application already calls OPENSSL_init_crypto() explicitly using |
| 23 | + OPENSSL_INIT_ATFORK then this problem does not occur at all. |
| 24 | + (CVE-2019-1549) |
| 25 | + [Matthias St. Pierre] |
| 26 | + |
| 27 | + *) For built-in EC curves, ensure an EC_GROUP built from the curve name is |
| 28 | + used even when parsing explicit parameters, when loading a serialized key |
| 29 | + or calling `EC_GROUP_new_from_ecpkparameters()`/ |
| 30 | + `EC_GROUP_new_from_ecparameters()`. |
| 31 | + This prevents bypass of security hardening and performance gains, |
| 32 | + especially for curves with specialized EC_METHODs. |
| 33 | + By default, if a key encoded with explicit parameters is loaded and later |
| 34 | + serialized, the output is still encoded with explicit parameters, even if |
| 35 | + internally a "named" EC_GROUP is used for computation. |
| 36 | + [Nicola Tuveri] |
| 37 | + |
| 38 | + *) Compute ECC cofactors if not provided during EC_GROUP construction. Before |
| 39 | + this change, EC_GROUP_set_generator would accept order and/or cofactor as |
| 40 | + NULL. After this change, only the cofactor parameter can be NULL. It also |
| 41 | + does some minimal sanity checks on the passed order. |
| 42 | + (CVE-2019-1547) |
| 43 | + [Billy Bob Brumley] |
| 44 | + |
| 45 | + *) Fixed a padding oracle in PKCS7_dataDecode and CMS_decrypt_set1_pkey. |
| 46 | + An attack is simple, if the first CMS_recipientInfo is valid but the |
| 47 | + second CMS_recipientInfo is chosen ciphertext. If the second |
| 48 | + recipientInfo decodes to PKCS #1 v1.5 form plaintext, the correct |
| 49 | + encryption key will be replaced by garbage, and the message cannot be |
| 50 | + decoded, but if the RSA decryption fails, the correct encryption key is |
| 51 | + used and the recipient will not notice the attack. |
| 52 | + As a work around for this potential attack the length of the decrypted |
| 53 | + key must be equal to the cipher default key length, in case the |
| 54 | + certifiate is not given and all recipientInfo are tried out. |
| 55 | + The old behaviour can be re-enabled in the CMS code by setting the |
| 56 | + CMS_DEBUG_DECRYPT flag. |
| 57 | + (CVE-2019-1563) |
| 58 | + [Bernd Edlinger] |
| 59 | + |
| 60 | + *) Early start up entropy quality from the DEVRANDOM seed source has been |
| 61 | + improved for older Linux systems. The RAND subsystem will wait for |
| 62 | + /dev/random to be producing output before seeding from /dev/urandom. |
| 63 | + The seeded state is stored for future library initialisations using |
| 64 | + a system global shared memory segment. The shared memory identifier |
| 65 | + can be configured by defining OPENSSL_RAND_SEED_DEVRANDOM_SHM_ID to |
| 66 | + the desired value. The default identifier is 114. |
| 67 | + [Paul Dale] |
| 68 | + |
| 69 | + *) Correct the extended master secret constant on EBCDIC systems. Without this |
| 70 | + fix TLS connections between an EBCDIC system and a non-EBCDIC system that |
| 71 | + negotiate EMS will fail. Unfortunately this also means that TLS connections |
| 72 | + between EBCDIC systems with this fix, and EBCDIC systems without this |
| 73 | + fix will fail if they negotiate EMS. |
| 74 | + [Matt Caswell] |
| 75 | + |
| 76 | + *) Use Windows installation paths in the mingw builds |
| 77 | + |
| 78 | + Mingw isn't a POSIX environment per se, which means that Windows |
| 79 | + paths should be used for installation. |
| 80 | + (CVE-2019-1552) |
| 81 | + [Richard Levitte] |
| 82 | + |
| 83 | + *) Changed DH_check to accept parameters with order q and 2q subgroups. |
| 84 | + With order 2q subgroups the bit 0 of the private key is not secret |
| 85 | + but DH_generate_key works around that by clearing bit 0 of the |
| 86 | + private key for those. This avoids leaking bit 0 of the private key. |
| 87 | + [Bernd Edlinger] |
| 88 | + |
| 89 | + *) Significantly reduce secure memory usage by the randomness pools. |
| 90 | + [Paul Dale] |
| 91 | + |
| 92 | + *) Revert the DEVRANDOM_WAIT feature for Linux systems |
| 93 | + |
| 94 | + The DEVRANDOM_WAIT feature added a select() call to wait for the |
| 95 | + /dev/random device to become readable before reading from the |
| 96 | + /dev/urandom device. |
| 97 | + |
| 98 | + It turned out that this change had negative side effects on |
| 99 | + performance which were not acceptable. After some discussion it |
| 100 | + was decided to revert this feature and leave it up to the OS |
| 101 | + resp. the platform maintainer to ensure a proper initialization |
| 102 | + during early boot time. |
| 103 | + [Matthias St. Pierre] |
| 104 | + |
10 | 105 | Changes between 1.1.1b and 1.1.1c [28 May 2019] |
11 | 106 |
|
12 | 107 | *) Add build tests for C++. These are generated files that only do one |
|
75 | 170 | (CVE-2019-1543) |
76 | 171 | [Matt Caswell] |
77 | 172 |
|
| 173 | + *) Add DEVRANDOM_WAIT feature for Linux systems |
| 174 | + |
| 175 | + On older Linux systems where the getrandom() system call is not available, |
| 176 | + OpenSSL normally uses the /dev/urandom device for seeding its CSPRNG. |
| 177 | + Contrary to getrandom(), the /dev/urandom device will not block during |
| 178 | + early boot when the kernel CSPRNG has not been seeded yet. |
| 179 | + |
| 180 | + To mitigate this known weakness, use select() to wait for /dev/random to |
| 181 | + become readable before reading from /dev/urandom. |
| 182 | + |
78 | 183 | *) Ensure that SM2 only uses SM3 as digest algorithm |
79 | 184 | [Paul Yang] |
80 | 185 |
|
|
322 | 427 | SSL_set_ciphersuites() |
323 | 428 | [Matt Caswell] |
324 | 429 |
|
325 | | - *) Memory allocation failures consistenly add an error to the error |
| 430 | + *) Memory allocation failures consistently add an error to the error |
326 | 431 | stack. |
327 | 432 | [Rich Salz] |
328 | 433 |
|
|
6860 | 6965 | reason texts, thereby removing some of the footprint that may not |
6861 | 6966 | be interesting if those errors aren't displayed anyway. |
6862 | 6967 |
|
6863 | | - NOTE: it's still possible for any application or module to have it's |
| 6968 | + NOTE: it's still possible for any application or module to have its |
6864 | 6969 | own set of error texts inserted. The routines are there, just not |
6865 | 6970 | used by default when no-err is given. |
6866 | 6971 | [Richard Levitte] |
@@ -8826,7 +8931,7 @@ des-cbc 3624.96k 5258.21k 5530.91k 5624.30k 5628.26k |
8826 | 8931 | Changes between 0.9.6g and 0.9.6h [5 Dec 2002] |
8827 | 8932 |
|
8828 | 8933 | *) New function OPENSSL_cleanse(), which is used to cleanse a section of |
8829 | | - memory from it's contents. This is done with a counter that will |
| 8934 | + memory from its contents. This is done with a counter that will |
8830 | 8935 | place alternating values in each byte. This can be used to solve |
8831 | 8936 | two issues: 1) the removal of calls to memset() by highly optimizing |
8832 | 8937 | compilers, and 2) cleansing with other values than 0, since those can |
|
0 commit comments