Skip to content

SSSD checks PAC from MIT Kerberos and fails #8300

@sigmaris

Description

@sigmaris

I have a small collection of machines which are using, via SSSD, a central MIT Kerberos + OpenLDAP server for a user directory (and to store autofs and sudoers information). I have recently noticed password-based authentication for users stored in the directory server, no longer works on the machines that are clients of the directory server. It's infrequent that I use password authentication, so I'm not sure which version of SSSD this worked with in the past, but the current SSSD version I'm using with this issue is 2.10.1 (via the Debian package 2.10.1-2+b1).

For example, if I log in using SSH (with GSSAPI authentication, though that's probably not relevant) to one machine, then run sudo -i, it prompts for my password, then after I enter the correct password it rejects it with "Sorry, try again."

In the system journal on the machine running sudo -i I see

Dec 13 14:18:18 nas64 sudo[1258338]: pam_unix(sudo-i:auth): authentication failure; logname=sigmaris uid=1000 euid=0 tty=/dev/pts/3 ruser=sigmaris rhost=  user=sigmaris
Dec 13 14:18:18 nas64 krb5_child[1258339]: Unknown code UUz 104
Dec 13 14:18:18 nas64 sudo[1258338]: pam_sss(sudo-i:auth): authentication failure; logname=sigmaris uid=1000 euid=0 tty=/dev/pts/3 ruser=sigmaris rhost= user=sigmaris
Dec 13 14:18:18 nas64 sudo[1258338]: pam_sss(sudo-i:auth): received for user sigmaris: 4 (System error)

Looking at the krb5_child logs shows messages like

(2025-12-13 14:18:18): [krb5_child[1258339]] [get_and_save_tgt] (0x0020): [RID#28] 2389: [1432158312][Unknown code UUz 104]
(2025-12-13 14:18:18): [krb5_child[1258339]] [map_krb5_error] (0x0040): [RID#28] [1432158312][PAC check failed].

I also tried to turn on debugging and looking at the sssd_pac.log shows some more information about the PAC validation:

   *  (2025-12-13 10:54:25): [pac] [accept_fd_handler] (0x0400): [CID#1] Client [cmd /usr/libexec/sssd/krb5_child][uid 0][0xaaaaca86a270][17] connected!
   *  (2025-12-13 10:54:25): [pac] [sss_cmd_get_version] (0x0200): [CID#1] Received client version [1].
   *  (2025-12-13 10:54:25): [pac] [sss_cmd_get_version] (0x0200): [CID#1] Offered version [1].
   *  (2025-12-13 10:54:25): [pac] [ad_get_data_from_pac] (0x4000): [CID#1] Unhandled PAC buffer type [10].
   *  (2025-12-13 10:54:25): [pac] [ad_get_data_from_pac] (0x4000): [CID#1] Unhandled PAC buffer type [16].
   *  (2025-12-13 10:54:25): [pac] [ad_get_data_from_pac] (0x0020): [CID#1] LOGON_INFO pac buffer missing.
********************** BACKTRACE DUMP ENDS HERE *********************************

(2025-12-13 10:54:25): [pac] [pac_add_pac_user] (0x0040): [CID#1] ad_get_data_from_pac failed.
(2025-12-13 10:55:03): [pac] [ad_get_data_from_pac] (0x0020): [CID#2] LOGON_INFO pac buffer missing.

I suspect the problem started when I upgraded the KDC to MIT Kerberos 1.20; in the release notes for that version it says:

Beginning with release 1.20, the KDC will include minimal PACs in tickets instead of AD-SIGNEDPATH authdata

I suspect SSSD is trying to validate the PAC as if it's created by an Active Directory KDC, but it's actually a "minimal" PAC created by MIT Kerberos that only contains buffer types 10 and 16, but doesn't contain the expected LOGON_INFO buffer like an Active Directory PAC would.

I also tried to disable the PAC checking entirely by adding

[pac]
pac_check = no_check

to sssd.conf, but it seems to make no difference.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions