IETF-SSH archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: [David Leonard] draft-ietf-secsh-gsskeyex-09.txt comments
I have to strongly disagree with this approach.
My view is that the application should not canonicalize the hostname (as
supplied by the user) before passing it to GSS in a targ_name. This is
because the GSS mechanisms may be sensitive to non-canonicalized names,
and indeed the GSS mechanisms may do their own secure canonicalization
themselves.
I propose instead for 7.1 that a client system SHOULD first construct
targ_name = "host@"+hostname (without modifying the user-supplied
hostname) and try GSS. Then, if the GSS fails [?], the application
SHOULD try canonicalizing the hostname and construct targ_name2 =
"host@"+canonicalize(hostname) and try that instead (if it's a
different string).
This serves the need for interoperability with GSS mechanisms that
do not canonicalize, and the (more important) need for passing
user-supplied hostname strings as-is to the GSS mechanisms.
I note that when constructing channels, the hostname may need to
be canonicalized to form a channel address, but that this is a
problem outside of this part of the ssh architecture.
Recently, I added a GSSAPIServiceName option to vintela-openssh
that allows users to explicate the service name to use. A number
of customers found this useful because they have DNS namespaces
that look nothing like their realm namespace. A similar
issue may arise from draft-ietf-krb-wg-kerberos-referrals.
d
On Thu, 25 Aug 2005, Jeffrey Hutzelman wrote:
> On Wednesday, August 24, 2005 05:19:52 PM -0400 Sam Hartman
> <hartmans-ietf%mit.edu@localhost> wrote:
>
> > Bill> IMHO, the main thing that matters for interoperability is
> > Bill> the complete client system behavior rather than the behavior
> > Bill> of the part of the system which is above the GSS *API*
> > Bill> boundary.
> >
> > Bill> Given that this question is being looked at within GSSAPI,
> > Bill> perhaps the best we can say for now is that if a client
> > Bill> system implementing this specification is unable to securely
> > Bill> determine which hostname and/or GSS target name to use, then
> > Bill> it SHOULD NOT use this mechanism.
> >
> >
> > Jeff, would you please draft text to be added in an rfc editor note to
> > do this?
>
> Sure. I think we need a bit of background in addition to the simple
> requirement Bill mentioned. I'll propose adding the following text to the end
> of section 7.1 to address this issue:
>
>
> Because the GSSAPI mechanism uses the targ_name to authenticate the
> server's identity, it is important that it be determined in a secure
> fashion. One common way to do this is to construct the targ_name
> from the hostname as typed by the user; unfortunately, because some
> GSSAPI mechanisms do not canonicalize hostnames, it is likely that
> this technique will fail if the user has not typed a fully-qualified,
> canonical hostname. Thus, implementors may wish to use other methods,
> but should take care to insure they are secure. For example, one
> should not rely on an unprotected DNS record to map a host alias to
> the primary name of a server, or an IP address to a hostname, since
> an attacker can modify the mapping and impersonate the server.
>
> Implementations of mechanisms conforming to this document MUST NOT use
> the results of insecure DNS queries to construct the targ_name. Clients
> MAY make use of a mapping provided by local configuration, append a
> statically configured domain name to unqualified hostnames, and/or use
> other secure means to determine the targ_name to be used. If a client
> system is unable to securely determine which targ_name to use, then it
> SHOULD NOT use this mechanism.
>
>
>
> > * Is Bill's solution a good idea
>
> I think Bill's solution is good, as far as it goes. The basic requirement is
> that clients that cannot figure out what to do securely SHOULD NOT use this
> mechanism. The text I proposed provides a little background on why, and also
> adds the requirement that implementations MUST NOT use insecure DNS to decide
> what hostname to use. Based on what I've seen in ssh implementations, I don't
> expect that to be a difficult sell in this WG.
>
>
>
> > * Is it a requirement that we fix this hole
>
> I'm not sure that it is. RFC4120 provides very similar advice to what I
> provided above, and it is my hope that the next GSSAPI revision will do the
> same. On the other hand, there is the danger that if we don't call this out,
> some implementor will think it is a good idea to reverse-resolve an address
> provided by a user, which would be unfortunate.
>
> I think I'll mostly stay neutral on this question.
>
>
>
> > * Is Jeff's text good?
>
> Yes, I think my text is good. :-)
>
>
> -- Jeff
>
>
>
--
David Leonard
Vintela Resource Central software engineer
Quest Software; Brisbane, Australia; www.quest.com
Phone: (US) +1 801 655 2755
(AU) +61 7 3023 5133
Home |
Main Index |
Thread Index |
Old Index