Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20230621214131.C670B6033F@jupiter.mumble.net>
Date: Wed, 21 Jun 2023 21:41:30 +0000
From: Taylor R Campbell <riastradh@...BSD.org>
To: oss-security@...ts.openwall.com
Subject: Re: PAM/Kerberos issue on NetBSD

> Date: Tue, 20 Jun 2023 17:16:58 -0700
> From: Alistair Crooks <agc@...src.org>
> 
> + Linux - not believed to be affected (would be good to get some
> corroboration for this)

Linux pam_krb5[1] and sssd-krb5[2] are both affected by the same
attack, but they have always been _documented_ to be affected; unlike
BSD pam_krb5, it's just not news that they are affected.

(Side note: pam_krb5 (and sssd-krb5) is not and never has been the
normal way to do Kerberos authentication in network services.  (E.g.,
in sshd, you set `GSSAPIAuthentication yes' for that.)  pam_krb5 has
always been an abuse of Kerberos as a method to check a password,
which Kerberos was designed to avoid, through SSO.)


The pam_krb5 overview[3] says:

> pam_authenticate does a complete authentication, including checking
> the resulting TGT by obtaining a service ticket for the local host
> if possible, but this requires read access to the system keytab.  If
> the keytab doesn't exist, can't be read, or doesn't include the
> appropriate credentials, the default is to accept the
> authentication.  This can be controlled by setting
> verify_ap_req_nofail to true in [libdefaults] in /etc/krb5.conf.

The pam_krb5 man page[4] says:

> If that keytab cannot be read or if no keys are found in it, the
> default (potentially insecure) behavior is to skip this check.  If
> you want to instead fail authentication if the obtained tickets
> cannot be checked, set verify_ap_req_nofail to true in the
> [libdefaults] section of /etc/krb5.conf.  Note that this will affect
> applications other than this PAM module.

The sssd-krb5 man page[5] says:

> krb5_validate (boolean)
>    Verify with the help of krb5_keytab that the TGT obtained has not
>    been spoofed.  The keytab is checked for entries sequentially,
>    and the first entry with a matching realm is used for validation.
>    If no entry matches the realm, the last entry in the keytab is
>    used.  This process can be used to validate environments using
>    cross-realm trust by placing the appropriate keytab entry as the
>    last entry or the only entry in the keytab file.
>
>    Default: false 

Exception: Oracle Linux appears to ship an mit-krb5-based Kerberos
modified to have default-secure settings instead of default-insecure,
and provides instructions for setting verify_ap_req_nofail for
insecure compatibility[6][7][8].


The verify_ap_req_nofail option rates pretty high among the
worst-named knobs I have ever seen, and has been confusing people for
decades[9][10].  I filed an issue to make it default-secure in
Heimdal[11]; this could pose compatibility issues, but sites that
continue rely on the insecure option can always set it in their
krb5.conf.


[1] https://www.eyrie.org/~eagle/software/pam-krb5/
[2] https://github.com/SSSD/sssd/tree/master/src/providers/krb5
[3] https://www.eyrie.org/~eagle/software/pam-krb5/readme.html
[4] https://www.eyrie.org/~eagle/software/pam-krb5/pam-krb5.html
[5] https://linux.die.net/man/5/sssd-krb5
[6] https://docs.oracle.com/cd/E26505_01/html/E27224/setup-148.html
[7] https://docs.oracle.com/cd/E26505_01/html/816-5174/krb5.conf-4.html#REFMAN4krb5.conf-4
[8] https://docs.oracle.com/cd/E19253-01/816-4557/gihyu/
[9] https://www.stacken.kth.se/lists/heimdal-discuss/2002-08/msg00001.html
[10] https://mailman.mit.edu/pipermail/krbdev/2011-January/009778.html
[11] https://github.com/heimdal/heimdal/issues/1129

Powered by blists - more mailing lists

Please check out the Open Source Software Security Wiki, which is counterpart to this mailing list.

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.