oss-sec mailing list archives
Re: Disputing CVE-2011-4122
From: Jeff Mitchell <mitchell () kde org>
Date: Mon, 26 Dec 2011 23:39:55 -0500
On 12/23/2011 06:22 PM, Solar Designer wrote:
On Wed, Dec 07, 2011 at 09:26:44AM -0500, Jeff Mitchell wrote:I've been asked by the kcheckpass maintainer to lodge a dispute of CVE-2011-4122. As explained in the blog entry linked from the CVE[1], the problem is that neither kcheckpass nor OpenPAM validate the 'service_name' input argument of pam_start(). This hole can be used to make PAM load arbitrary shared libraries, which can be used to execute arbitrary code as root, as kcheckpass is setuid root.Besides loading of arbitrary shared libraries due to the OpenPAM peculiarity, doesn't this kcheckpass feature allow a user to specify an arbitrary PAM service name that is actually valid on the system, not limited to PAM services intended for use by KDE? Isn't that a vulnerability of itself? While kcheckpass itself doesn't grant access to any resource, an alternate PAM stack (maybe only intended for use by a specific service) might have modules with side-effects. To me, kcheckpass looks poorly designed in letting the invoking user specify an arbitrary PAM service name. Instead, the service name should either be obtained from a trusted place or it should be checked against a trusted whitelist. For example, passwd(1) from SimplePAMApps does the latter: it has a command-line option to specify a PAM service name suffix (which it'd append to "passwd"), but the suffix must be whitelisted in /etc/security/passwd.conf.
<snip> My understanding -- and I'm not the maintainer, so I'm typing this based on my own understanding of the program and this problem from my talks with the maintainer, whom I've CCed -- is that at a simple level it can be used for normal PAM user authentication, but that it's also designed to provide a simple interface to do arbitrary kinds of PAM authentication depending on user/application needs. For instance, you when invoking kcheckpass you can not only specify the PAM service name but can also choose whether to use a stdin-based interface or a file descriptor handle to communicate with it. So you get access to authenticate with PAM for PAM services that use passwords but without having to interface directly with PAM libraries. This kind of behavior is not restricted within OpenPAM itself, and there is nothing in the documentation that indicates that such external accessor programs need to perform any sort of input sanitation on the service name field. Sure -- ideally you want such programs performing some kind of sanitation, but then you have to decide, rather than the application developer using your accessor program, what is appropriate and what isn't. There are some obvious candidates but a lot of choices that would be harder. So kcheckpass, at least for the moment, punts all of this down to OpenPAM. Is it *nice*? No. Is it *valid*? Yes, unless OpenPAM changes its programming guide to require sanity checking of inputs at a higher level (and then it should still do its own checking anyways). That's the basis for the maintainer wanting to challenge this CVE. Even if everyone agrees that kcheckpass should do some kind of filtering of service names, the fact remains that OpenPAM should have been doing its own sanity checking anyways (since it should never simply trust user input), and OpenPAM wasn't. If it wasn't kcheckpass that exposed this problem, it would eventually have been something else. I'll happily pass your comments along to the kcheckpass maintainer, and he indicated to me during our discussions that some level of filtering would probably be appropriate, but this CVE is due to OpenPAM's lack of sanity checking and blaming the program that exposes it via valid (if ugly) usage scenarios is misguided. Thanks, Jeff
Attachment:
signature.asc
Description: OpenPGP digital signature
Current thread:
- Disputing CVE-2011-4122 Jeff Mitchell (Dec 07)
- Re: Disputing CVE-2011-4122 Kurt Seifried (Dec 07)
- Re: Disputing CVE-2011-4122 Jeff Mitchell (Dec 08)
- Re: Disputing CVE-2011-4122 Kurt Seifried (Dec 08)
- Re: Disputing CVE-2011-4122 Jeff Mitchell (Dec 08)
- Re: Disputing CVE-2011-4122 Kurt Seifried (Dec 08)
- Re: Disputing CVE-2011-4122 Jeff Mitchell (Dec 08)
- Re: Disputing CVE-2011-4122 Jeff Mitchell (Dec 08)
- Re: Disputing CVE-2011-4122 Kurt Seifried (Dec 07)
- Re: Disputing CVE-2011-4122 Jeff Mitchell (Dec 26)
- Re: Disputing CVE-2011-4122 Solar Designer (Dec 27)
- Re: Disputing CVE-2011-4122 Sebastian Krahmer (Dec 28)