patches for easier mirroring, to eliminate a special copy, to make www.freebsd.org/security a full copy of security.freebsd.org and be eventually be the same. For now files are just sitting there. The symlinks are missing. Discussed on: www (repository location) Discussed with: simon (so)
185 lines
7.5 KiB
Text
185 lines
7.5 KiB
Text
-----BEGIN PGP SIGNED MESSAGE-----
|
|
Hash: SHA1
|
|
|
|
=============================================================================
|
|
FreeBSD-SA-11:09.pam_ssh Security Advisory
|
|
The FreeBSD Project
|
|
|
|
Topic: pam_ssh improperly grants access when user account has
|
|
unencrypted SSH private keys
|
|
|
|
Category: contrib
|
|
Module: pam
|
|
Announced: 2011-12-23
|
|
Credits: Guy Helmer, Dag-Erling Smorgrav
|
|
Affects: All supported versions of FreeBSD.
|
|
Corrected: 2011-12-11 20:40:23 UTC (RELENG_7, 7.4-STABLE)
|
|
2011-12-23 15:00:37 UTC (RELENG_7_4, 7.4-RELEASE-p5)
|
|
2011-12-23 15:00:37 UTC (RELENG_7_3, 7.3-RELEASE-p9)
|
|
2011-12-11 20:38:36 UTC (RELENG_8, 8.2-STABLE)
|
|
2011-12-23 15:00:37 UTC (RELENG_8_2, 8.2-RELEASE-p5)
|
|
2011-12-23 15:00:37 UTC (RELENG_8_1, 8.1-RELEASE-p7)
|
|
2011-12-11 16:57:27 UTC (RELENG_9, 9.0-STABLE)
|
|
2011-12-11 17:32:37 UTC (RELENG_9_0, 9.0-RELEASE)
|
|
|
|
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 base system includes a module named pam_ssh which, if enabled,
|
|
allows users to authenticate themselves by typing in the passphrase of
|
|
one of the SSH private keys which are stored in encrypted form in the
|
|
their .ssh directory. Authentication is considered successful if at
|
|
least one of these keys could be decrypted using the provided
|
|
passphrase.
|
|
|
|
By default, the pam_ssh module rejects SSH private keys with no
|
|
passphrase. A "nullok" option exists to allow these keys.
|
|
|
|
II. Problem Description
|
|
|
|
The OpenSSL library call used to decrypt private keys ignores the
|
|
passphrase argument if the key is not encrypted. Because the pam_ssh
|
|
module only checks whether the passphrase provided by the user is
|
|
null, users with unencrypted SSH private keys may successfully
|
|
authenticate themselves by providing a dummy passphrase.
|
|
|
|
III. Impact
|
|
|
|
If the pam_ssh module is enabled, attackers may be able to gain access
|
|
to user accounts which have unencrypted SSH private keys.
|
|
|
|
IV. Workaround
|
|
|
|
No workaround is available, but systems that do not have the pam_ssh module
|
|
enabled are not vulnerable. The pam_ssh module is not enabled in any
|
|
of the default policies provided in the base system.
|
|
|
|
The system administrator can use the following procedure to inspect all
|
|
PAM policy files to determine whether the pam_ssh module is enabled.
|
|
If the following command produces any output, the system may be
|
|
vulnerable:
|
|
|
|
# egrep -r '^[^#].*\<pam_ssh\>' /etc/pam.* /usr/local/etc/pam.*
|
|
|
|
The following command will disable the pam_ssh module in all PAM
|
|
policies present in the system:
|
|
|
|
# sed -i '' -e '/^[^#].*pam_ssh/s/^/#/' /etc/pam.conf /etc/pam.d/* \
|
|
/usr/local/etc/pam.conf /usr/local/etc/pam.d/*
|
|
|
|
V. Solution
|
|
|
|
Perform one of the following:
|
|
|
|
1) Upgrade your vulnerable system to 7-STABLE or 8-STABLE, or to
|
|
the RELENG_8_2, RELENG_8_1, RELENG_7_4, or RELENG_7_3 security
|
|
branch 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 FreeBSD 7.4, 7.3,
|
|
8.2 and 8.1 systems.
|
|
|
|
a) Download the relevant patch from the location below, and verify the
|
|
detached PGP signature using your PGP utility.
|
|
|
|
# fetch http://security.FreeBSD.org/patches/SA-11:09/pam_ssh.patch
|
|
# fetch http://security.FreeBSD.org/patches/SA-11:09/pam_ssh.patch.asc
|
|
|
|
b) Execute the following commands as root:
|
|
|
|
# cd /usr/src
|
|
# patch < /path/to/patch
|
|
# cd /usr/src/lib/libpam/modules/pam_ssh
|
|
# make obj && make depend && make && make install
|
|
|
|
NOTE: On the amd64 platform, the above procedure will not update the
|
|
lib32 (i386 compatibility) libraries. On amd64 systems where the i386
|
|
compatibility libraries are used, the operating system should instead
|
|
be recompiled as described in
|
|
<URL:http://www.FreeBSD.org/handbook/makeworld.html>
|
|
|
|
3) To update your vulnerable system via a binary patch:
|
|
|
|
Systems running 7.4-RELEASE, 7.3-RELEASE, 8.2-RELEASE, or 8.1-RELEASE 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 revision numbers of each file that was
|
|
corrected in FreeBSD.
|
|
|
|
CVS:
|
|
|
|
Branch Revision
|
|
Path
|
|
- -------------------------------------------------------------------------
|
|
RELENG_7
|
|
src/lib/libpam/modules/pam_ssh/pam_ssh.c 1.44.2.2
|
|
RELENG_7_4
|
|
src/UPDATING 1.507.2.36.2.7
|
|
src/sys/conf/newvers.sh 1.72.2.18.2.10
|
|
src/lib/libpam/modules/pam_ssh/pam_ssh.c 1.44.2.1.8.2
|
|
RELENG_7_3
|
|
src/UPDATING 1.507.2.34.2.11
|
|
src/sys/conf/newvers.sh 1.72.2.16.2.13
|
|
src/lib/libpam/modules/pam_ssh/pam_ssh.c 1.44.2.1.6.2
|
|
RELENG_8
|
|
src/lib/libpam/modules/pam_ssh/pam_ssh.c 1.45.2.3
|
|
RELENG_8_2
|
|
src/UPDATING 1.632.2.19.2.7
|
|
src/sys/conf/newvers.sh 1.83.2.12.2.10
|
|
src/lib/libpam/modules/pam_ssh/pam_ssh.c 1.45.2.2.4.2
|
|
RELENG_8_1
|
|
src/UPDATING 1.632.2.14.2.10
|
|
src/sys/conf/newvers.sh 1.83.2.10.2.11
|
|
src/lib/libpam/modules/pam_ssh/pam_ssh.c 1.45.2.2.2.2
|
|
RELENG_9
|
|
src/lib/libpam/modules/pam_ssh/pam_ssh.c 1.47.2.2
|
|
RELENG_9_0
|
|
src/lib/libpam/modules/pam_ssh/pam_ssh.c 1.47.2.1.2.2
|
|
- -------------------------------------------------------------------------
|
|
|
|
Subversion:
|
|
|
|
Branch/path Revision
|
|
- -------------------------------------------------------------------------
|
|
stable/7/ r228421
|
|
releng/7.4/ r228843
|
|
releng/7.3/ r228843
|
|
stable/8/ r228420
|
|
releng/8.2/ r228843
|
|
releng/8.1/ r228843
|
|
stable/9/ r228410
|
|
releng/9.0/ r228414
|
|
- -------------------------------------------------------------------------
|
|
|
|
VII. References
|
|
|
|
The latest revision of this advisory is available at
|
|
http://security.FreeBSD.org/advisories/FreeBSD-SA-11:09.pam_ssh.asc
|
|
-----BEGIN PGP SIGNATURE-----
|
|
Version: GnuPG v2.0.18 (FreeBSD)
|
|
|
|
iEYEARECAAYFAk70nOoACgkQFdaIBMps37JTSwCfS+bmWBxv5hote7Hrcl7VZjjk
|
|
vKMAn116aLADxmdYsyZ5WdSrfFTRt3Xm
|
|
=Y+ar
|
|
-----END PGP SIGNATURE-----
|