]> git.ipfire.org Git - thirdparty/openssl.git/blame - CHANGES
NEWS update
[thirdparty/openssl.git] / CHANGES
CommitLineData
81a6c781 1
f1c236f8 2 OpenSSL CHANGES
651d0aff
RE
3 _______________
4
0b9e8276 5 Changes between 1.0.1k and 1.0.2 [xx XXX xxxx]
0a9f7780 6
84d4f99d
MC
7 *) SRTP Memory Leak.
8
9 A flaw in the DTLS SRTP extension parsing code allows an attacker, who
10 sends a carefully crafted handshake message, to cause OpenSSL to fail
11 to free up to 64k of memory causing a memory leak. This could be
12 exploited in a Denial Of Service attack. This issue affects OpenSSL
13 1.0.1 server implementations for both SSL/TLS and DTLS regardless of
14 whether SRTP is used or configured. Implementations of OpenSSL that
15 have been compiled with OPENSSL_NO_SRTP defined are not affected.
16
17 The fix was developed by the OpenSSL team.
18 (CVE-2014-3513)
19 [OpenSSL team]
20
21 *) Session Ticket Memory Leak.
22
23 When an OpenSSL SSL/TLS/DTLS server receives a session ticket the
24 integrity of that ticket is first verified. In the event of a session
25 ticket integrity check failing, OpenSSL will fail to free memory
26 causing a memory leak. By sending a large number of invalid session
27 tickets an attacker could exploit this issue in a Denial Of Service
28 attack.
29 (CVE-2014-3567)
30 [Steve Henson]
31
32 *) Build option no-ssl3 is incomplete.
33
34 When OpenSSL is configured with "no-ssl3" as a build option, servers
35 could accept and complete a SSL 3.0 handshake, and clients could be
36 configured to send them.
37 (CVE-2014-3568)
38 [Akamai and the OpenSSL team]
39
a46c7052
BM
40 *) Add support for TLS_FALLBACK_SCSV.
41 Client applications doing fallback retries should call
42 SSL_set_mode(s, SSL_MODE_SEND_FALLBACK_SCSV).
43 (CVE-2014-3566)
44 [Adam Langley, Bodo Moeller]
45
1cfd7cf3
AP
46 *) Facilitate "universal" ARM builds targeting range of ARM ISAs, e.g.
47 ARMv5 through ARMv8, as opposite to "locking" it to single one.
48 So far those who have to target multiple plaforms would compromise
49 and argue that binary targeting say ARMv5 would still execute on
50 ARMv8. "Universal" build resolves this compromise by providing
51 near-optimal performance even on newer platforms.
52 [Andy Polyakov]
53
d2a1226b
AP
54 *) Accelerated NIST P-256 elliptic curve implementation for x86_64
55 (other platforms pending).
0ce2dbfb 56 [Shay Gueron & Vlad Krasnov (Intel Corp), Andy Polyakov]
d2a1226b 57
2102c53c
DSH
58 *) Add support for the SignedCertificateTimestampList certificate and
59 OCSP response extensions from RFC6962.
60 [Rob Stradling]
61
d5213519
BM
62 *) Fix ec_GFp_simple_points_make_affine (thus, EC_POINTs_mul etc.)
63 for corner cases. (Certain input points at infinity could lead to
64 bogus results, with non-infinity inputs mapped to infinity too.)
65 [Bodo Moeller]
66
0ae6ba18
AP
67 *) Initial support for PowerISA 2.0.7, first implemented in POWER8.
68 This covers AES, SHA256/512 and GHASH. "Initial" means that most
69 common cases are optimized and there still is room for further
70 improvements. Vector Permutation AES for Altivec is also added.
71 [Andy Polyakov]
72
73 *) Add support for little-endian ppc64 Linux target.
74 [Marcelo Cerri (IBM)]
75
76 *) Initial support for AMRv8 ISA crypto extensions. This covers AES,
77 SHA1, SHA256 and GHASH. "Initial" means that most common cases
78 are optimized and there still is room for further improvements.
79 Both 32- and 64-bit modes are supported.
80 [Andy Polyakov, Ard Biesheuvel (Linaro)]
81
82 *) Improved ARMv7 NEON support.
83 [Andy Polyakov]
84
85 *) Support for SPARC Architecture 2011 crypto extensions, first
86 implemented in SPARC T4. This covers AES, DES, Camellia, SHA1,
87 SHA256/512, MD5, GHASH and modular exponentiation.
88 [Andy Polyakov, David Miller]
89
90 *) Accelerated modular exponentiation for Intel processors, a.k.a.
91 RSAZ.
0ce2dbfb 92 [Shay Gueron & Vlad Krasnov (Intel Corp)]
0ae6ba18
AP
93
94 *) Support for new and upcoming Intel processors, including AVX2,
95 BMI and SHA ISA extensions. This includes additional "stitched"
96 implementations, AESNI-SHA256 and GCM, and multi-buffer support
97 for TLS encrypt.
98
99 This work was sponsored by Intel Corp.
100 [Andy Polyakov]
101
c578fe37
BM
102 *) Support for DTLS 1.2. This adds two sets of DTLS methods: DTLS_*_method()
103 supports both DTLS 1.2 and 1.0 and should use whatever version the peer
104 supports and DTLSv1_2_*_method() which supports DTLS 1.2 only.
105 [Steve Henson]
106
b9fa413a
DSH
107 *) Use algorithm specific chains in SSL_CTX_use_certificate_chain_file():
108 this fixes a limiation in previous versions of OpenSSL.
109 [Steve Henson]
110
25f93585
DSH
111 *) Extended RSA OAEP support via EVP_PKEY API. Options to specify digest,
112 MGF1 digest and OAEP label.
113 [Steve Henson]
114
c6f33865
DSH
115 *) Add EVP support for key wrapping algorithms, to avoid problems with
116 existing code the flag EVP_CIPHER_CTX_WRAP_ALLOW has to be set in
117 the EVP_CIPHER_CTX or an error is returned. Add AES and DES3 wrap
118 algorithms and include tests cases.
119 [Steve Henson]
120
7c23127f
DSH
121 *) Add functions to allocate and set the fields of an ECDSA_METHOD
122 structure.
123 [Douglas E. Engert, Steve Henson]
124
904348a4
DSH
125 *) New functions OPENSSL_gmtime_diff and ASN1_TIME_diff to find the
126 difference in days and seconds between two tm or ASN1_TIME structures.
127 [Steve Henson]
128
171c4da5
DSH
129 *) Add -rev test option to s_server to just reverse order of characters
130 received by client and send back to server. Also prints an abbreviated
131 summary of the connection parameters.
132 [Steve Henson]
133
04611fb0
DSH
134 *) New option -brief for s_client and s_server to print out a brief summary
135 of connection parameters.
136 [Steve Henson]
137
e27711cf
T
138 *) Add callbacks for arbitrary TLS extensions.
139 [Trevor Perrin <trevp@trevp.net> and Ben Laurie]
140
57912ed3
DSH
141 *) New option -crl_download in several openssl utilities to download CRLs
142 from CRLDP extension in certificates.
143 [Steve Henson]
144
e318431e
DSH
145 *) New options -CRL and -CRLform for s_client and s_server for CRLs.
146 [Steve Henson]
147
6a10f38d
DSH
148 *) New function X509_CRL_diff to generate a delta CRL from the difference
149 of two full CRLs. Add support to "crl" utility.
150 [Steve Henson]
151
75f53531
DSH
152 *) New functions to set lookup_crls function and to retrieve
153 X509_STORE from X509_STORE_CTX.
154 [Steve Henson]
155
2aa3ef78
DSH
156 *) Print out deprecated issuer and subject unique ID fields in
157 certificates.
158 [Steve Henson]
159
5c8d41be
DSH
160 *) Extend OCSP I/O functions so they can be used for simple general purpose
161 HTTP as well as OCSP. New wrapper function which can be used to download
162 CRLs using the OCSP API.
163 [Steve Henson]
164
15387e4c
DSH
165 *) Delegate command line handling in s_client/s_server to SSL_CONF APIs.
166 [Steve Henson]
167
49ef33fa
DSH
168 *) SSL_CONF* functions. These provide a common framework for application
169 configuration using configuration files or command lines.
170 [Steve Henson]
171
bc200e69
DSH
172 *) SSL/TLS tracing code. This parses out SSL/TLS records using the
173 message callback and prints the results. Needs compile time option
174 "enable-ssl-trace". New options to s_client and s_server to enable
175 tracing.
176 [Steve Henson]
177
78b5d89d 178 *) New ctrl and macro to retrieve supported points extensions.
1b9a59c3 179 Print out extension in s_server and s_client.
78b5d89d
DSH
180 [Steve Henson]
181
bd9fc1d6
DSH
182 *) New functions to retrieve certificate signature and signature
183 OID NID.
184 [Steve Henson]
185
1520e6c0
DSH
186 *) Add functions to retrieve and manipulate the raw cipherlist sent by a
187 client to OpenSSL.
188 [Steve Henson]
189
ccf6a19e
DSH
190 *) New Suite B modes for TLS code. These use and enforce the requirements
191 of RFC6460: restrict ciphersuites, only permit Suite B algorithms and
192 only use Suite B curves. The Suite B modes can be set by using the
193 strings "SUITEB128", "SUITEB192" or "SUITEB128ONLY" for the cipherstring.
194 [Steve Henson]
195
ba8bdea7
DSH
196 *) New chain verification flags for Suite B levels of security. Check
197 algorithms are acceptable when flags are set in X509_verify_cert.
198 [Steve Henson]
199
6660baee
DSH
200 *) Make tls1_check_chain return a set of flags indicating checks passed
201 by a certificate chain. Add additional tests to handle client
202 certificates: checks for matching certificate type and issuer name
203 comparison.
204 [Steve Henson]
205
25d4c925
DSH
206 *) If an attempt is made to use a signature algorithm not in the peer
207 preference list abort the handshake. If client has no suitable
208 signature algorithms in response to a certificate request do not
209 use the certificate.
210 [Steve Henson]
211
44adfeb6
DSH
212 *) If server EC tmp key is not in client preference list abort handshake.
213 [Steve Henson]
214
b762acad
DSH
215 *) Add support for certificate stores in CERT structure. This makes it
216 possible to have different stores per SSL structure or one store in
217 the parent SSL_CTX. Include distint stores for certificate chain
218 verification and chain building. New ctrl SSL_CTRL_BUILD_CERT_CHAIN
219 to build and store a certificate chain in CERT structure: returing
220 an error if the chain cannot be built: this will allow applications
221 to test if a chain is correctly configured.
222
223 Note: if the CERT based stores are not set then the parent SSL_CTX
224 store is used to retain compatibility with existing behaviour.
225
226 [Steve Henson]
227
b28fbdfa
DSH
228 *) New function ssl_set_client_disabled to set a ciphersuite disabled
229 mask based on the current session, check mask when sending client
230 hello and checking the requested ciphersuite.
231 [Steve Henson]
232
a897502c
DSH
233 *) New ctrls to retrieve and set certificate types in a certificate
234 request message. Print out received values in s_client. If certificate
235 types is not set with custom values set sensible values based on
236 supported signature algorithms.
237 [Steve Henson]
238
04c32cdd
DSH
239 *) Support for distinct client and server supported signature algorithms.
240 [Steve Henson]
241
623a5e24
DSH
242 *) Add certificate callback. If set this is called whenever a certificate
243 is required by client or server. An application can decide which
244 certificate chain to present based on arbitrary criteria: for example
245 supported signature algorithms. Add very simple example to s_server.
246 This fixes many of the problems and restrictions of the existing client
247 certificate callback: for example you can now clear an existing
248 certificate and specify the whole chain.
249 [Steve Henson]
250
484f8762
DSH
251 *) Add new "valid_flags" field to CERT_PKEY structure which determines what
252 the certificate can be used for (if anything). Set valid_flags field
253 in new tls1_check_chain function. Simplify ssl_set_cert_masks which used
254 to have similar checks in it.
255
256 Add new "cert_flags" field to CERT structure and include a "strict mode".
257 This enforces some TLS certificate requirements (such as only permitting
258 certificate signature algorithms contained in the supported algorithms
259 extension) which some implementations ignore: this option should be used
260 with caution as it could cause interoperability issues.
261 [Steve Henson]
262
c70a1fee
DSH
263 *) Update and tidy signature algorithm extension processing. Work out
264 shared signature algorithms based on preferences and peer algorithms
265 and print them out in s_client and s_server. Abort handshake if no
266 shared signature algorithms.
267 [Steve Henson]
268
0b362de5
DSH
269 *) Add new functions to allow customised supported signature algorithms
270 for SSL and SSL_CTX structures. Add options to s_client and s_server
271 to support them.
272 [Steve Henson]
273
d312f7be
DSH
274 *) New function SSL_certs_clear() to delete all references to certificates
275 from an SSL structure. Before this once a certificate had been added
276 it couldn't be removed.
277 [Steve Henson]
278
70cd3c6b
DSH
279 *) Integrate hostname, email address and IP address checking with certificate
280 verification. New verify options supporting checking in opensl utility.
281 [Steve Henson]
282
45da1efc
DSH
283 *) Fixes and wildcard matching support to hostname and email checking
284 functions. Add manual page.
285 [Florian Weimer (Red Hat Product Security Team)]
286
287 *) New functions to check a hostname email or IP address against a
288 certificate. Add options x509 utility to print results of checks against
289 a certificate.
290 [Steve Henson]
291
d65b8b21
BL
292 *) Fix OCSP checking.
293 [Rob Stradling <rob.stradling@comodo.com> and Ben Laurie]
294
8c149cfd
BM
295 *) Initial experimental support for explicitly trusted non-root CAs.
296 OpenSSL still tries to build a complete chain to a root but if an
297 intermediate CA has a trust setting included that is used. The first
298 setting is used: whether to trust (e.g., -addtrust option to the x509
299 utility) or reject.
300 [Steve Henson]
d65b8b21 301
9d2006d8
DSH
302 *) Add -trusted_first option which attempts to find certificates in the
303 trusted store even if an untrusted chain is also supplied.
304 [Steve Henson]
305
988037fe
AP
306 *) MIPS assembly pack updates: support for MIPS32r2 and SmartMIPS ASE,
307 platform support for Linux and Android.
308 [Andy Polyakov]
309
0e05b51f
AP
310 *) Support for linux-x32, ILP32 environment in x86_64 framework.
311 [Andy Polyakov]
312
1dded7f7
DSH
313 *) Experimental multi-implementation support for FIPS capable OpenSSL.
314 When in FIPS mode the approved implementations are used as normal,
315 when not in FIPS mode the internal unapproved versions are used instead.
316 This means that the FIPS capable OpenSSL isn't forced to use the
317 (often lower perfomance) FIPS implementations outside FIPS mode.
318 [Steve Henson]
319
c3cb0691
DSH
320 *) Transparently support X9.42 DH parameters when calling
321 PEM_read_bio_DHparameters. This means existing applications can handle
322 the new parameter format automatically.
323 [Steve Henson]
324
491734eb
DSH
325 *) Initial experimental support for X9.42 DH parameter format: mainly
326 to support use of 'q' parameter for RFC5114 parameters.
327 [Steve Henson]
328
e811eff5
DSH
329 *) Add DH parameters from RFC5114 including test data to dhtest.
330 [Steve Henson]
331
e46c807e
DSH
332 *) Support for automatic EC temporary key parameter selection. If enabled
333 the most preferred EC parameters are automatically used instead of
334 hardcoded fixed parameters. Now a server just has to call:
335 SSL_CTX_set_ecdh_auto(ctx, 1) and the server will automatically
336 support ECDH and use the most appropriate parameters.
337 [Steve Henson]
338
6b870763
DSH
339 *) Enhance and tidy EC curve and point format TLS extension code. Use
340 static structures instead of allocation if default values are used.
341 New ctrls to set curves we wish to support and to retrieve shared curves.
342 Print out shared curves in s_server. New options to s_server and s_client
343 to set list of supported curves.
344 [Steve Henson]
345
55058181
DSH
346 *) New ctrls to retrieve supported signature algorithms and
347 supported curve values as an array of NIDs. Extend openssl utility
348 to print out received values.
349 [Steve Henson]
350
a068a1d0
DSH
351 *) Add new APIs EC_curve_nist2nid and EC_curve_nid2nist which convert
352 between NIDs and the more common NIST names such as "P-256". Enhance
353 ecparam utility and ECC method to recognise the NIST names for curves.
354 [Steve Henson]
355
37b16c84
DSH
356 *) Enhance SSL/TLS certificate chain handling to support different
357 chains for each certificate instead of one chain in the parent SSL_CTX.
358 [Steve Henson]
359
c523eb98
DSH
360 *) Support for fixed DH ciphersuite client authentication: where both
361 server and client use DH certificates with common parameters.
362 [Steve Henson]
363
0ffa4997
DSH
364 *) Support for fixed DH ciphersuites: those requiring DH server
365 certificates.
366 [Steve Henson]
b9115239 367
e9128d94
EK
368 *) New function i2d_re_X509_tbs for re-encoding the TBS portion of
369 the certificate.
370 Note: Related 1.0.2-beta specific macros X509_get_cert_info,
371 X509_CINF_set_modified, X509_CINF_get_issuer, X509_CINF_get_extensions and
372 X509_CINF_get_signature were reverted post internal team review.
373
4c75f4e5
EK
374 Changes between 1.0.1j and 1.0.1k [xx XXX xxxx]
375
4aaf1e49
DSH
376 *) Abort handshake if server key exchange message is omitted for ephemeral
377 ECDH ciphersuites.
378
a936ba11
DSH
379 Thanks to Karthikeyan Bhargavan of the PROSECCO team at INRIA for
380 reporting this issue.
4aaf1e49
DSH
381 (CVE-2014-3572)
382 [Steve Henson]
383
4b4c1fcc
DSH
384 *) Remove non-export ephemeral RSA code on client and server. This code
385 violated the TLS standard by allowing the use of temporary RSA keys in
386 non-export ciphersuites and could be used by a server to effectively
387 downgrade the RSA key length used to a value smaller than the server
a936ba11
DSH
388 certificate. Thanks for Karthikeyan Bhargavan of the PROSECCO team at
389 INRIA or reporting this issue.
4b4c1fcc
DSH
390 (CVE-2015-0204)
391 [Steve Henson]
392
d9b277e0
AL
393 *) Ensure that the session ID context of an SSL is updated when its
394 SSL_CTX is updated via SSL_set_SSL_CTX.
395
396 The session ID context is typically set from the parent SSL_CTX,
397 and can vary with the CTX.
398 [Adam Langley]
399
85cfc188
DSH
400 *) Fix various certificate fingerprint issues.
401
402 By using non-DER or invalid encodings outside the signed portion of a
403 certificate the fingerprint can be changed without breaking the signature.
404 Although no details of the signed portion of the certificate can be changed
405 this can cause problems with some applications: e.g. those using the
406 certificate fingerprint for blacklists.
407
408 1. Reject signatures with non zero unused bits.
409
410 If the BIT STRING containing the signature has non zero unused bits reject
411 the signature. All current signature algorithms require zero unused bits.
412
413 2. Check certificate algorithm consistency.
414
415 Check the AlgorithmIdentifier inside TBS matches the one in the
416 certificate signature. NB: this will result in signature failure
417 errors for some broken certificates.
418
419 Thanks to Konrad Kraszewski from Google for reporting this issue.
420
421 3. Check DSA/ECDSA signatures use DER.
422
423 Reencode DSA/ECDSA signatures and compare with the original received
424 signature. Return an error if there is a mismatch.
425
426 This will reject various cases including garbage after signature
427 (thanks to Antti Karjalainen and Tuomo Untinen from the Codenomicon CROSS
428 program for discovering this case) and use of BER or invalid ASN.1 INTEGERs
429 (negative or with leading zeroes).
430
431 Further analysis was conducted and fixes were developed by Stephen Henson
432 of the OpenSSL core team.
433
434 (CVE-2014-8275)
435 [Steve Henson]
436
03d14f58
DB
437 *) Do not resume sessions on the server if the negotiated protocol
438 version does not match the session's version. Resuming with a different
439 version, while not strictly forbidden by the RFC, is of questionable
440 sanity and breaks all known clients.
441