[LWN Logo]
[Timeline]
Date:         Wed, 7 Feb 2001 11:34:55 -0800
From: FreeBSD Security Advisories <security-advisories@FreeBSD.org>
Subject:      FreeBSD Security Advisory: FreeBSD-SA-01:11.inetd [REVISED]
To: BUGTRAQ@SECURITYFOCUS.COM

-----BEGIN PGP SIGNED MESSAGE-----

=============================================================================
FreeBSD-SA-01:11                                           Security Advisory
                                                                FreeBSD, Inc.

Topic:          inetd ident server allows remote users to partially
                read arbitrary wheel-accessible files [REVISED]

Category:       core
Module:         inetd
Announced:      2001-01-29
Revised:        2001-02-07
Credits:        dynamo <dynamo@ime.net>
Affects:        FreeBSD 3.x (all releases)
                FreeBSD 4.x (all releases)
Corrected:      2000-11-25 (FreeBSD 4.2-STABLE)
                2001-01-26 (FreeBSD 3.5-STABLE)
FreeBSD only:   Yes

0.   Revision History

v1.0  2001-01-29  Initial release
v1.1  2001-01-29  Correctly credit original problem reporter
v1.2  2001-02-07  Include more details about vulnerability, correct patch
                  instructions

I.   Background

The inetd ident server is an implementation of the RFC1413
identification server which returns the local username of the
user connecting to a remote service.

II.  Problem Description

During internal auditing, the internal ident server in inetd was found
to incorrectly set group privileges according to the user.  Due to
ident using root's group permissions, users may read the first 16
(excluding initial whitespace) bytes of wheel-accessible files.  This
is only true if the internal ident service is run using the '-f' flag.

An additional problem with the '-f' flag is that under certain
circumstances the child inetd process can be made to block,
potentially allowing a resource starvation condition on the server.

All released versions of FreeBSD prior to the correction date
including FreeBSD 3.5.1 and FreeBSD 4.2 are vulnerable.

III. Impact

Users can read the first 16 bytes of wheel-accessible files.

To determine which may be potentially read, execute the following
command as root:

# find / -group wheel \( -perm -40 -a \! -perm +4 \) -ls

The inetd internal ident server is not enabled by default.  If you
have not enabled the ident portion of inetd, you are not vulnerable.

IV.  Workaround

Disable the internal ident server, if enabled: comment out all lines
beginning with "auth" and which contain the '-f' option to the auth
service in /etc/inetd.conf, then restart inetd by sending it a SIGHUP:

# killall -HUP inetd

V.   Solution

One of the following:

Upgrade the vulnerable FreeBSD system to 3.5-STABLE or 4.2-STABLE
after the correction date.

To patch your present system: download the relevant patch from the
below location, and execute the following commands as root:

[FreeBSD 4.2 base system]

# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-01:11/inetd-4.2.patch
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-01:11/inetd-4.2.patch.asc

Verify the detached PGP signature using your PGP utility.

# cd /usr/src/
# patch -p < /path/to/patch
# cd /usr/src/usr.sbin/inetd
# make depend && make all install
# killall -HUP inetd

[FreeBSD 3.5.1 base system]

# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-01:11/inetd-3.5.1.patch
# fetch ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/patches/SA-01:11/inetd-3.5.1.patch.asc

Verify the detached PGP signature using your PGP utility.

# cd /usr/src/
# patch -p < /path/to/patch
# cd /usr/src/usr.sbin/inetd
# make depend && make all install
# killall -HUP inetd
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.4 (FreeBSD)
Comment: For info see http://www.gnupg.org

iQCVAwUBOoGjQFUuHi5z0oilAQHp+wP6Ai0vulXi0pMas+T6NhSd0VCyB+veEqKS
LqPvJG0Tb4j23qtBvNN9A6sHGVNopibFaj4nS06ztsCY7OX90uZPb1dRFkizIk5S
5BjQ6w4/ykvex5kTBm+O6rN2gtBk94h4ZzS3eqnjX9wkv+vjFdP83Z3vUKoCbI+x
2ZRgAJOrGyo=
=+57x
-----END PGP SIGNATURE-----