forked from pool/openssh
e8b9919265
- Fix preauth seccomp separation on mainframes (bsc#1016709) [openssh-7.2p2-s390_hw_crypto_syscalls.patch] [openssh-7.2p2-s390_OpenSSL-ibmpkcs11_syscalls.patch] - enable case-insensitive hostname matching (bsc#1017099) [openssh-7.2p2-ssh_case_insensitive_host_matching.patch] - add CAVS tests [openssh-7.2p2-cavstest-ctr.patch] [openssh-7.2p2-cavstest-kdf.patch] - Adding missing pieces for user matching (bsc#1021626) - Properly verify CIDR masks in configuration (bsc#1005893) [openssh-7.2p2-verify_CIDR_address_ranges.patch] - Remove pre-auth compression support from the server to prevent possible cryptographic attacks. (CVE-2016-10012, bsc#1016370) [openssh-7.2p2-disable_preauth_compression.patch] - limit directories for loading PKCS11 modules (CVE-2016-10009, bsc#1016366) [openssh-7.2p2-restrict_pkcs11-modules.patch] - Prevent possible leaks of host private keys to low-privilege process handling authentication (CVE-2016-10011, bsc#1016369) [openssh-7.2p2-prevent_private_key_leakage.patch] - Do not allow unix socket forwarding when running without privilege separation (CVE-2016-10010, bsc#1016368) [openssh-7.2p2-secure_unix_sockets_forwarding.patch] - prevent resource depletion during key exchange (bsc#1005480, CVE-2016-8858) [openssh-7.2p2-kex_resource_depletion.patch] OBS-URL: https://build.opensuse.org/request/show/500279 OBS-URL: https://build.opensuse.org/package/show/network/openssh?expand=0&rev=117
53 lines
1.3 KiB
Diff
53 lines
1.3 KiB
Diff
# HG changeset patch
|
|
# Parent 9888bc3f536eab9f528d9c96e5e8a2501ed168f5
|
|
Limit accepted passwords length to prevent DoS by resource consumption
|
|
(via crypt() eating CPU cycles).
|
|
|
|
CVE-2016-6515
|
|
bsc#992533
|
|
|
|
upstream commit: fcd135c9df440bcd2d5870405ad3311743d78d97
|
|
|
|
diff --git a/openssh-7.2p2/auth-passwd.c b/openssh-7.2p2/auth-passwd.c
|
|
--- a/openssh-7.2p2/auth-passwd.c
|
|
+++ b/openssh-7.2p2/auth-passwd.c
|
|
@@ -61,16 +61,18 @@ extern ServerOptions options;
|
|
#ifdef HAVE_LOGIN_CAP
|
|
extern login_cap_t *lc;
|
|
#endif
|
|
|
|
|
|
#define DAY (24L * 60 * 60) /* 1 day in seconds */
|
|
#define TWO_WEEKS (2L * 7 * DAY) /* 2 weeks in seconds */
|
|
|
|
+#define MAX_PASSWORD_LEN 1024
|
|
+
|
|
void
|
|
disable_forwarding(void)
|
|
{
|
|
no_port_forwarding_flag = 1;
|
|
no_agent_forwarding_flag = 1;
|
|
no_x11_forwarding_flag = 1;
|
|
}
|
|
|
|
@@ -82,16 +84,19 @@ int
|
|
auth_password(Authctxt *authctxt, const char *password)
|
|
{
|
|
struct passwd * pw = authctxt->pw;
|
|
int result, ok = authctxt->valid;
|
|
#if defined(USE_SHADOW) && defined(HAS_SHADOW_EXPIRE)
|
|
static int expire_checked = 0;
|
|
#endif
|
|
|
|
+ if (strlen(password) > MAX_PASSWORD_LEN)
|
|
+ return 0;
|
|
+
|
|
#ifndef HAVE_CYGWIN
|
|
if (pw->pw_uid == 0 && options.permit_root_login != PERMIT_YES)
|
|
ok = 0;
|
|
#endif
|
|
if (*password == '\0' && options.permit_empty_passwd == 0)
|
|
return 0;
|
|
|
|
#ifdef KRB5
|