tags 327233 patch thanks On Thu, Sep 08, 2005 at 10:11:53AM -0500, Micah Anderson wrote: > Package: openssh-krb5 > Severity: important > Tags: security > > CAN-2005-2798[1] reads: > > sshd in OpenSSH before 4.2, when GSSAPIDelegateCredentials is enabled, > allows GSSAPI credentials to be delegated to clients who log in using > non-GSSAPI methods, which could cause those credentials to be exposed to > untrusted users or hosts. > > Since GASSAPI features are enabled in openssh-krb5/ssh-krb5 and the source > package tends to use older gassapi source, so it is likely these binaries > are vulnerable.
This appears to be the case. The patch from upstream CVS, attached to this mail, applies cleanly to openssh-krb5 with only harmless offset differences. Please test the resulting binaries (I don't have a Kerberos setup myself) and apply. > GSSAPI is disabled in the main openssh binary packages, but the bug is still > present in the source (see #326065), so this separate bug is filed against > this package. Kerberos/GSSAPI support is enabled in openssh proper as of today's 1:4.2p1-2 upload (after applying the GSSAPI key exchange patch), so I think openssh-krb5 is now a redundant package, but fixing it for those people who will take a little while to switch over to openssh would still be nice. Cheers, -- Colin Watson [EMAIL PROTECTED]
Index: gss-serv.c
===================================================================
RCS file: /cvs/openssh/gss-serv.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -p -u -r1.7 -r1.8
--- gss-serv.c 17 Jul 2005 07:22:45 -0000 1.7
+++ gss-serv.c 31 Aug 2005 09:46:27 -0000 1.8
@@ -275,13 +275,24 @@ ssh_gssapi_do_child(char ***envp, u_int
int
ssh_gssapi_userok(char *user)
{
+ OM_uint32 lmin;
+
if (gssapi_client.exportedname.length == 0 ||
gssapi_client.exportedname.value == NULL) {
debug("No suitable client data");
return 0;
}
if (gssapi_client.mech && gssapi_client.mech->userok)
- return ((*gssapi_client.mech->userok)(&gssapi_client, user));
+ if ((*gssapi_client.mech->userok)(&gssapi_client, user))
+ return 1;
+ else {
+ /* Destroy delegated credentials if userok fails */
+ gss_release_buffer(&lmin, &gssapi_client.displayname);
+ gss_release_buffer(&lmin, &gssapi_client.exportedname);
+ gss_release_cred(&lmin, &gssapi_client.creds);
+ memset(&gssapi_client, 0, sizeof(ssh_gssapi_client));
+ return 0;
+ }
else
debug("ssh_gssapi_userok: Unknown GSSAPI mechanism");
return (0);
Index: sshconnect2.c
===================================================================
RCS file: /cvs/openssh/sshconnect2.c,v
retrieving revision 1.130
retrieving revision 1.131
diff -p -u -r1.130 -r1.131
--- sshconnect2.c 26 Jul 2005 11:54:56 -0000 1.130
+++ sshconnect2.c 31 Aug 2005 09:46:27 -0000 1.131
@@ -545,7 +545,8 @@ process_gssapi_token(void *ctxt, gss_buf
Authctxt *authctxt = ctxt;
Gssctxt *gssctxt = authctxt->methoddata;
gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER;
- gss_buffer_desc gssbuf, mic;
+ gss_buffer_desc mic = GSS_C_EMPTY_BUFFER;
+ gss_buffer_desc gssbuf;
OM_uint32 status, ms, flags;
Buffer b;
signature.asc
Description: Digital signature

