FreeBSD-SA-06:12.opie - The opiepasswd(1) program uses getlogin(2) to identify the user calling opiepasswd(1). In some circumstances getlogin(2) will return "root" even when running as an unprivileged user. This causes opiepasswd(1) to allow an unpriviled user to configure OPIE authentication for the root user.
b8dfcfe244434389f0f712b62834e4493fac0d0f1ef27d66baf50780b738dc15
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
=============================================================================
FreeBSD-SA-06:12.opie Security Advisory
The FreeBSD Project
Topic: OPIE arbitrary password change
Category: contrib
Module: contrib_opie
Announced: 2006-03-22
Credits: Mykola Zubach
Affects: All FreeBSD releases.
Corrected: 2006-03-22 16:01:08 UTC (RELENG_6, 6.1-STABLE)
2006-03-22 16:01:38 UTC (RELENG_6_0, 6.0-RELEASE-p6)
2006-03-22 16:01:56 UTC (RELENG_5, 5.5-STABLE)
2006-03-22 16:02:17 UTC (RELENG_5_4, 5.4-RELEASE-p13)
2006-03-22 16:02:35 UTC (RELENG_5_3, 5.3-RELEASE-p28)
2006-03-22 16:02:49 UTC (RELENG_4, 4.11-STABLE)
2006-03-22 16:03:05 UTC (RELENG_4_11, 4.11-RELEASE-p16)
2006-03-22 16:03:25 UTC (RELENG_4_10, 4.10-RELEASE-p22)
CVE Name: CVE-2006-1283
For general information regarding FreeBSD Security Advisories,
including descriptions of the fields above, security branches, and the
following sections, please visit
<URL:https://www.freebsd.org/security/>.
I. Background
OPIE is a one-time password system designed to help to secure a system
against replay attacks. It does so using a secure hash function and a
challenge/response system. The opiepasswd(1) program is used to set
up OPIE authentication for a user. OPIE is enabled by default on
FreeBSD through PAM.
II. Problem Description
The opiepasswd(1) program uses getlogin(2) to identify the user
calling opiepasswd(1). In some circumstances getlogin(2) will return
"root" even when running as an unprivileged user. This causes
opiepasswd(1) to allow an unpriviled user to configure OPIE
authentication for the root user.
III. Impact
In certain cases an attacker able to run commands as a non privileged
users which have not explicitly logged in, for example CGI scripts run
by a web server, is able to configure OPIE access for the root user.
If the attacker is able to authenticate as root using OPIE
authentication, for example if "PermitRootLogin" is set to "yes" in
sshd_config or the attacker has access to a local user in the "wheel"
group, the attacker can gain root privileges.
IV. Workaround
Disable OPIE authentication in PAM:
# sed -i "" -e /opie/s/^/#/ /etc/pam.d/*
or
Remove the setuid bit from opiepasswd:
# chflags noschg /usr/bin/opiepasswd
# chmod 555 /usr/bin/opiepasswd
# chflags schg /usr/bin/opiepasswd
V. Solution
Perform one of the following:
1) Upgrade your vulnerable system to 4-STABLE, 5-STABLE, or 6-STABLE,
or to the RELENG_6_0, RELENG_5_4, RELENG_5_3, RELENG_4_11, or
RELENG_4_10 security branch dated after the correction date.
2) To patch your present system:
The following patches have been verified to apply to FreeBSD 4.10,
4.11, 5.3, 5.4, and 6.0 systems.
a) Download the relevant patch from the location below, and verify the
detached PGP signature using your PGP utility.
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-06:12/opie.patch
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-06:12/opie.patch.asc
b) Execute the following commands as root:
# cd /usr/src
# patch < /path/to/patch
# cd /usr/src/usr.bin/opiepasswd
# make obj && make depend && make && make install
VI. Correction details
The following list contains the revision numbers of each file that was
corrected in FreeBSD.
Branch Revision
Path
- -------------------------------------------------------------------------
RELENG_4
src/contrib/opie/opiepasswd.c 1.1.1.2.6.4
RELENG_4_11
src/UPDATING 1.73.2.91.2.17
src/sys/conf/newvers.sh 1.44.2.39.2.20
src/contrib/opie/opiepasswd.c 1.1.1.2.6.3.10.1
RELENG_4_10
src/UPDATING 1.73.2.90.2.23
src/sys/conf/newvers.sh 1.33.2.34.2.24
src/contrib/opie/opiepasswd.c 1.1.1.2.6.3.8.1
RELENG_5
src/contrib/opie/opiepasswd.c 1.3.8.1
RELENG_5_4
src/UPDATING 1.342.2.24.2.22
src/sys/conf/newvers.sh 1.62.2.18.2.18
src/contrib/opie/opiepasswd.c 1.3.12.1
RELENG_5_3
src/UPDATING 1.342.2.13.2.31
src/sys/conf/newvers.sh 1.62.2.15.2.33
src/contrib/opie/opiepasswd.c 1.3.10.1
RELENG_6
src/contrib/opie/opiepasswd.c 1.3.14.1
RELENG_6_0
src/UPDATING 1.416.2.3.2.11
src/sys/conf/newvers.sh 1.69.2.8.2.7
src/contrib/opie/opiepasswd.c 1.3.16.1
- -------------------------------------------------------------------------
VII. References
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-1283
The latest revision of this advisory is available at
ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-06:12.opie.asc
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.2 (FreeBSD)
iD8DBQFEIXZNFdaIBMps37IRAoChAJ9ZFa+7jKF11vpUOKxmh8FqcG3EXgCfYOqj
/M5ncIaa4gs6P9wihbZ1vZc=
=fccv
-----END PGP SIGNATURE-----