@@ -28,12 +28,175 @@ breaking changes, and mappings for the large list of deprecated functions.
28
28
29
29
[Migration guide]: https://github.com/openssl/openssl/tree/master/doc/man7/migration_guide.pod
30
30
31
- ### Changes between 3.0.7 and 3.0.7 +quic [1 Nov 2022 ]
31
+ ### Changes between 3.0.8 and 3.0.8 +quic [7 Feb 2023 ]
32
32
33
33
* Add QUIC API support from BoringSSL.
34
34
35
35
*Todd Short*
36
36
37
+ ### Changes between 3.0.7 and 3.0.8 [7 Feb 2023]
38
+
39
+ * Fixed NULL dereference during PKCS7 data verification.
40
+
41
+ A NULL pointer can be dereferenced when signatures are being
42
+ verified on PKCS7 signed or signedAndEnveloped data. In case the hash
43
+ algorithm used for the signature is known to the OpenSSL library but
44
+ the implementation of the hash algorithm is not available the digest
45
+ initialization will fail. There is a missing check for the return
46
+ value from the initialization function which later leads to invalid
47
+ usage of the digest API most likely leading to a crash.
48
+ ([CVE-2023-0401])
49
+
50
+ PKCS7 data is processed by the SMIME library calls and also by the
51
+ time stamp (TS) library calls. The TLS implementation in OpenSSL does
52
+ not call these functions however third party applications would be
53
+ affected if they call these functions to verify signatures on untrusted
54
+ data.
55
+
56
+ *Tomáš Mráz*
57
+
58
+ * Fixed X.400 address type confusion in X.509 GeneralName.
59
+
60
+ There is a type confusion vulnerability relating to X.400 address processing
61
+ inside an X.509 GeneralName. X.400 addresses were parsed as an ASN1_STRING
62
+ but the public structure definition for GENERAL_NAME incorrectly specified
63
+ the type of the x400Address field as ASN1_TYPE. This field is subsequently
64
+ interpreted by the OpenSSL function GENERAL_NAME_cmp as an ASN1_TYPE rather
65
+ than an ASN1_STRING.
66
+
67
+ When CRL checking is enabled (i.e. the application sets the
68
+ X509_V_FLAG_CRL_CHECK flag), this vulnerability may allow an attacker to
69
+ pass arbitrary pointers to a memcmp call, enabling them to read memory
70
+ contents or enact a denial of service.
71
+ ([CVE-2023-0286])
72
+
73
+ *Hugo Landau*
74
+
75
+ * Fixed NULL dereference validating DSA public key.
76
+
77
+ An invalid pointer dereference on read can be triggered when an
78
+ application tries to check a malformed DSA public key by the
79
+ EVP_PKEY_public_check() function. This will most likely lead
80
+ to an application crash. This function can be called on public
81
+ keys supplied from untrusted sources which could allow an attacker
82
+ to cause a denial of service attack.
83
+
84
+ The TLS implementation in OpenSSL does not call this function
85
+ but applications might call the function if there are additional
86
+ security requirements imposed by standards such as FIPS 140-3.
87
+ ([CVE-2023-0217])
88
+
89
+ *Shane Lontis, Tomáš Mráz*
90
+
91
+ * Fixed Invalid pointer dereference in d2i_PKCS7 functions.
92
+
93
+ An invalid pointer dereference on read can be triggered when an
94
+ application tries to load malformed PKCS7 data with the
95
+ d2i_PKCS7(), d2i_PKCS7_bio() or d2i_PKCS7_fp() functions.
96
+
97
+ The result of the dereference is an application crash which could
98
+ lead to a denial of service attack. The TLS implementation in OpenSSL
99
+ does not call this function however third party applications might
100
+ call these functions on untrusted data.
101
+ ([CVE-2023-0216])
102
+
103
+ *Tomáš Mráz*
104
+
105
+ * Fixed Use-after-free following BIO_new_NDEF.
106
+
107
+ The public API function BIO_new_NDEF is a helper function used for
108
+ streaming ASN.1 data via a BIO. It is primarily used internally to OpenSSL
109
+ to support the SMIME, CMS and PKCS7 streaming capabilities, but may also
110
+ be called directly by end user applications.
111
+
112
+ The function receives a BIO from the caller, prepends a new BIO_f_asn1
113
+ filter BIO onto the front of it to form a BIO chain, and then returns
114
+ the new head of the BIO chain to the caller. Under certain conditions,
115
+ for example if a CMS recipient public key is invalid, the new filter BIO
116
+ is freed and the function returns a NULL result indicating a failure.
117
+ However, in this case, the BIO chain is not properly cleaned up and the
118
+ BIO passed by the caller still retains internal pointers to the previously
119
+ freed filter BIO. If the caller then goes on to call BIO_pop() on the BIO
120
+ then a use-after-free will occur. This will most likely result in a crash.
121
+ ([CVE-2023-0215])
122
+
123
+ *Viktor Dukhovni, Matt Caswell*
124
+
125
+ * Fixed Double free after calling PEM_read_bio_ex.
126
+
127
+ The function PEM_read_bio_ex() reads a PEM file from a BIO and parses and
128
+ decodes the "name" (e.g. "CERTIFICATE"), any header data and the payload
129
+ data. If the function succeeds then the "name_out", "header" and "data"
130
+ arguments are populated with pointers to buffers containing the relevant
131
+ decoded data. The caller is responsible for freeing those buffers. It is
132
+ possible to construct a PEM file that results in 0 bytes of payload data.
133
+ In this case PEM_read_bio_ex() will return a failure code but will populate
134
+ the header argument with a pointer to a buffer that has already been freed.
135
+ If the caller also frees this buffer then a double free will occur. This
136
+ will most likely lead to a crash.
137
+
138
+ The functions PEM_read_bio() and PEM_read() are simple wrappers around
139
+ PEM_read_bio_ex() and therefore these functions are also directly affected.
140
+
141
+ These functions are also called indirectly by a number of other OpenSSL
142
+ functions including PEM_X509_INFO_read_bio_ex() and
143
+ SSL_CTX_use_serverinfo_file() which are also vulnerable. Some OpenSSL
144
+ internal uses of these functions are not vulnerable because the caller does
145
+ not free the header argument if PEM_read_bio_ex() returns a failure code.
146
+ ([CVE-2022-4450])
147
+
148
+ *Kurt Roeckx, Matt Caswell*
149
+
150
+ * Fixed Timing Oracle in RSA Decryption.
151
+
152
+ A timing based side channel exists in the OpenSSL RSA Decryption
153
+ implementation which could be sufficient to recover a plaintext across
154
+ a network in a Bleichenbacher style attack. To achieve a successful
155
+ decryption an attacker would have to be able to send a very large number
156
+ of trial messages for decryption. The vulnerability affects all RSA padding
157
+ modes: PKCS#1 v1.5, RSA-OEAP and RSASVE.
158
+ ([CVE-2022-4304])
159
+
160
+ *Dmitry Belyavsky, Hubert Kario*
161
+
162
+ * Fixed X.509 Name Constraints Read Buffer Overflow.
163
+
164
+ A read buffer overrun can be triggered in X.509 certificate verification,
165
+ specifically in name constraint checking. The read buffer overrun might
166
+ result in a crash which could lead to a denial of service attack.
167
+ In a TLS client, this can be triggered by connecting to a malicious
168
+ server. In a TLS server, this can be triggered if the server requests
169
+ client authentication and a malicious client connects.
170
+ ([CVE-2022-4203])
171
+
172
+ *Viktor Dukhovni*
173
+
174
+ * Fixed X.509 Policy Constraints Double Locking security issue.
175
+
176
+ If an X.509 certificate contains a malformed policy constraint and
177
+ policy processing is enabled, then a write lock will be taken twice
178
+ recursively. On some operating systems (most widely: Windows) this
179
+ results in a denial of service when the affected process hangs. Policy
180
+ processing being enabled on a publicly facing server is not considered
181
+ to be a common setup.
182
+ ([CVE-2022-3996])
183
+
184
+ *Paul Dale*
185
+
186
+ * Our provider implementations of `OSSL_FUNC_KEYMGMT_EXPORT` and
187
+ `OSSL_FUNC_KEYMGMT_GET_PARAMS` for EC and SM2 keys now honor
188
+ `OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT` as set (and
189
+ default to `POINT_CONVERSION_UNCOMPRESSED`) when exporting
190
+ `OSSL_PKEY_PARAM_PUB_KEY`, instead of unconditionally using
191
+ `POINT_CONVERSION_COMPRESSED` as in previous 3.x releases.
192
+ For symmetry, our implementation of `EVP_PKEY_ASN1_METHOD->export_to`
193
+ for legacy EC and SM2 keys is also changed similarly to honor the
194
+ equivalent conversion format flag as specified in the underlying
195
+ `EC_KEY` object being exported to a provider, when this function is
196
+ called through `EVP_PKEY_export()`.
197
+
198
+ *Nicola Tuveri*
199
+
37
200
### Changes between 3.0.6 and 3.0.7 [1 Nov 2022]
38
201
39
202
* Fixed two buffer overflows in punycode decoding functions.
@@ -19232,7 +19395,7 @@ ndif
19232
19395
*Ralf S. Engelschall*
19233
19396
19234
19397
* Incorporated the popular no-RSA/DSA-only patches
19235
- which allow to compile a RSA-free SSLeay.
19398
+ which allow to compile an RSA-free SSLeay.
19236
19399
19237
19400
*Andrew Cooke / Interrader Ldt., Ralf S. Engelschall*
19238
19401
@@ -19421,6 +19584,15 @@ ndif
19421
19584
19422
19585
<!-- Links -->
19423
19586
19587
+ [CVE-2023-0401]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0401
19588
+ [CVE-2023-0286]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0286
19589
+ [CVE-2023-0217]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0217
19590
+ [CVE-2023-0216]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0216
19591
+ [CVE-2023-0215]: https://www.openssl.org/news/vulnerabilities.html#CVE-2023-0215
19592
+ [CVE-2022-4450]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-4450
19593
+ [CVE-2022-4304]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-4304
19594
+ [CVE-2022-4203]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-4203
19595
+ [CVE-2022-3996]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-3996
19424
19596
[CVE-2022-2274]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-2274
19425
19597
[CVE-2022-2097]: https://www.openssl.org/news/vulnerabilities.html#CVE-2022-2274
19426
19598
[CVE-2020-1971]: https://www.openssl.org/news/vulnerabilities.html#CVE-2020-1971
0 commit comments