Re: Current semantics for channel-bindings in GSSAPI

Isaac Boukris <[email protected]>
Newsgroups gmane.comp.encryption.kerberos.devel
Message-ID <CAC-fF8R65Xewji0acrYibiWYhKarJGrbSQYg8OvdV039F4mi+w@mail.gmail.com>
On Fri, Feb 28, 2020 at 6:00 PM Greg Hudson <[email protected]> wrote:
>
> On 2/27/20 8:27 PM, Isaac Boukris wrote:
> > Following the discussion on  IRC, there is currently a difference in
> > between Heimdal and MIT, when the client does not send bindings, and
> > the server does pass bindings to accept(), in MIT it fails, in Heimdal
> > it succeeds.
>
> There are a few reasons why I think Heimdal's behavior is better:
>
> * It's symmetric with the initiator.
>
> * It's symmetric with other mechanisms like Moonshot.  (More research
> may be required here; in particular, does NTLM enforce channel bindings
> when one party doesn't pass them?)
>
> * GSS generally does not fail a security context if it can't fulfill a
> requested option; instead, the caller can find out which options
> succeeded.  For instance, if you ask for confidentiality and the mech
> can't provide that, you get a security context without the
> confidentiality flag set.
>
> * gss_accept_sec_context() has output flags but not input flags.  So
> it's easy to add a channel-bound flag indicating that channel bindings
> were used; it's significantly harder to add an input flag to indicate
> whether channel bindings should be enforced.
>
> * Even without any other changes, Heimdal's behavior allows channel
> bindings to be introduced into an application protocol gradually,
> whereas MIT's behavior requires upgrading all of the clients before any
> of the servers.  Neither party polices the other, but when both parties
> supply channel bindings the negotiation will fail if an attacker replays
> it within a different channel.

I find more value in being able to enforce it at least on one side,
and to my understanding that is the main feature in MS implementation,
and level 2 is intended to be the default at some point.
https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/ADV190023
https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2017-8563
https://support.microsoft.com/en-us/help/4034879/how-to-add-the-ldapenforcechannelbinding-registry-entry

While I agree we also need level 1, and we could also use better
signaling with the client, I don't think it is a reason to regress on
the main feature, technically people may be using it, although
unlikely. Also, I was hoping to provide server support for current MIT
releases.

> For historical context, there is a lot of conversation about
> draft-ietf-kitten-channel-bound-flag in the kitten archives, although
> this specific point is only touched on at the end (after Sam's review).
>
> > To follow up on the KERB_AP_OPTIONS_CBT ad-element, (partly)
> > documented in MS-KILE, 3.2.5.8 AP Exchange, and 3.4.5.
> > I was able to confirm that Windows would enforce channel-bindings (not
> > allow all zeroes)
>
> I am a little confused about the need for this flag.  The GSS client
> code knows whether the application supplied channel bindings, so it
> seems like it can fail locally if channel bindings are expected.  I
> guess it doesn't know whether the server is level 0 or level >=1, but
> I'm still not sure what security guarantees level 1 is trying to provide.
_______________________________________________
krbdev mailing list             [email protected]
https://mailman.mit.edu/mailman/listinfo/krbdev
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.