GSSAPI security context integrity check

Alexandr Nedvedicky alexandr.nedvedicky at oracle.com
Thu May 7 04:50:20 EDT 2020


On Wed, May 06, 2020 at 08:26:57PM -0400, Greg Hudson wrote:
</snip>
> > Customer switched to Solaris 11.4, which comes with kerberos
> > 1.16.
> 
> Are there Solaris-specific modifications to this code, or is it
> unmodified 1.16?

    sorry I've forgot to mention that in my first email. There are
    several modifications to GSSAPI. Although those changes do
    touch the GSSAPI, they should not matter (according to my
    guess/understanding of code).

    The first change improves interoperability with SMB [1]. According
    to records it dates back to WinXP epoch.

    There are also Solaris specific modifications, which allow MIT
    kerberos to share security context with keberos mechanism implemented
    in Solaris kernel [2]. If I understand things right, they allow kerberized
    NFS to work.

    then there is change, which deals with specific way to acquire
    credentials for the root user [3].

    The remaining changes deal with source code compatibility
    for legacy parts of Solaris.

> 
> > two security contexts attempted to use integrity protection.
> 
> The two filenames had the same suffix (c523660).  If I understand
> correctly, that is the pointer value of the krb5 GSS context object--so
> both g_seqstate_init() calls were for the same context (which is
> consistent with the initial sequence numbers being the same).  It would
> be very interesting to know the stack traces of the two
> g_seqstate_init() calls, although that might be difficult to collect
> remotely.  Normally there should only be one g_seqstate_init() call for
> a context, from kg_accept_krb5().

    I'll ask customer to collect the stack with dtrace. After spending couple
    days browsing through source code the g_seqstate_init() gets only called
    when new security context is born (import, accept or init).

    Assuming I interpret the log from SAPware right, we run as GSS acceptor,
    so g_seqstate_init() is being called from kg_accept_krb5() in
    lib/gssapi/krb5/accept_sec_context.c.

yes, that's a good idea to try to collect stack trace using dtrace.

thanks and
regards
sasha

[1] https://github.com/Sashan/krb5/commit/fa78fb2c9f6e92e087b27c86c1fa79326fde73b5

[2] https://github.com/Sashan/krb5/commit/43ce4ff37598e91f7ae35630115bfcec5bbe6eb7

[3] https://github.com/Sashan/krb5/commit/5373d32f0d2f323e42dabec02707f591a3ae10fc


More information about the krbdev mailing list