Fix sendmail improper close-on-exec flag handling. [SA-14:11] Fix ktrace memory disclosure. [SA-14:12] Fix incorrect error handling in PAM policy parser. [SA-14:13] Fix triple-fault when executing from a threaded process. [EN-14:06]
171 lines
6.8 KiB
Text
171 lines
6.8 KiB
Text
-----BEGIN PGP SIGNED MESSAGE-----
|
|
Hash: SHA512
|
|
|
|
=============================================================================
|
|
FreeBSD-SA-14:13.pam Security Advisory
|
|
The FreeBSD Project
|
|
|
|
Topic: Incorrect error handling in PAM policy parser
|
|
|
|
Category: contrib
|
|
Module: pam
|
|
Announced: 2014-06-03
|
|
Credits: Peter Wemm, Dag-Erling Smørgrav
|
|
Affects: FreeBSD 9.2 and later.
|
|
Corrected: 2014-06-03 19:02:33 UTC (stable/9, 9.3-BETA1)
|
|
2014-06-03 19:02:33 UTC (stable/9, 9.3-BETA1-p1)
|
|
2014-06-03 19:03:11 UTC (releng/9.2, 9.2-RELEASE-p7)
|
|
2014-06-03 19:02:18 UTC (stable/10, 10.0-STABLE)
|
|
2014-06-03 19:02:52 UTC (releng/10.0, 10.0-RELEASE-p4)
|
|
CVE Name: CVE-2014-3879
|
|
|
|
For general information regarding FreeBSD Security Advisories,
|
|
including descriptions of the fields above, security branches, and the
|
|
following sections, please visit <URL:http://security.FreeBSD.org/>.
|
|
|
|
I. Background
|
|
|
|
The PAM (Pluggable Authentication Modules) library provides a flexible
|
|
framework for user authentication and session setup / teardown. It is
|
|
used not only in the base system, but also by a large number of
|
|
third-party applications.
|
|
|
|
Various authentication methods (UNIX, LDAP, Kerberos etc.) are
|
|
implemented in modules which are loaded and executed according to
|
|
predefined, named policies. These policies are defined in
|
|
/etc/pam.conf, /etc/pam.d/<policy name>, /usr/local/etc/pam.conf or
|
|
/usr/local/etc/pam.d/<policy name>.
|
|
|
|
The PAM API is a de facto industry standard which has been implemented
|
|
by several parties. FreeBSD uses the OpenPAM implementation.
|
|
|
|
II. Problem Description
|
|
|
|
The OpenPAM library searches for policy definitions in several
|
|
locations. While doing so, the absence of a policy file is a soft
|
|
failure (handled by searching in the next location) while the presence
|
|
of an invalid file is a hard failure (handled by returning an error to
|
|
the caller).
|
|
|
|
The policy parser returns the same error code (ENOENT) when a
|
|
syntactically valid policy references a non-existent module as when
|
|
the requested policy file does not exist. The search loop regards
|
|
this as a soft failure and looks for the next similarly-named policy,
|
|
without discarding the partially-loaded configuration.
|
|
|
|
A similar issue can arise if a policy contains an include directive
|
|
that refers to a non-existent policy.
|
|
|
|
III. Impact
|
|
|
|
If a module is removed, or the name of a module is misspelled in the
|
|
policy file, the PAM library will proceed with a partially loaded
|
|
configuration. Depending on the exact circumstances, this may result
|
|
in a fail-open scenario where users are allowed to log in without a
|
|
password, or with an incorrect password.
|
|
|
|
In particular, if a policy references a module installed by a package
|
|
or port, and that package or port is being reinstalled or upgraded,
|
|
there is a brief window of time during which the module is absent and
|
|
policies that use it may fail open. This can be especially damaging
|
|
to Internet-facing SSH servers, which are regularly subjected to
|
|
brute-force scans.
|
|
|
|
IV. Workaround
|
|
|
|
If your system uses customized PAM policies, carefully review your
|
|
policies to ensure that all module names are spelled correctly.
|
|
|
|
If your system uses third-party authentication modules, either refrain
|
|
from upgrading those modules until you have patched your system, or
|
|
shut down the affected services before upgrading.
|
|
|
|
V. Solution
|
|
|
|
Perform one of the following:
|
|
|
|
1) Upgrade your vulnerable system to a supported FreeBSD stable or
|
|
release / security branch (releng) dated after the correction date.
|
|
|
|
2) To update your vulnerable system via a source code patch:
|
|
|
|
The following patches have been verified to apply to the applicable
|
|
FreeBSD release branches.
|
|
|
|
a) Download the relevant patch from the location below, and verify the
|
|
detached PGP signature using your PGP utility.
|
|
|
|
[FreeBSD 9.2]
|
|
# fetch http://security.FreeBSD.org/patches/SA-14:13/pam-freebsd9.patch
|
|
# fetch http://security.FreeBSD.org/patches/SA-14:13/pam-freebsd9.patch.asc
|
|
# gpg --verify pam-freebsd9.patch.asc
|
|
|
|
[FreeBSD 9.3 and 10.0]
|
|
# fetch http://security.FreeBSD.org/patches/SA-14:13/pam-freebsd10.patch
|
|
# fetch http://security.FreeBSD.org/patches/SA-14:13/pam-freebsd10.patch.asc
|
|
# gpg --verify pam-freebsd10.patch.asc
|
|
|
|
b) Apply the patch. Execute the following commands as root:
|
|
|
|
# cd /usr/src
|
|
# patch < /path/to/patch
|
|
|
|
c) Recompile the operating system using buildworld and installworld as
|
|
described in <URL:http://www.FreeBSD.org/handbook/makeworld.html>.
|
|
|
|
Restart all deamons using the library, or reboot the system.
|
|
|
|
3) To update your vulnerable system via a binary patch:
|
|
|
|
Systems running a RELEASE version of FreeBSD on the i386 or amd64
|
|
platforms can be updated via the freebsd-update(8) utility:
|
|
|
|
# freebsd-update fetch
|
|
# freebsd-update install
|
|
|
|
VI. Correction details
|
|
|
|
The following list contains the correction revision numbers for each
|
|
affected branch.
|
|
|
|
Branch/path Revision
|
|
- -------------------------------------------------------------------------
|
|
stable/9/ r267015
|
|
releng/9.2/ r267018
|
|
stable/10/ r267014
|
|
releng/10.0/ r267017
|
|
- -------------------------------------------------------------------------
|
|
|
|
To see which files were modified by a particular revision, run the
|
|
following command, replacing NNNNNN with the revision number, on a
|
|
machine with Subversion installed:
|
|
|
|
# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base
|
|
|
|
Or visit the following URL, replacing NNNNNN with the revision number:
|
|
|
|
<URL:http://svnweb.freebsd.org/base?view=revision&revision=NNNNNN>
|
|
|
|
VII. References
|
|
|
|
<URL:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-3879>
|
|
|
|
The latest revision of this advisory is available at
|
|
<URL:http://security.FreeBSD.org/advisories/FreeBSD-SA-14:13.pam.asc>
|
|
-----BEGIN PGP SIGNATURE-----
|
|
Version: GnuPG v2.0.22 (FreeBSD)
|
|
|
|
iQIcBAEBCgAGBQJTjiDaAAoJEO1n7NZdz2rnx90P/je9ArC02N90sK//UauenbXV
|
|
BJCNh1WRSVE3hoxgVyPC0R+6Ts6J9At42ANUHXHVxipA2Qpu2UKf+/c3JreSuSGs
|
|
6rgAj1TPZEideQInTs9qCJWr6f/M2aPlYCF8iHuuLMJTO35wfVYQENDaFJmebKoI
|
|
fKkVvTh8ig2cgJWe7RZxd+Y4tPxKZb5ix5jV+xFjDPrmzVgSCUVpW0GrD7qWOg1W
|
|
25Ysx+LLBr03guDnFd9RodObWoNZ+aFxuvkKELmjUKva7xRSEw6PfwPCpLp9/83Q
|
|
HDVlkw0jH+0sF1SY7V+GUvQriPNpwyGNEOfDvL47gnlN/Z7HOZ0hYlVuYw4QYGv5
|
|
l5PZOL5eFC6xl88fn+ypKQwGDdzpM4i+svBy//2CW17luU31L4F/cde+yCxsEJB5
|
|
JXNhVTYe2z+ACfSs+Oxzk5uGI1f9FhvTzIyoO26Coq6e2Nk2633451kRgdPNxoAP
|
|
kMimT2Mle/1kqupLirGi44lEyUYV9As2AhnLBFFUXTnESlWVe6q0N0Rb8G6D2jcR
|
|
0m5hccsS2HcysUtSIP8ADB6LlSgH+bKP2FUFopdjQUx3J+/KQ5kl6L/UhOOr1Hag
|
|
4PdoCPpR15s2CaICmu5HkDtGNkZQV7xdN6TLcksJHXRshISlbzZjlaNyrbu6oJu9
|
|
nz3mhzGz1ZH6l7kuNYXD
|
|
=qUxk
|
|
-----END PGP SIGNATURE-----
|