David Benjamin [Wed, 23 Jul 2014 20:32:21 +0000 (22:32 +0200)]
Fix protocol downgrade bug in case of fragmented packets
CVE-2014-3511
Reviewed-by: Emilia Käsper <emilia@openssl.org>
Reviewed-by: Bodo Möller <bodo@openssl.org>
Adam Langley [Fri, 6 Jun 2014 21:47:07 +0000 (14:47 -0700)]
Remove some duplicate DTLS code.
In a couple of functions, a sequence number would be calculated twice.
Additionally, in |dtls1_process_out_of_seq_message|, we know that
|frag_len| <= |msg_hdr->msg_len| so the later tests for |frag_len <
msg_hdr->msg_len| can be more clearly written as |frag_len !=
msg_hdr->msg_len|, since that's the only remaining case.
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Emilia Käsper <emilia@openssl.org>
Matt Caswell [Thu, 24 Jul 2014 22:54:28 +0000 (23:54 +0100)]
Applying same fix as in dtls1_process_out_of_seq_message. A truncated DTLS fragment would cause *ok to be clear, but the return value would still be the number of bytes read.
Problem identified by Emilia Käsper, based on previous issue/patch by Adam
Langley.
Reviewed-by: Emilia Käsper <emilia@openssl.org>
Adam Langley [Fri, 6 Jun 2014 21:44:20 +0000 (14:44 -0700)]
Fix return code for truncated DTLS fragment.
Previously, a truncated DTLS fragment in
|dtls1_process_out_of_seq_message| would cause *ok to be cleared, but
the return value would still be the number of bytes read. This would
cause |dtls1_get_message| not to consider it an error and it would
continue processing as normal until the calling function noticed that
*ok was zero.
I can't see an exploit here because |dtls1_get_message| uses
|s->init_num| as the length, which will always be zero from what I can
see.
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Emilia Käsper <emilia@openssl.org>
Adam Langley [Fri, 6 Jun 2014 21:30:33 +0000 (14:30 -0700)]
Fix memory leak from zero-length DTLS fragments.
The |pqueue_insert| function can fail if one attempts to insert a
duplicate sequence number. When handling a fragment of an out of
sequence message, |dtls1_process_out_of_seq_message| would not call
|dtls1_reassemble_fragment| if the fragment's length was zero. It would
then allocate a fresh fragment and attempt to insert it, but ignore the
return value, leaking the fragment.
This allows an attacker to exhaust the memory of a DTLS peer.
Fixes CVE-2014-3507
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Emilia Käsper <emilia@openssl.org>
Matt Caswell [Fri, 6 Jun 2014 21:25:52 +0000 (14:25 -0700)]
Fix DTLS handshake message size checks.
In |dtls1_reassemble_fragment|, the value of
|msg_hdr->frag_off+frag_len| was being checked against the maximum
handshake message size, but then |msg_len| bytes were allocated for the
fragment buffer. This means that so long as the fragment was within the
allowed size, the pending handshake message could consume 16MB + 2MB
(for the reassembly bitmap). Approx 10 outstanding handshake messages
are allowed, meaning that an attacker could consume ~180MB per DTLS
connection.
In the non-fragmented path (in |dtls1_process_out_of_seq_message|), no
check was applied.
Fixes CVE-2014-3506
Wholly based on patch by Adam Langley with one minor amendment.
Reviewed-by: Emilia Käsper <emilia@openssl.org>
Matt Caswell [Thu, 24 Jul 2014 22:33:34 +0000 (23:33 +0100)]
Added comment for the frag->reassembly == NULL case as per feedback from Emilia
Reviewed-by: Emilia Käsper <emilia@openssl.org>
Adam Langley [Fri, 6 Jun 2014 21:19:21 +0000 (14:19 -0700)]
Avoid double free when processing DTLS packets.
The |item| variable, in both of these cases, may contain a pointer to a
|pitem| structure within |s->d1->buffered_messages|. It was being freed
in the error case while still being in |buffered_messages|. When the
error later caused the |SSL*| to be destroyed, the item would be double
freed.
Thanks to Wah-Teh Chang for spotting that the fix in
1632ef74 was
inconsistent with the other error paths (but correct).
Fixes CVE-2014-3505
Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Emilia Käsper <emilia@openssl.org>
Bodo Moeller [Fri, 1 Aug 2014 17:02:10 +0000 (19:02 +0200)]
Update $default_depflags to match current defaults.
Bodo Moeller [Fri, 1 Aug 2014 16:41:17 +0000 (18:41 +0200)]
Sync with clean-up 1.0.2 CHANGES file.
(If a change is already present in 1.0.1f or 1.0.1h,
don't list it again under changes between 1.0.1h and 1.0.2.)
Bodo Moeller [Fri, 1 Aug 2014 16:18:52 +0000 (18:18 +0200)]
Sync with current 1.0.2 CHANGES file.
Bodo Moeller [Fri, 1 Aug 2014 15:18:14 +0000 (17:18 +0200)]
Simplify and fix ec_GFp_simple_points_make_affine
(which didn't always handle value 0 correctly).
Reviewed-by: emilia@openssl.org
Dr. Stephen Henson [Wed, 23 Jul 2014 12:18:06 +0000 (13:18 +0100)]
Add conditional unit testing interface.
Don't call internal functions directly call them through
SSL_test_functions(). This also makes unit testing work on
Windows and platforms that don't export internal functions
from shared libraries.
By default unit testing is not enabled: it requires the compile
time option "enable-unit-test".
Reviewed-by: Geoff Thorpe <geoff@openssl.org>
Dr. Stephen Henson [Wed, 23 Jul 2014 16:19:48 +0000 (17:19 +0100)]
Don't call setenv in gost2814789t.c
The call to setenv in gost2814789t.c is not portable and may
not reflect the location of the GOST ENGINE on all platforms anyway.
Instead set OPENSSL_ENGINES in test/Makefile
Reviewed-by: Geoff Thorpe <geoff@openssl.org>
Geoff Thorpe [Mon, 21 Jul 2014 13:27:54 +0000 (09:27 -0400)]
Remove demos/tunala
This has been unmaintained for a long time. If it's still of interest
to anyone, it can be obtained easily enough by reverting this commit.
(It could join other demo code in some other repository, perhaps.) In
any case we don't want it taking up space in the baseline source
package, so <snip>.
Signed-off-by: Geoff Thorpe <geoff@openssl.org>
Andy Polyakov [Tue, 22 Jul 2014 18:19:37 +0000 (20:19 +0200)]
CHANGES: mention new platforms.
Reviewed-by: Dr. Stephen Henson <steve@openssl.org>
Billy Brumley [Mon, 21 Jul 2014 21:08:23 +0000 (22:08 +0100)]
"EC_POINT_invert" was checking "dbl" function pointer instead of "invert".
PR#2569
Reviewed-by: Rich Salz <rsalz@openssl.org>
Tim Hudson [Mon, 21 Jul 2014 19:26:17 +0000 (05:26 +1000)]
Remove old unused and unmaintained demonstration code.
Reviewed-by: Dr. Stephen Henson <steve@openssl.org>
Andy Polyakov [Mon, 21 Jul 2014 13:29:09 +0000 (15:29 +0200)]
sha1-ppc.pl: shave off one cycle from BODY_20_39
and improve performance by 10% on POWER[78].
Reviewed-by: Kurt Roeckx <kurt@openssl.org>
Tim Hudson [Mon, 21 Jul 2014 10:03:50 +0000 (20:03 +1000)]
Minor documentation update removing "really" and a
statement of opinion rather than a fact.
Reviewed-by: Dr. Stephen Henson <steve@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
Dr. Stephen Henson [Sun, 20 Jul 2014 11:54:39 +0000 (12:54 +0100)]
Add test header, sync ordinals with 1.0.2
Reviewed-by: Tim Hudson <tjh@openssl.org>
Andy Polyakov [Sun, 20 Jul 2014 12:16:31 +0000 (14:16 +0200)]
Engage GHASH for PowerISA 2.0.7.
[and split ppccap.c to ppccap.c and ppc_arch.h]
Reviewed-by: Kurt Roeckx <kurt@openssl.org>
Reviewed-by: Tim Hudson <tjh@openssl.org>
Andy Polyakov [Sun, 20 Jul 2014 12:14:26 +0000 (14:14 +0200)]
Add GHASH for PowerISA 2.0.7.
Reviewed-by: Tim Hudson <tjh@openssl.org>
Dr. Stephen Henson [Sat, 19 Jul 2014 20:46:40 +0000 (21:46 +0100)]
Windows build fixes.
Add cmac.h to mkdef.pl
Remove ENGINE_load_rsax from engine.h: no longer built.
Update ordinals
Reviewed-by: Tim Hudson <tjh@openssl.org>
Dr. Stephen Henson [Sat, 19 Jul 2014 13:20:05 +0000 (14:20 +0100)]
Fix documentation for RSA_set_method(3)
PR#1675
Reviewed-by: Matt Caswell <matt@openssl.org>
Mike Bland [Thu, 17 Jul 2014 23:08:04 +0000 (19:08 -0400)]
Check the test registry size during add_test()
Reviewed-by: Tim Hudson <tjh@openssl.org>
Mike Bland [Wed, 18 Jun 2014 21:00:41 +0000 (17:00 -0400)]
Update heartbeat_test #includes
ssl/ssl_locl.h now comes first to ensure that it will compile standalone.
test/testutil.h is considered to be in the same directory as the test file,
since the test file will be linked into test/ and built there.
Reviewed-by: Tim Hudson <tjh@openssl.org>
Mike Bland [Tue, 15 Jul 2014 22:55:55 +0000 (18:55 -0400)]
Use testutil registry in heartbeat_test
Reviewed-by: Tim Hudson <tjh@openssl.org>
Mike Bland [Thu, 19 Jun 2014 16:27:54 +0000 (12:27 -0400)]
test/testutil.c test registry functions.
These help standardize the structure of main() and result reporting.
Reviewed-by: Tim Hudson <tjh@openssl.org>
Dr. Stephen Henson [Fri, 18 Jul 2014 12:52:03 +0000 (13:52 +0100)]
RFC 5649 support.
Add support for RFC5649 key wrapping with padding.
Add RFC5649 tests to evptests.txt
Based on PR#3434 contribution by Petr Spacek <pspacek@redhat.com>.
EVP support and minor changes added by Stephen Henson.
Doxygen comment block updates by Tim Hudson.
Reviewed-by: Tim Hudson <tjh@openssl.org>
Dr. Stephen Henson [Thu, 17 Jul 2014 21:27:50 +0000 (22:27 +0100)]
Make *Final work for key wrap again.
Reviewed-by: Tim Hudson <tjh@openssl.org>
Dr. Stephen Henson [Thu, 17 Jul 2014 01:50:48 +0000 (02:50 +0100)]
Sanity check lengths for AES wrap algorithm.
Reviewed-by: Tim Hudson <tjh@openssl.org>
Jeffrey Walton [Thu, 17 Jul 2014 10:25:02 +0000 (11:25 +0100)]
Fix typo, add reference.
PR#3456
Reviewed-by: Stephen Henson <steve@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
Matt Caswell [Sun, 13 Jul 2014 22:28:13 +0000 (23:28 +0100)]
Disabled XTS mode in enc utility as it is not supported
PR#3442
Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
Andy Polyakov [Wed, 16 Jul 2014 11:38:15 +0000 (13:38 +0200)]
Revert "Add GHASH for PowerISA 2.07."
This reverts commit
927f2e5dea1da17bcc2c3d2baf7258318b57515c.
Andy Polyakov [Wed, 16 Jul 2014 11:37:37 +0000 (13:37 +0200)]
Revert "Engage GHASH for PowerISA 2.07."
This reverts commit
14aaf883d93fb2e321ef1fe25f687fb7b62ef8fe.
Andy Polyakov [Wed, 16 Jul 2014 06:03:34 +0000 (08:03 +0200)]
Engage GHASH for PowerISA 2.07.
Andy Polyakov [Wed, 16 Jul 2014 06:01:41 +0000 (08:01 +0200)]
Add GHASH for PowerISA 2.07.
Matt Caswell [Tue, 15 Jul 2014 21:47:29 +0000 (22:47 +0100)]
Add Matt Caswell's fingerprint, and general update on the fingerprints file to bring it up to date
Reviewed-by: Tim Hudson <tjh@openssl.org>
Dr. Stephen Henson [Tue, 15 Jul 2014 19:22:39 +0000 (20:22 +0100)]
Clarify -Verify and PSK.
PR#3452
Dr. Stephen Henson [Tue, 15 Jul 2014 17:21:59 +0000 (18:21 +0100)]
Fix DTLS certificate requesting code.
Use same logic when determining when to expect a client
certificate for both TLS and DTLS.
PR#3452
Dr. Stephen Henson [Tue, 15 Jul 2014 11:22:49 +0000 (12:22 +0100)]
Don't allow -www etc options with DTLS.
The options which emulate a web server don't make sense when doing DTLS.
Exit with an error if an attempt is made to use them.
PR#3453
Rich Salz [Tue, 15 Jul 2014 04:05:43 +0000 (00:05 -0400)]
Merge branch 'master' of git.openssl.org:openssl
Dr. Stephen Henson [Mon, 14 Jul 2014 22:59:13 +0000 (23:59 +0100)]
Use case insensitive compare for servername.
PR#3445
Hubert Kario [Fri, 6 Jun 2014 14:48:43 +0000 (16:48 +0200)]
document -nextprotoneg option in man pages
Add description of the option to advertise support of
Next Protocol Negotiation extension (-nextprotoneg) to
man pages of s_client and s_server.
PR#3444
Dr. Stephen Henson [Mon, 14 Jul 2014 14:05:50 +0000 (15:05 +0100)]
Use more common name for GOST key exchange.
Dr. Stephen Henson [Mon, 14 Jul 2014 14:04:17 +0000 (15:04 +0100)]
Fix typo.
Rich Salz [Mon, 14 Jul 2014 15:27:16 +0000 (11:27 -0400)]
Add tags/TAGS; approved by tjh
Matt Caswell [Thu, 10 Jul 2014 22:47:31 +0000 (23:47 +0100)]
Fixed valgrind complaint due to BN_consttime_swap reading uninitialised data.
This is actually ok for this function, but initialised to zero anyway if
PURIFY defined.
This does have the impact of masking any *real* unitialised data reads in bn though.
Patch based on approach suggested by Rich Salz.
PR#3415
Peter Mosmans [Sun, 13 Jul 2014 17:30:07 +0000 (18:30 +0100)]
Add names of GOST algorithms.
PR#3440
Richard Levitte [Sun, 13 Jul 2014 17:11:29 +0000 (19:11 +0200)]
* crypto/ui/ui_lib.c: misplaced brace in switch statement.
Detected by dcruette@qualitesys.com
Ben Laurie [Thu, 10 Jul 2014 16:47:48 +0000 (17:47 +0100)]
Don't clean up uninitialised EVP_CIPHER_CTX on error (CID 483259).
Matt Caswell [Wed, 9 Jul 2014 22:29:17 +0000 (23:29 +0100)]
Fix memory leak in BIO_free if there is no destroy function.
Based on an original patch by Neitrino Photonov <neitrinoph@gmail.com>
PR#3439
Andy Polyakov [Wed, 9 Jul 2014 18:08:01 +0000 (20:08 +0200)]
x86_64 assembly pack: improve masm support.
Andy Polyakov [Tue, 8 Jul 2014 21:06:59 +0000 (23:06 +0200)]
Please Clang's sanitizer, addendum.
Andy Polyakov [Tue, 8 Jul 2014 20:24:44 +0000 (22:24 +0200)]
Please Clang's sanitizer.
PR: #3424,#3423,#3422
Andy Polyakov [Mon, 7 Jul 2014 15:02:26 +0000 (17:02 +0200)]
apps/speed.c: fix compiler warnings in multiblock_speed().
Andy Polyakov [Mon, 7 Jul 2014 15:01:07 +0000 (17:01 +0200)]
sha[1|512]-x86_64.pl: fix logical errors with $shaext=0.
David Lloyd [Mon, 7 Jul 2014 12:11:48 +0000 (13:11 +0100)]
Prevent infinite loop loading config files.
PR#2985
Viktor Dukhovni [Mon, 7 Jul 2014 10:34:06 +0000 (20:34 +1000)]
Improve X509_check_host() documentation.
Based on feedback from Jeffrey Walton.
Viktor Dukhovni [Mon, 7 Jul 2014 09:11:38 +0000 (19:11 +1000)]
Update API to use (char *) for email addresses and hostnames
Reduces number of silly casts in OpenSSL code and likely most
applications. Consistent with (char *) for "peername" value from
X509_check_host() and X509_VERIFY_PARAM_get0_peername().
Dr. Stephen Henson [Sun, 6 Jul 2014 21:33:35 +0000 (22:33 +0100)]
Usage for -hack and -prexit -verify_return_error
Dr. Stephen Henson [Sun, 6 Jul 2014 21:16:21 +0000 (22:16 +0100)]
Document certificate status request options.
Dr. Stephen Henson [Sun, 6 Jul 2014 21:23:01 +0000 (22:23 +0100)]
s_server usage for certificate status requests
Dr. Stephen Henson [Sat, 5 Jul 2014 23:32:44 +0000 (00:32 +0100)]
Sanity check keylength in PVK files.
PR#2277
Jeffrey Walton [Sat, 5 Jul 2014 21:39:08 +0000 (22:39 +0100)]
Added reference to platform specific cryptographic acceleration such as AES-NI
Matt Caswell [Sat, 5 Jul 2014 21:31:05 +0000 (22:31 +0100)]
Fixed error in pod files with latest versions of pod2man
Andy Polyakov [Sat, 5 Jul 2014 21:59:57 +0000 (23:59 +0200)]
sha512-x86_64.pl: fix typo.
PR: #3431
Andy Polyakov [Sat, 5 Jul 2014 21:56:54 +0000 (23:56 +0200)]
s3_pkt.c: fix typo.
Andy Polyakov [Sat, 5 Jul 2014 21:53:55 +0000 (23:53 +0200)]
apps/speed.c: add multi-block benchmark.
Alan Hryngle [Sat, 5 Jul 2014 21:24:03 +0000 (22:24 +0100)]
Return smaller of ret and f.
PR#3418.
Viktor Dukhovni [Sat, 5 Jul 2014 15:47:29 +0000 (01:47 +1000)]
Set optional peername when X509_check_host() succeeds.
Pass address of X509_VERIFY_PARAM_ID peername to X509_check_host().
Document modified interface.
Viktor Dukhovni [Sat, 5 Jul 2014 15:44:30 +0000 (01:44 +1000)]
New peername element in X509_VERIFY_PARAM_ID
Declaration, memory management, accessor and documentation.
Ben Laurie [Sat, 5 Jul 2014 13:59:33 +0000 (14:59 +0100)]
Reduce casting nastiness.
Ben Laurie [Sat, 5 Jul 2014 13:54:02 +0000 (14:54 +0100)]
Reduce casting nastiness.
Dr. Stephen Henson [Sat, 5 Jul 2014 12:19:12 +0000 (13:19 +0100)]
Don't limit message sizes in ssl3_get_cert_verify.
PR#319 (reoponed version).
Dr. Stephen Henson [Fri, 4 Jul 2014 17:41:45 +0000 (18:41 +0100)]
Add license info.
Dr. Stephen Henson [Fri, 4 Jul 2014 12:50:26 +0000 (13:50 +0100)]
Dr. Stephen Henson [Fri, 4 Jul 2014 12:26:35 +0000 (13:26 +0100)]
Remove all RFC5878 code.
Remove RFC5878 code. It is no longer needed for CT and has numerous bugs
Dr. Stephen Henson [Thu, 3 Jul 2014 13:50:08 +0000 (14:50 +0100)]
Update ticket callback docs.
Rich Salz [Thu, 3 Jul 2014 04:07:04 +0000 (00:07 -0400)]
Close 3170, remove reference to Ariel Glenn's old 0.9.8 doc
Rich Salz [Thu, 3 Jul 2014 03:38:34 +0000 (23:38 -0400)]
RT 1638; EVP_*Final() should mention they no longer cleanup the ctx.
Rich Salz [Thu, 3 Jul 2014 03:18:39 +0000 (23:18 -0400)]
RT3408; fix some (not all suggested) typo's in openssl.cnf
Rich Salz [Thu, 3 Jul 2014 02:44:53 +0000 (22:44 -0400)]
Merge branch 'rsalz-docfixes'
Rich Salz [Thu, 3 Jul 2014 02:42:40 +0000 (22:42 -0400)]
Close a whole bunch of documentation-related tickets:
298 424 656 882 939 1630 1807 2263 2294 2311 2424 2623
2637 2686 2697 2921 2922 2940 3055 3112 3156 3177 3277
Andy Polyakov [Wed, 2 Jul 2014 20:30:54 +0000 (22:30 +0200)]
e_os.h: limit _MSC_VER trickery to older compilers.
PR: #3390
Andy Polyakov [Wed, 2 Jul 2014 17:35:50 +0000 (19:35 +0200)]
bn_exp.c: fix x86_64-specific crash with one-word modulus.
PR: #3397
Matt Smart [Wed, 2 Jul 2014 02:43:42 +0000 (03:43 +0100)]
Fix doc typo.
ERR_get_error(3) references the non-existent
ERR_get_last_error_line_data instead of the one that does exist,
ERR_peek_last_error_line_data.
PR#3283
Thijs Alkemade [Wed, 2 Jul 2014 02:32:19 +0000 (03:32 +0100)]
Make disabling last cipher work.
Dr. Stephen Henson [Tue, 1 Jul 2014 23:57:57 +0000 (00:57 +0100)]
ASN1 sanity check.
Primitive encodings shouldn't use indefinite length constructed
form.
PR#2438 (partial).
Libor Krystek [Tue, 1 Jul 2014 23:30:13 +0000 (00:30 +0100)]
Add support for SHA2 in CAPI ENGINE.
PR#2706 though patch is from PR#3366.
Ben Laurie [Wed, 23 Apr 2014 17:13:20 +0000 (18:13 +0100)]
Fix possible buffer overrun.
(cherry picked from commit
2db3ea29298bdc347f15fbfab6d5746022f05101)
Conflicts:
ssl/t1_lib.c
Rich Salz [Tue, 1 Jul 2014 17:22:38 +0000 (13:22 -0400)]
RT 1528; misleading debug print, "pre-master" should be "master key"
Andy Polyakov [Tue, 1 Jul 2014 17:11:11 +0000 (19:11 +0200)]
perlasm/ppc-xlate.pl update.
Andy Polyakov [Tue, 1 Jul 2014 17:07:49 +0000 (19:07 +0200)]
Engage SHA256/512 for PowerISA 2.07.
Andy Polyakov [Tue, 1 Jul 2014 17:06:03 +0000 (19:06 +0200)]
Add SHA256/512 for PowerISA 2.07.
Rich Salz [Tue, 1 Jul 2014 17:06:18 +0000 (13:06 -0400)]
RT 1530; fix incorrect comment
Rich Salz [Tue, 1 Jul 2014 17:02:57 +0000 (13:02 -0400)]
RT 1229; typo in comment "dont't"->"don't"
Rich Salz [Tue, 1 Jul 2014 17:00:18 +0000 (13:00 -0400)]
RT 3245; it's "bitwise or" not "logical or"
Rich Salz [Tue, 1 Jul 2014 16:55:32 +0000 (12:55 -0400)]
Fix RT 3211; "and are" -->"are"