]> git.ipfire.org Git - thirdparty/openssl.git/blame - CHANGES
Fix and improve SSL_MODE_SEND_FALLBACK_SCSV documentation.
[thirdparty/openssl.git] / CHANGES
CommitLineData
81a6c781 1
f1c236f8 2 OpenSSL CHANGES
651d0aff
RE
3 _______________
4
5e60396f 5 Changes between 1.0.1i 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
d2a1226b
AP
46 *) Accelerated NIST P-256 elliptic curve implementation for x86_64
47 (other platforms pending).
48 [Shay Gueron (Intel Corp), Andy Polyakov]
49
2102c53c
DSH
50 *) Add support for the SignedCertificateTimestampList certificate and
51 OCSP response extensions from RFC6962.
52 [Rob Stradling]
53
d5213519
BM
54 *) Fix ec_GFp_simple_points_make_affine (thus, EC_POINTs_mul etc.)
55 for corner cases. (Certain input points at infinity could lead to
56 bogus results, with non-infinity inputs mapped to infinity too.)
57 [Bodo Moeller]
58
0ae6ba18
AP
59 *) Initial support for PowerISA 2.0.7, first implemented in POWER8.
60 This covers AES, SHA256/512 and GHASH. "Initial" means that most
61 common cases are optimized and there still is room for further
62 improvements. Vector Permutation AES for Altivec is also added.
63 [Andy Polyakov]
64
65 *) Add support for little-endian ppc64 Linux target.
66 [Marcelo Cerri (IBM)]
67
68 *) Initial support for AMRv8 ISA crypto extensions. This covers AES,
69 SHA1, SHA256 and GHASH. "Initial" means that most common cases
70 are optimized and there still is room for further improvements.
71 Both 32- and 64-bit modes are supported.
72 [Andy Polyakov, Ard Biesheuvel (Linaro)]
73
74 *) Improved ARMv7 NEON support.
75 [Andy Polyakov]
76
77 *) Support for SPARC Architecture 2011 crypto extensions, first
78 implemented in SPARC T4. This covers AES, DES, Camellia, SHA1,
79 SHA256/512, MD5, GHASH and modular exponentiation.
80 [Andy Polyakov, David Miller]
81
82 *) Accelerated modular exponentiation for Intel processors, a.k.a.
83 RSAZ.
84 [Shay Gueron (Intel Corp)]
85
86 *) Support for new and upcoming Intel processors, including AVX2,
87 BMI and SHA ISA extensions. This includes additional "stitched"
88 implementations, AESNI-SHA256 and GCM, and multi-buffer support
89 for TLS encrypt.
90
91 This work was sponsored by Intel Corp.
92 [Andy Polyakov]
93
c578fe37
BM
94 *) Support for DTLS 1.2. This adds two sets of DTLS methods: DTLS_*_method()
95 supports both DTLS 1.2 and 1.0 and should use whatever version the peer
96 supports and DTLSv1_2_*_method() which supports DTLS 1.2 only.
97 [Steve Henson]
98
b9fa413a
DSH
99 *) Use algorithm specific chains in SSL_CTX_use_certificate_chain_file():
100 this fixes a limiation in previous versions of OpenSSL.
101 [Steve Henson]
102
25f93585
DSH
103 *) Extended RSA OAEP support via EVP_PKEY API. Options to specify digest,
104 MGF1 digest and OAEP label.
105 [Steve Henson]
106
c6f33865
DSH
107 *) Add EVP support for key wrapping algorithms, to avoid problems with
108 existing code the flag EVP_CIPHER_CTX_WRAP_ALLOW has to be set in
109 the EVP_CIPHER_CTX or an error is returned. Add AES and DES3 wrap
110 algorithms and include tests cases.
111 [Steve Henson]
112
7c23127f
DSH
113 *) Add functions to allocate and set the fields of an ECDSA_METHOD
114 structure.
115 [Douglas E. Engert, Steve Henson]
116
904348a4
DSH
117 *) New functions OPENSSL_gmtime_diff and ASN1_TIME_diff to find the
118 difference in days and seconds between two tm or ASN1_TIME structures.
119 [Steve Henson]
120
171c4da5
DSH
121 *) Add -rev test option to s_server to just reverse order of characters
122 received by client and send back to server. Also prints an abbreviated
123 summary of the connection parameters.
124 [Steve Henson]
125
04611fb0
DSH
126 *) New option -brief for s_client and s_server to print out a brief summary
127 of connection parameters.
128 [Steve Henson]
129
e27711cf
T
130 *) Add callbacks for arbitrary TLS extensions.
131 [Trevor Perrin <trevp@trevp.net> and Ben Laurie]
132
57912ed3
DSH
133 *) New option -crl_download in several openssl utilities to download CRLs
134 from CRLDP extension in certificates.
135 [Steve Henson]
136
e318431e
DSH
137 *) New options -CRL and -CRLform for s_client and s_server for CRLs.
138 [Steve Henson]
139
6a10f38d
DSH
140 *) New function X509_CRL_diff to generate a delta CRL from the difference
141 of two full CRLs. Add support to "crl" utility.
142 [Steve Henson]
143
75f53531
DSH
144 *) New functions to set lookup_crls function and to retrieve
145 X509_STORE from X509_STORE_CTX.
146 [Steve Henson]
147
2aa3ef78
DSH
148 *) Print out deprecated issuer and subject unique ID fields in
149 certificates.
150 [Steve Henson]
151
5c8d41be
DSH
152 *) Extend OCSP I/O functions so they can be used for simple general purpose
153 HTTP as well as OCSP. New wrapper function which can be used to download
154 CRLs using the OCSP API.
155 [Steve Henson]
156
15387e4c
DSH
157 *) Delegate command line handling in s_client/s_server to SSL_CONF APIs.
158 [Steve Henson]
159
49ef33fa
DSH
160 *) SSL_CONF* functions. These provide a common framework for application
161 configuration using configuration files or command lines.
162 [Steve Henson]
163
bc200e69
DSH
164 *) SSL/TLS tracing code. This parses out SSL/TLS records using the
165 message callback and prints the results. Needs compile time option
166 "enable-ssl-trace". New options to s_client and s_server to enable
167 tracing.
168 [Steve Henson]
169
78b5d89d 170 *) New ctrl and macro to retrieve supported points extensions.
1b9a59c3 171 Print out extension in s_server and s_client.
78b5d89d
DSH
172 [Steve Henson]
173
bd9fc1d6
DSH
174 *) New functions to retrieve certificate signature and signature
175 OID NID.
176 [Steve Henson]
177
1520e6c0
DSH
178 *) Add functions to retrieve and manipulate the raw cipherlist sent by a
179 client to OpenSSL.
180 [Steve Henson]
181
ccf6a19e
DSH
182 *) New Suite B modes for TLS code. These use and enforce the requirements
183 of RFC6460: restrict ciphersuites, only permit Suite B algorithms and
184 only use Suite B curves. The Suite B modes can be set by using the
185 strings "SUITEB128", "SUITEB192" or "SUITEB128ONLY" for the cipherstring.
186 [Steve Henson]
187
ba8bdea7
DSH
188 *) New chain verification flags for Suite B levels of security. Check
189 algorithms are acceptable when flags are set in X509_verify_cert.
190 [Steve Henson]
191
6660baee
DSH
192 *) Make tls1_check_chain return a set of flags indicating checks passed
193 by a certificate chain. Add additional tests to handle client
194 certificates: checks for matching certificate type and issuer name
195 comparison.
196 [Steve Henson]
197
25d4c925
DSH
198 *) If an attempt is made to use a signature algorithm not in the peer
199 preference list abort the handshake. If client has no suitable
200 signature algorithms in response to a certificate request do not
201 use the certificate.
202 [Steve Henson]
203
44adfeb6
DSH
204 *) If server EC tmp key is not in client preference list abort handshake.
205 [Steve Henson]
206
b762acad
DSH
207 *) Add support for certificate stores in CERT structure. This makes it
208 possible to have different stores per SSL structure or one store in
209 the parent SSL_CTX. Include distint stores for certificate chain
210 verification and chain building. New ctrl SSL_CTRL_BUILD_CERT_CHAIN
211 to build and store a certificate chain in CERT structure: returing
212 an error if the chain cannot be built: this will allow applications
213 to test if a chain is correctly configured.
214
215 Note: if the CERT based stores are not set then the parent SSL_CTX
216 store is used to retain compatibility with existing behaviour.
217
218 [Steve Henson]
219
b28fbdfa
DSH
220 *) New function ssl_set_client_disabled to set a ciphersuite disabled
221 mask based on the current session, check mask when sending client
222 hello and checking the requested ciphersuite.
223 [Steve Henson]
224
a897502c
DSH
225 *) New ctrls to retrieve and set certificate types in a certificate
226 request message. Print out received values in s_client. If certificate
227 types is not set with custom values set sensible values based on
228 supported signature algorithms.
229 [Steve Henson]
230
04c32cdd
DSH
231 *) Support for distinct client and server supported signature algorithms.
232 [Steve Henson]
233
623a5e24
DSH
234 *) Add certificate callback. If set this is called whenever a certificate
235 is required by client or server. An application can decide which
236 certificate chain to present based on arbitrary criteria: for example
237 supported signature algorithms. Add very simple example to s_server.
238 This fixes many of the problems and restrictions of the existing client
239 certificate callback: for example you can now clear an existing
240 certificate and specify the whole chain.
241 [Steve Henson]
242
484f8762
DSH
243 *) Add new "valid_flags" field to CERT_PKEY structure which determines what
244 the certificate can be used for (if anything). Set valid_flags field
245 in new tls1_check_chain function. Simplify ssl_set_cert_masks which used
246 to have similar checks in it.
247
248 Add new "cert_flags" field to CERT structure and include a "strict mode".
249 This enforces some TLS certificate requirements (such as only permitting
250 certificate signature algorithms contained in the supported algorithms
251 extension) which some implementations ignore: this option should be used
252 with caution as it could cause interoperability issues.
253 [Steve Henson]
254
c70a1fee
DSH
255 *) Update and tidy signature algorithm extension processing. Work out
256 shared signature algorithms based on preferences and peer algorithms
257 and print them out in s_client and s_server. Abort handshake if no
258 shared signature algorithms.
259 [Steve Henson]
260
0b362de5
DSH
261 *) Add new functions to allow customised supported signature algorithms
262 for SSL and SSL_CTX structures. Add options to s_client and s_server
263 to support them.
264 [Steve Henson]
265
d312f7be
DSH
266 *) New function SSL_certs_clear() to delete all references to certificates
267 from an SSL structure. Before this once a certificate had been added
268 it couldn't be removed.
269 [Steve Henson]
270
70cd3c6b
DSH
271 *) Integrate hostname, email address and IP address checking with certificate
272 verification. New verify options supporting checking in opensl utility.
273 [Steve Henson]
274
45da1efc
DSH
275 *) Fixes and wildcard matching support to hostname and email checking
276 functions. Add manual page.
277 [Florian Weimer (Red Hat Product Security Team)]
278
279 *) New functions to check a hostname email or IP address against a
280 certificate. Add options x509 utility to print results of checks against
281 a certificate.
282 [Steve Henson]
283
d65b8b21
BL
284 *) Fix OCSP checking.
285 [Rob Stradling <rob.stradling@comodo.com> and Ben Laurie]
286
8c149cfd
BM
287 *) Initial experimental support for explicitly trusted non-root CAs.
288 OpenSSL still tries to build a complete chain to a root but if an
289 intermediate CA has a trust setting included that is used. The first
290 setting is used: whether to trust (e.g., -addtrust option to the x509
291 utility) or reject.
292 [Steve Henson]
d65b8b21 293
9d2006d8
DSH
294 *) Add -trusted_first option which attempts to find certificates in the
295 trusted store even if an untrusted chain is also supplied.
296 [Steve Henson]
297
988037fe
AP
298 *) MIPS assembly pack updates: support for MIPS32r2 and SmartMIPS ASE,
299 platform support for Linux and Android.
300 [Andy Polyakov]
301
0e05b51f
AP
302 *) Support for linux-x32, ILP32 environment in x86_64 framework.
303 [Andy Polyakov]
304
1dded7f7
DSH
305 *) Experimental multi-implementation support for FIPS capable OpenSSL.
306 When in FIPS mode the approved implementations are used as normal,
307 when not in FIPS mode the internal unapproved versions are used instead.
308 This means that the FIPS capable OpenSSL isn't forced to use the
309 (often lower perfomance) FIPS implementations outside FIPS mode.
310 [Steve Henson]
311
c3cb0691
DSH
312 *) Transparently support X9.42 DH parameters when calling
313 PEM_read_bio_DHparameters. This means existing applications can handle
314 the new parameter format automatically.
315 [Steve Henson]
316
491734eb
DSH
317 *) Initial experimental support for X9.42 DH parameter format: mainly
318 to support use of 'q' parameter for RFC5114 parameters.
319 [Steve Henson]
320
e811eff5
DSH
321 *) Add DH parameters from RFC5114 including test data to dhtest.
322 [Steve Henson]
323
e46c807e
DSH
324 *) Support for automatic EC temporary key parameter selection. If enabled
325 the most preferred EC parameters are automatically used instead of
326 hardcoded fixed parameters. Now a server just has to call:
327 SSL_CTX_set_ecdh_auto(ctx, 1) and the server will automatically
328 support ECDH and use the most appropriate parameters.
329 [Steve Henson]
330
6b870763
DSH
331 *) Enhance and tidy EC curve and point format TLS extension code. Use
332 static structures instead of allocation if default values are used.
333 New ctrls to set curves we wish to support and to retrieve shared curves.
334 Print out shared curves in s_server. New options to s_server and s_client
335 to set list of supported curves.
336 [Steve Henson]
337
55058181
DSH
338 *) New ctrls to retrieve supported signature algorithms and
339 supported curve values as an array of NIDs. Extend openssl utility
340 to print out received values.
341 [Steve Henson]
342
a068a1d0
DSH
343 *) Add new APIs EC_curve_nist2nid and EC_curve_nid2nist which convert
344 between NIDs and the more common NIST names such as "P-256". Enhance
345 ecparam utility and ECC method to recognise the NIST names for curves.
346 [Steve Henson]
347
37b16c84
DSH
348 *) Enhance SSL/TLS certificate chain handling to support different
349 chains for each certificate instead of one chain in the parent SSL_CTX.
350 [Steve Henson]
351
c523eb98
DSH
352 *) Support for fixed DH ciphersuite client authentication: where both
353 server and client use DH certificates with common parameters.
354 [Steve Henson]
355
0ffa4997
DSH
356 *) Support for fixed DH ciphersuites: those requiring DH server
357 certificates.
358 [Steve Henson]
b9115239 359
e9128d94
EK
360 *) New function i2d_re_X509_tbs for re-encoding the TBS portion of
361 the certificate.
362 Note: Related 1.0.2-beta specific macros X509_get_cert_info,
363 X509_CINF_set_modified, X509_CINF_get_issuer, X509_CINF_get_extensions and
364 X509_CINF_get_signature were reverted post internal team review.
365
5e60396f
MC
366 Changes between 1.0.1h and 1.0.1i [6 Aug 2014]
367
368 *) Fix SRP buffer overrun vulnerability. Invalid parameters passed to the
369 SRP code can be overrun an internal buffer. Add sanity check that
370 g, A, B < N to SRP code.
371
372 Thanks to Sean Devlin and Watson Ladd of Cryptography Services, NCC
373 Group for discovering this issue.
374 (CVE-2014-3512)
375 [Steve Henson]
376
377 *) A flaw in the OpenSSL SSL/TLS server code causes the server to negotiate
378 TLS 1.0 instead of higher protocol versions when the ClientHello message
379 is badly fragmented. This allows a man-in-the-middle attacker to force a
380 downgrade to TLS 1.0 even if both the server and the client support a
381 higher protocol version, by modifying the client's TLS records.
382
383 Thanks to David Benjamin and Adam Langley (Google) for discovering and
384 researching this issue.
385 (CVE-2014-3511)
386 [David Benjamin]
387
388 *) OpenSSL DTLS clients enabling anonymous (EC)DH ciphersuites are subject
389 to a denial of service attack. A malicious server can crash the client
390 with a null pointer dereference (read) by specifying an anonymous (EC)DH
391 ciphersuite and sending carefully crafted handshake messages.
392
393