[14895] in bugtraq

home help back first fref pref prev next nref lref last post

Re: [cert] SSH Authentication Vulnerability

daemon@ATHENA.MIT.EDU (Ignacio Kadel-Garcia)
Mon May 15 04:12:27 2000

Mime-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Message-Id:  <Pine.LNX.4.04.10005110831180.13595-100000@crabcake.kendall.akamai.com>
Date:         Thu, 11 May 2000 08:41:19 -0400
Reply-To: Ignacio Kadel-Garcia <raoul@AKAMAI.COM>
From: Ignacio Kadel-Garcia <raoul@AKAMAI.COM>
X-To:         "John P. McNeely" <jmcneely@SSES.NET>
To: BUGTRAQ@SECURITYFOCUS.COM
In-Reply-To:  <4.1.20000510180858.03849420@mail.sses.net>

On Wed, 10 May 2000, John P. McNeely wrote:

> Date: Wed, 10 May 2000 18:15:22 -0400
> From: John P. McNeely <jmcneely@SSES.NET>
> To: BUGTRAQ@SECURITYFOCUS.COM
> Subject: [cert] SSH Authentication Vulnerability
>
> Sword & Shield Enterprise Security, Inc. - Security Advisory
> www.sses.net, Copyright (c) 2000
>
> Advisory:       Secure Shell Authentication Vulnerability
> Release Date:   May 10, 2000
> Application:    sshd
> Severity:       High - A user (local or remote) can log into any account
>                 with a valid login shell.
> Status:         Affected systems should install alternative version.
> Archive:        The advisory sses-002-auth-vul.txt
>                 is available at ftp://ftp.sses.net/pub/security/advisories

GACK! This is scary.

> DESCRIPTION
> -----------
> The vulnerable ssh distribution is patched with defective logic
> related to PAM authentication. The offending code from the patch
> file ssh-1.2.27-pam.patch is:
>
>         +#ifdef HAVE_PAM
>         +  {
>         +     retval = origretval;
>         +     pampasswd = xstrdup(password);
>         +     if (retval == PAM_SUCCESS)
>         +        retval = pam_authenticate ((pam_handle_t *)pamh, 0);
>         +     if (retval == PAM_SUCCESS || retval == PAM_AUTH_ERR)
>         +        retval = pam_acct_mgmt ((pam_handle_t *)pamh, 0);
>         +     xfree(pampasswd);
>         +  }
>         +#else /* HAVE_PAM */
>
> Note the last 'if' statement - in essence whether the pam_authenticate()
> call is successful or not, the pam_acct_mgmt() call is made overwriting
> the contents of retval. Assuming the pam_acct_mgmt() call is
> successful, and it tends to be, then the remaining patch code dealing
> with PAM authentication opens a session with:

In plainer English, it should read and reads in other ssh SRPM distributions:

           +#ifdef HAVE_PAM
           +  {
           +     retval = origretval;
           +     pampasswd = xstrdup(password);
           +     if (retval == PAM_SUCCESS)
           +        retval = pam_authenticate ((pam_handle_t *)pamh, 0);
           +     if (retval == PAM_SUCCESS)
           +        retval = pam_acct_mgmt ((pam_handle_t *)pamh, 0);
           +     xfree(pampasswd);
           +  }
           +#else /* HAVE_PAM */

				

This problem does not exist in the very nice Riggs distribution available
at:
	ftp://ftp.linuxppc.org/contrib/sources/Applications/Internet/ssh-1.2.27-7a_i_riggs.src.rpm
	ftp://ftp.linuxppc.org/contrib/sources/Applications/Internet/ssh-1.2.27-7a_us_riggs.src.rpm

I can recommend it: it's got a very useful patch for logging the tags
from the incoming SSH keys for easier logging of who the midnight root
user was on a shared system, and it's got a nice interactive session
performance patch for X-windows and terminal sessions (involving
TCPNODELAY settings).

I'm very concerned about how and when this modified
ssh-1.2.27-pam.patch was introduced into the ssh SRPM's. Just how far back
did it appear in SSH distributions for RedHat?

Nico Kadel-Garcia		Office:		(617) 250-3693
Senior Systems Engineer		CellPhone:	(617) 840-0199
				Pager:		(877) 680-3843
				Email:		raoul@akamai.com

home help back first fref pref prev next nref lref last post