aboutsummaryrefslogtreecommitdiff
path: root/ChangeLog
blob: 1d224f717857333ab2f4d8f9686fd60b49c0d8d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
Because this project is maintained both in the OpenBSD tree using CVS and in
Git, it can be confusing following all of the changes.

Most of the libssl and libcrypto source code is is here in OpenBSD CVS:

	http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libssl/

Some of the libcrypto and OS-compatibility files for entropy and random number
generation are here:

	http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libcrypto/

A simplified TLS wrapper library is here:

	http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libtls/

The LibreSSL Portable project copies these portions of the OpenBSD tree, along
with relevant portions of the C library, to a Git repository. This makes it
easier to follow all of the relevant changes to the upstream project in a
single place:

	https://github.com/libressl-portable/openbsd

The portable bits of the project are largely maintained out-of-tree, and their
history is also available from Git.

	https://github.com/libressl-portable/portable

LibreSSL Portable Release Notes:

2.2.9 - Security fix

	* Correct a problem that prevents the DSA signing algorithm from
	  running in constant time even if the flag BN_FLG_CONSTTIME is set.
	  This issue was reported by Cesar Pereida (Aalto University), Billy
	  Brumley (Tampere University of Technology), and Yuval Yarom (The
	  University of Adelaide and NICTA). The fix was developed by Cesar
	  Pereida. See OpenBSD 5.8 errata 17, June 6, 2016

2.2.8 - Reliability fix

	* Fixed an error in libcrypto when parsing some ASN.1 elements > 16k.

2.2.7 - Security Update

	* Fix multiple vulnerabilities in libcrypto relating to ASN.1 and encoding.
	From OpenSSL.

2.2.6 - Security Update

	* Deprecated the SSL_OP_SINGLE_DH_USE flag.

2.2.5 - Reliability Update

	* Fixes from OpenSSL 1.0.1q
	 - CVE-2015-3194 - NULL pointer dereference in client side certificate
	                   validation.
	 - CVE-2015-3195 - Memory leak in PKCS7 - not reachable from TLS/SSL

	* The following OpenSSL CVEs did not apply to LibreSSL
	 - CVE-2015-3193 - Carry propagating bug in the x86_64 Montgomery
	                   squaring procedure.
	 - CVE-2015-3196 - Double free race condition of the identify hint
	                   data.

	 See https://marc.info/?l=openbsd-announce&m=144925068504102

2.2.4 - Build and bug fixes

	* Backported build fixes for CMake on Windows, OSX and Linux

	* Fixes for a memory leak and out-of-bounds access in OBJ_obj2txt
	  reported by Qualys Security.
	 - CVE-2015-5333 - memory leak in OBJ_obj2txt
	 - CVE-2015-5334 - 1-byte buffer overflow in OBJ_obj2txt

	 See http://www.openwall.com/lists/oss-security/2015/10/16/1

2.2.3 - Bug fixes, build enhancements

	* LibreSSL 2.2.2 incorrectly handles ClientHello messages that do not
	  include TLS extensions, resulting in such handshakes being aborted.
	  This release corrects the handling of such messages. Thanks to
	  Ligushka from github for reporting the issue.

	* Added install target for cmake builds. Thanks to TheNietsnie from
	  github.

	* Updated pkgconfig files to correctly report the release version
	  number, not the individual library ABI version numbers. Thanks to
	  Jan Engelhardt for reporting the issue.

2.2.2 - More TLS parser rework, bug fixes, expanded portable build support

	* Switched 'openssl dhparam' default from 512 to 2048 bits

	* Reworked openssl(1) option handling

	* More CRYPTO ByteString (CBC) packet parsing conversions

	* Fixed 'openssl pkeyutl -verify' to exit with a 0 on success

	* Fixed dozens of Coverity issues including dead code, memory leaks,
	  logic errors and more.

	* Ensure that openssl(1) restores terminal echo state after reading a
	  password.

	* Incorporated fix for OpenSSL Issue #3683

	* LibreSSL version define LIBRESSL_VERSION_NUMBER will now be bumped
	  for each portable release.

	* Removed workarounds for TLS client padding bugs.

	* No longer disable ECDHE-ECDSA on OS X

	* Removed SSLv3 support from openssl(1)

	* Removed IE 6 SSLv3 workarounds.

	* Modified tls_write in libtls to allow partial writes, clarified with
	  examples in the documentation.

	* Removed RSAX engine

	* Tested SSLv3 removal with the OpenBSD ports tree and found several
	  applications that were not ready to build without SSLv3 yet. For
	  now, building a program that intentionally uses SSLv3 will result in
	  a linker warning.

	* Added TLS_method, TLS_client_method and TLS_server_method as a
	  replacement for the SSLv23_*method calls.

	* Added initial cmake build support, including support for building with
	  Visual Studio, currently tested with Visual Studio 2013 Community
	  Edition.

	* --with-enginesdir is removed as a configuration parameter

	* Default cert.pem, openssl.cnf, and x509v3.cnf files are now
	  installed under $sysconfdir/ssl or the directory specified by
	  --with-openssldir. Previous versions of LibreSSL left these empty.

2.2.1 - Build fixes, feature added, features removed

	* Assorted build fixes for musl, HP-UX, Mingw, Solaris.

	* Initial support for Windows Embedded 2009, Server 2003, XP

	* Protocol parsing conversions to BoringSSL's CRYPTO ByteString (CBS) API

	* Added EC_curve_nid2nist and EC_curve_nist2nid from OpenSSL

	* Removed Dynamic Engine support

	* Removed unused and obsolete MDC-2DES cipher

	* Removed workarounds for obsolete SSL implementations

2.2.0 - Build cleanups and new OS support, Security Updates

	* AIX Support - thanks to Michael Felt

	* Cygwin Support - thanks to Corinna Vinschen

	* Refactored build macros, support packaging libtls independently.
	  There are more pieces required to support building and using OpenSSL
	  with libtls, but this is an initial start at providing an
	  independent package for people to start hacking on.

	* Removal of OPENSSL_issetugid and all library getenv calls.
	  Applications can and should no longer rely on environment variables
	  for changing library behavior. OPENSSL_CONF/SSLEAY_CONF is still
	  supported with the openssl(1) command.

	* libtls API and documentation additions

	* Various bug fixes and simplifications to libssl and libcrypto

	* Fixes for the following issues are integrated into LibreSSL 2.2.0:
	 - CVE-2015-1788 - Malformed ECParameters causes infinite loop
	 - CVE-2015-1789 - Exploitable out-of-bounds read in X509_cmp_time
	 - CVE-2015-1792 - CMS verify infinite loop with unknown hash function

	* The following CVEs did not apply to LibreSSL or were fixed in
	  earlier releases:
	 - CVE-2015-4000 - DHE man-in-the-middle protection (Logjam)
	 - CVE-2015-1790 - PKCS7 crash with missing EnvelopedContent
	 - CVE-2014-8176 - Invalid free in DTLS

	* Fixes for the following CVEs are still in review for LibreSSL
	 - CVE-2015-1791 - Race condition handling NewSessionTicket

2.1.6 - Security update

	* Fixes for the following issues are integrated into LibreSSL 2.1.6:
	  - CVE-2015-0209 - Use After Free following d2i_ECPrivatekey error
	  - CVE-2015-0286 - Segmentation fault in ASN1_TYPE_cmp
	  - CVE-2015-0287 - ASN.1 structure reuse memory corruption
	  - CVE-2015-0288 - X509_to_X509_REQ NULL pointer deref
	  - CVE-2015-0289 - PKCS7 NULL pointer dereferences

	* The fix for CVE-2015-0207 - Segmentation fault in DTLSv1_listen
	  is integrated for safety, but LibreSSL is not vulnerable.

	* Libtls is now built by default. The --enable-libtls
	  configuration option is no longer required.
	  The libtls API is now stable for the 2.1.x series.

2.1.5 - Bug fixes and a security update
	* Fix incorrect comparison function in openssl(1) certhash command.
	  Thanks to Christian Neukirchen / Void Linux.

	* Windows port improvements and bug fixes.
	  - Removed a dependency on libgcc in 32-bit dynamic libraries.
	  - Correct a hang in openssl(1) reading from stdin on an connection.
	  - Initialize winsock in openssl(1) earlier, allow 'openssl ocsp' and
	    any other network-related commands to function properly.

	* Reject all server DH keys smaller than 1024 bits.

2.1.4 - Security and feature updates
	* Improvements to libtls:
	  - a new API for loading CA chains directly from memory instead of a
	    file, allowing verification with privilege separation in a chroot
	    without direct access to CA certificate files.

	  - Ciphers default to TLSv1.2 with AEAD and PFS.

	  - Improved error handling and message generation

	  - New APIs and improved documentation

	* Added X509_STORE_load_mem API for loading certificates from memory.
	  This facilitates accessing certificates from a chrooted environment.

	* New AEAD "MAC alias" allows configuring TLSv1.2 AEAD ciphers by
	  using 'TLSv1.2+AEAD' as the cipher selection string.

	* Dead and disabled code removal including MD5, Netscape workarounds,
	  non-POSIX IO, SCTP, RFC 3779 support, many #if 0 sections, and more.

	* ASN1 macro maze expanded to aid reading and searching the code.

	* NULL pointer asserts removed in favor of letting the OS/signal
	  handler catch them.

	* Refactored argument handling in openssl(1) for consistency and
	  maintainability.

	* New openssl(1) command 'certhash' replaces the c_rehash script.

	* Support for building with OPENSSL_NO_DEPRECATED

	* Server-side support for TLS_FALLBACK_SCSV for compatibility with
	  various auditor and vulnerability scanners.

	* Dozens of issues found with the Coverity scanner fixed.

	* Security Updates:

	  - Fix a minor information leak that was introduced in t1_lib.c
	    r1.71, whereby an additional 28 bytes of .rodata (or .data) is
	    provided to the network. In most cases this is a non-issue since
	    the memory content is already public. Issue found and reported by
	    Felix Groebert of the Google Security Team.

	  - Fixes for the following low-severity issues were integrated into
	    LibreSSL from OpenSSL 1.0.1k:

	     CVE-2015-0205 - DH client certificates accepted without
	                     verification
	     CVE-2014-3570 - Bignum squaring may produce incorrect results
	     CVE-2014-8275 - Certificate fingerprints can be modified
	     CVE-2014-3572 - ECDHE silently downgrades to ECDH [Client]
	     Reported by Karthikeyan Bhargavan of the PROSECCO team at INRIA.

	    The following CVEs were fixed in earlier LibreSSL releases:
	     CVE-2015-0206 - Memory leak handling repeated DLTS records
	     CVE-2014-3510 - Flaw handling DTLS anonymous EC(DH) ciphersuites.

	    The following CVEs did not apply to LibreSSL:
	     CVE-2014-3571 - DTLS segmentation fault in dtls1_get_record
	     CVE-2014-3569 - no-ssl3 configuration sets method to NULL
	     CVE-2015-0204 - RSA silently downgrades to EXPORT_RSA

2.1.3 - Security update and OS support improvements
	* Fixed various memory leaks in DTLS, including fixes for
	  CVE-2015-0206.

	* Added Application-Layer Protocol Negotiation (ALPN) support.

	* Removed GOST R 34.10-94 signature authentication.

	* Removed nonfunctional Netscape browser-hang workaround code.

	* Simplfied and refactored SSL/DTLS handshake code.

	* Added SHA256 Camellia cipher suites for TLS 1.2 from RFC 5932.

	* Hide timing info about padding errors during handshakes.

	* Improved libtls support for non-blocking sockets, added randomized
	  session ID contexts. Work is ongoing with this library - feedback
	  and potential use-cases are welcome.

	* Support building Windows DLLs.
	  Thanks to Jan Engelhard.

	* Packaged config wrapper for better compatibility with OpenSSL-based
	  build systems.
	  Thanks to @technion from github

	* Ensure the stack is marked non-executable for assembly sections.
	  Thanks to Anthony G. Bastile.

	* Enable extra compiler hardening flags by default, where applicable.
	  The default set of hardening features can vary by OS to OS, so
	  feedback is welcome on this. To disable the default hardening flags,
	  specify '--disable-hardening' during configure.
	  Thanks to Jim Barlow

	* Initial HP-UX support, tested with HP-UX 11.31 ia64
	  Thanks to Kinichiro Inoguchi

	* Initial NetBSD support, tested with NetBSD 6.1.5 x86_64
	  Imported from OpenNTPD, thanks to @gitisihara from github

2.1.2 - Many new features and improvements
	* Added reworked GOST cipher suite support
	   thanks to Dmitry Eremin-Solenikov

	* Enabled Camellia ciphers due to improved patent situation

	* Use builtin arc4random implementation on OS X and FreeBSD
	   this addresses some deficiencies in the native implementations of
	   these operating systems, see commit logs for more information

	* Added initial Windows mingw-w64 support (32 and 64-bit)
	   thanks to Song Dongsheng and others for code and feedback

	* Enabled assembly optimizations on x86_64 CPUs
	   supports Linux, *BSD, Solaris and OS X operating systems
	   thanks to Wouter Clarie for the initial implementation

	* Added no_ssl3/no_tls1_1/no_tls1_2 options to openssl(1)

	* Improved build infrastructure, 'make distcheck' now passes
	   this simplifies and speeds developer efficiency
	   thanks to Dmitry Eremin-Solenikov and Wouter Clarie

	* Allow conditional building of the libtls library
	   expect the API and ABI of the library to change
	   feedback is welcome

	* Fixes for more memory leaks, cleanups, etc.

2.1.1 - Security update
	* Address POODLE attack by disabling SSLv3 by default

	* Fix Eliptical Curve cipher selection bug
	  (https://github.com/libressl-portable/portable/issues/35)

2.1.0 - First release from the OpenBSD 5.7 tree
	* Added support for automatic ephemeral EC keys

	* Fixes for many memory leaks and overflows in error handlers

	* The TLS padding extension (that works around bugs in F5 terminators) is
	  off by default

	* support for getrandom(2) on Linux 3.17

	* the NO_ASM macro is no longer being set, providing the first bits toward
	  enabling other assembly offloads.

2.0.5 - Fixes for CVEs from OpenSSL 1.0.1i
	* CVE-2014-3506
	* CVE-2014-3507
	* CVE-2014-3508 (partially vulnerable)he
	* CVE-2014-3509
	* CVE-2014-3510
	* CVE-2014-3511
	* Synced LibreSSL Portable with the release version of OpenBSD 5.6

2.0.4 - Portability fixes, deleted unused SRP code

2.0.3 - Portability fixes, improvements to fork detection

2.0.2 - Address arc4random fork PID wraparound issues with pthread_atfork

2.0.1 - Portability fixes:
	* Removed -Werror and and other non-portable compiler flags

	* Allow setting OPENSSLDIR and ENGINSDIR

2.0.0 - First release from the OpenBSD 5.6 tree
	* Removal of many obsolete features and coding conventions from the OpenSSL
	  1.0.1h source