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





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



Home | Main Index | Thread Index | Old Index