summaryrefslogtreecommitdiff
path: root/compat.c
diff options
context:
space:
mode:
authordjm@openbsd.org <djm@openbsd.org>2018-07-03 11:39:54 +0000
committerDamien Miller <djm@mindrot.org>2018-07-03 23:26:36 +1000
commit4ba0d54794814ec0de1ec87987d0c3b89379b436 (patch)
treeb8d904880f8927374b377b2e4d5661213c1138b6 /compat.c
parent95344c257412b51199ead18d54eaed5bafb75617 (diff)
upstream: Improve strictness and control over RSA-SHA2 signature
In ssh, when an agent fails to return a RSA-SHA2 signature when requested and falls back to RSA-SHA1 instead, retry the signature to ensure that the public key algorithm sent in the SSH_MSG_USERAUTH matches the one in the signature itself. In sshd, strictly enforce that the public key algorithm sent in the SSH_MSG_USERAUTH message matches what appears in the signature. Make the sshd_config PubkeyAcceptedKeyTypes and HostbasedAcceptedKeyTypes options control accepted signature algorithms (previously they selected supported key types). This allows these options to ban RSA-SHA1 in favour of RSA-SHA2. Add new signature algorithms "rsa-sha2-256-cert-v01@openssh.com" and "rsa-sha2-512-cert-v01@openssh.com" to force use of RSA-SHA2 signatures with certificate keys. feedback and ok markus@ OpenBSD-Commit-ID: c6e9f6d45eed8962ad502d315d7eaef32c419dde
Diffstat (limited to 'compat.c')
-rw-r--r--compat.c27
1 files changed, 19 insertions, 8 deletions
diff --git a/compat.c b/compat.c
index 1c0e08732..1c9890aa8 100644
--- a/compat.c
+++ b/compat.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: compat.c,v 1.107 2018/04/16 22:50:44 djm Exp $ */ 1/* $OpenBSD: compat.c,v 1.108 2018/07/03 11:39:54 djm Exp $ */
2/* 2/*
3 * Copyright (c) 1999, 2000, 2001, 2002 Markus Friedl. All rights reserved. 3 * Copyright (c) 1999, 2000, 2001, 2002 Markus Friedl. All rights reserved.
4 * 4 *
@@ -52,16 +52,27 @@ compat_datafellows(const char *version)
52 } check[] = { 52 } check[] = {
53 { "OpenSSH_2.*," 53 { "OpenSSH_2.*,"
54 "OpenSSH_3.0*," 54 "OpenSSH_3.0*,"
55 "OpenSSH_3.1*", SSH_BUG_EXTEOF|SSH_OLD_FORWARD_ADDR}, 55 "OpenSSH_3.1*", SSH_BUG_EXTEOF|SSH_OLD_FORWARD_ADDR|
56 { "OpenSSH_3.*", SSH_OLD_FORWARD_ADDR }, 56 SSH_BUG_SIGTYPE},
57 { "Sun_SSH_1.0*", SSH_BUG_NOREKEY|SSH_BUG_EXTEOF}, 57 { "OpenSSH_3.*", SSH_OLD_FORWARD_ADDR|SSH_BUG_SIGTYPE },
58 { "Sun_SSH_1.0*", SSH_BUG_NOREKEY|SSH_BUG_EXTEOF|
59 SSH_BUG_SIGTYPE},
58 { "OpenSSH_2*," 60 { "OpenSSH_2*,"
59 "OpenSSH_3*," 61 "OpenSSH_3*,"
60 "OpenSSH_4*", 0 }, 62 "OpenSSH_4*", SSH_BUG_SIGTYPE },
61 { "OpenSSH_5*", SSH_NEW_OPENSSH|SSH_BUG_DYNAMIC_RPORT}, 63 { "OpenSSH_5*", SSH_NEW_OPENSSH|SSH_BUG_DYNAMIC_RPORT|
62 { "OpenSSH_6.6.1*", SSH_NEW_OPENSSH}, 64 SSH_BUG_SIGTYPE},
65 { "OpenSSH_6.6.1*", SSH_NEW_OPENSSH|SSH_BUG_SIGTYPE},
63 { "OpenSSH_6.5*," 66 { "OpenSSH_6.5*,"
64 "OpenSSH_6.6*", SSH_NEW_OPENSSH|SSH_BUG_CURVE25519PAD}, 67 "OpenSSH_6.6*", SSH_NEW_OPENSSH|SSH_BUG_CURVE25519PAD|
68 SSH_BUG_SIGTYPE},
69 { "OpenSSH_7.0*,"
70 "OpenSSH_7.1*,"
71 "OpenSSH_7.2*,"
72 "OpenSSH_7.3*,"
73 "OpenSSH_7.4*,"
74 "OpenSSH_7.5*,"
75 "OpenSSH_7.6*", SSH_NEW_OPENSSH|SSH_BUG_SIGTYPE},
65 { "OpenSSH*", SSH_NEW_OPENSSH }, 76 { "OpenSSH*", SSH_NEW_OPENSSH },
66 { "*MindTerm*", 0 }, 77 { "*MindTerm*", 0 },
67 { "3.0.*", SSH_BUG_DEBUG }, 78 { "3.0.*", SSH_BUG_DEBUG },