summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Miller <djm@mindrot.org>2014-04-20 13:17:20 +1000
committerDamien Miller <djm@mindrot.org>2014-04-20 13:17:20 +1000
commit9235a030ad1b16903fb495d81544e0f7c7449523 (patch)
tree3cb61622daa8f3b0caf0e53fd8bfab5534def35e
parent6e1777f592f15f4559728c78204617537b1ac076 (diff)
Three commits in one (since they touch the same heavily-diverged file
repeatedly): - markus@cvs.openbsd.org 2014/03/25 09:40:03 [myproposal.h] trimm default proposals. This commit removes the weaker pre-SHA2 hashes, the broken ciphers (arcfour), and the broken modes (CBC) from the default configuration (the patch only changes the default, all the modes are still available for the config files). ok djm@, reminded by tedu@ & naddy@ and discussed with many - deraadt@cvs.openbsd.org 2014/03/26 17:16:26 [myproposal.h] The current sharing of myproposal[] between both client and server code makes the previous diff highly unpallatable. We want to go in that direction for the server, but not for the client. Sigh. Brought up by naddy. - markus@cvs.openbsd.org 2014/03/27 23:01:27 [myproposal.h ssh-keyscan.c sshconnect2.c sshd.c] disable weak proposals in sshd, but keep them in ssh; ok djm@
-rw-r--r--ChangeLog19
-rw-r--r--myproposal.h69
-rw-r--r--ssh-keyscan.c3
-rw-r--r--sshconnect2.c3
-rw-r--r--sshd.c3
5 files changed, 67 insertions, 30 deletions
diff --git a/ChangeLog b/ChangeLog
index a12c4b98..a26c4896 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -32,6 +32,25 @@
[scp.1]
there is no need for rcp anymore
ok deraadt millert
+ - markus@cvs.openbsd.org 2014/03/25 09:40:03
+ [myproposal.h]
+ trimm default proposals.
+
+ This commit removes the weaker pre-SHA2 hashes, the broken ciphers
+ (arcfour), and the broken modes (CBC) from the default configuration
+ (the patch only changes the default, all the modes are still available
+ for the config files).
+
+ ok djm@, reminded by tedu@ & naddy@ and discussed with many
+ - deraadt@cvs.openbsd.org 2014/03/26 17:16:26
+ [myproposal.h]
+ The current sharing of myproposal[] between both client and server code
+ makes the previous diff highly unpallatable. We want to go in that
+ direction for the server, but not for the client. Sigh.
+ Brought up by naddy.
+ - markus@cvs.openbsd.org 2014/03/27 23:01:27
+ [myproposal.h ssh-keyscan.c sshconnect2.c sshd.c]
+ disable weak proposals in sshd, but keep them in ssh; ok djm@
20140401
- (djm) On platforms that support it, use prctl() to prevent sftp-server
diff --git a/myproposal.h b/myproposal.h
index 3a0f5aea..94d6f706 100644
--- a/myproposal.h
+++ b/myproposal.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: myproposal.h,v 1.35 2013/12/06 13:39:49 markus Exp $ */
+/* $OpenBSD: myproposal.h,v 1.38 2014/03/27 23:01:27 markus Exp $ */
/*
* Copyright (c) 2000 Markus Friedl. All rights reserved.
@@ -69,23 +69,22 @@
#ifdef HAVE_EVP_SHA256
# define KEX_SHA256_METHODS \
"diffie-hellman-group-exchange-sha256,"
-#define KEX_CURVE25519_METHODS \
- "curve25519-sha256@libssh.org,"
#define SHA2_HMAC_MODES \
"hmac-sha2-256," \
"hmac-sha2-512,"
#else
# define KEX_SHA256_METHODS
-# define KEX_CURVE25519_METHODS
# define SHA2_HMAC_MODES
#endif
-# define KEX_DEFAULT_KEX \
- KEX_CURVE25519_METHODS \
+#define KEX_SERVER_KEX \
+ "curve25519-sha256@libssh.org," \
KEX_ECDH_METHODS \
KEX_SHA256_METHODS \
+ "diffie-hellman-group14-sha1"
+
+#define KEX_CLIENT_KEX KEX_SERVER_KEX "," \
"diffie-hellman-group-exchange-sha1," \
- "diffie-hellman-group14-sha1," \
"diffie-hellman-group1-sha1"
#define KEX_DEFAULT_PK_ALG \
@@ -102,29 +101,34 @@
/* the actual algorithms */
-#define KEX_DEFAULT_ENCRYPT \
+#define KEX_SERVER_ENCRYPT \
"aes128-ctr,aes192-ctr,aes256-ctr," \
- "arcfour256,arcfour128," \
AESGCM_CIPHER_MODES \
- "chacha20-poly1305@openssh.com," \
+ "chacha20-poly1305@openssh.com"
+
+#define KEX_CLIENT_ENCRYPT KEX_SERVER_ENCRYPT "," \
+ "arcfour256,arcfour128," \
"aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc," \
"aes192-cbc,aes256-cbc,arcfour,rijndael-cbc@lysator.liu.se"
-#define KEX_DEFAULT_MAC \
- "hmac-md5-etm@openssh.com," \
- "hmac-sha1-etm@openssh.com," \
+#define KEX_SERVER_MAC \
"umac-64-etm@openssh.com," \
"umac-128-etm@openssh.com," \
"hmac-sha2-256-etm@openssh.com," \
"hmac-sha2-512-etm@openssh.com," \
+ "umac-64@openssh.com," \
+ "umac-128@openssh.com," \
+ "hmac-sha2-256," \
+ "hmac-sha2-512"
+
+#define KEX_CLIENT_MAC KEX_SERVER_MAC "," \
+ "hmac-md5-etm@openssh.com," \
+ "hmac-sha1-etm@openssh.com," \
"hmac-ripemd160-etm@openssh.com," \
"hmac-sha1-96-etm@openssh.com," \
"hmac-md5-96-etm@openssh.com," \
"hmac-md5," \
"hmac-sha1," \
- "umac-64@openssh.com," \
- "umac-128@openssh.com," \
- SHA2_HMAC_MODES \
"hmac-ripemd160," \
"hmac-ripemd160@openssh.com," \
"hmac-sha1-96," \
@@ -133,16 +137,27 @@
#define KEX_DEFAULT_COMP "none,zlib@openssh.com,zlib"
#define KEX_DEFAULT_LANG ""
+#define KEX_CLIENT \
+ KEX_CLIENT_KEX, \
+ KEX_DEFAULT_PK_ALG, \
+ KEX_CLIENT_ENCRYPT, \
+ KEX_CLIENT_ENCRYPT, \
+ KEX_CLIENT_MAC, \
+ KEX_CLIENT_MAC, \
+ KEX_DEFAULT_COMP, \
+ KEX_DEFAULT_COMP, \
+ KEX_DEFAULT_LANG, \
+ KEX_DEFAULT_LANG
-static char *myproposal[PROPOSAL_MAX] = {
- KEX_DEFAULT_KEX,
- KEX_DEFAULT_PK_ALG,
- KEX_DEFAULT_ENCRYPT,
- KEX_DEFAULT_ENCRYPT,
- KEX_DEFAULT_MAC,
- KEX_DEFAULT_MAC,
- KEX_DEFAULT_COMP,
- KEX_DEFAULT_COMP,
- KEX_DEFAULT_LANG,
+#define KEX_SERVER \
+ KEX_SERVER_KEX, \
+ KEX_DEFAULT_PK_ALG, \
+ KEX_SERVER_ENCRYPT, \
+ KEX_SERVER_ENCRYPT, \
+ KEX_SERVER_MAC, \
+ KEX_SERVER_MAC, \
+ KEX_DEFAULT_COMP, \
+ KEX_DEFAULT_COMP, \
+ KEX_DEFAULT_LANG, \
KEX_DEFAULT_LANG
-};
+
diff --git a/ssh-keyscan.c b/ssh-keyscan.c
index 5d77dcfd..de456364 100644
--- a/ssh-keyscan.c
+++ b/ssh-keyscan.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ssh-keyscan.c,v 1.90 2014/03/12 04:44:58 djm Exp $ */
+/* $OpenBSD: ssh-keyscan.c,v 1.91 2014/03/27 23:01:27 markus Exp $ */
/*
* Copyright 1995, 1996 by David Mazieres <dm@lcs.mit.edu>.
*
@@ -242,6 +242,7 @@ ssh2_capable(int remote_major, int remote_minor)
static Key *
keygrab_ssh2(con *c)
{
+ char *myproposal[PROPOSAL_MAX] = { KEX_CLIENT };
int j;
packet_set_connection(c->c_fd, c->c_fd);
diff --git a/sshconnect2.c b/sshconnect2.c
index 7f4ff418..f123194b 100644
--- a/sshconnect2.c
+++ b/sshconnect2.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshconnect2.c,v 1.204 2014/02/02 03:44:32 djm Exp $ */
+/* $OpenBSD: sshconnect2.c,v 1.205 2014/03/27 23:01:27 markus Exp $ */
/*
* Copyright (c) 2000 Markus Friedl. All rights reserved.
* Copyright (c) 2008 Damien Miller. All rights reserved.
@@ -156,6 +156,7 @@ order_hostkeyalgs(char *host, struct sockaddr *hostaddr, u_short port)
void
ssh_kex2(char *host, struct sockaddr *hostaddr, u_short port)
{
+ char *myproposal[PROPOSAL_MAX] = { KEX_CLIENT };
Kex *kex;
xxx_host = host;
diff --git a/sshd.c b/sshd.c
index 7523de97..045f1494 100644
--- a/sshd.c
+++ b/sshd.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshd.c,v 1.420 2014/02/26 21:53:37 markus Exp $ */
+/* $OpenBSD: sshd.c,v 1.422 2014/03/27 23:01:27 markus Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
* Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
@@ -2437,6 +2437,7 @@ sshd_hostkey_sign(Key *privkey, Key *pubkey, u_char **signature, u_int *slen,
static void
do_ssh2_kex(void)
{
+ char *myproposal[PROPOSAL_MAX] = { KEX_SERVER };
Kex *kex;
if (options.ciphers != NULL) {