[Dovecot] PAM_USER falsely assumed immutable
Aaron Richton
richton at nbcs.rutgers.edu
Wed Jul 22 21:04:43 EEST 2009
In 1.2.1 there's:
passdb-pam.c:230 status = pam_get_item(pamh, PAM_USER, &item);
passdb-pam.c:237 auth_request_set_field(request, "user", item, NULL);
so "item" is PAM_USER, which is then checked by auth_request_set_field:
1022 if (strcmp(request->user, value) != 0) {
1023 auth_request_log_debug(request, "auth",
1024 "username changed %s -> %s",
1025 request->user, value);
that it hasn't changed.
You're not allowed to assume that PAM_USER doesn't change. See, for
example, http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/adg-security-user-identity.html
to say nothing of the fact that Rutgers has PAM modules that do exactly
that (change PAM_USER). This check needs to be relaxed (or, perhaps if you
want a config directive for DontComplyWithThePAMSpec = true, you can have
a tunable). Can this be as simple as ditching the call to
auth_request_set_field, or is there concern over interactions between PAM
and other auth features?
More information about the dovecot
mailing list